网络安全 频道

代码的奇幻漂流 网康Web攻防之SQL注入

  自从进入了代码的世界,小康患了“一写文章就头疼”的病,曾经的吟花赏月,信手拈来早已不再,女朋友也说我越来越稳(diao)重(si)了。

  但乌云平台近日发布了2014年10大安全风险,治好了我的病,小康我将会拿起手中的笔(键盘…)从TOP10中挑选几种攻击与大家一道,来看看代码的奇幻漂流。

  不知道有多少人看懂了少年派,其实代码的奇幻漂流,也是一场残酷的战争。

  少年派的小船上共有五种动物,本期小康就说说鬣狗——SQL注入(本人非南派三叔,请各位看官不要特征匹配,切勿脑洞大开)。SQL注入攻击对任何一个以数据库作为驱动的站点来说都是一个严重威胁。这种背后攻击的方法,简单易学,能造成大范围的损害,危及系统安全。大家所熟知的缓冲区溢出攻击,攻击者必须首先能绕过站点的防火墙;而对于SQL注入攻击,由于防火墙为了使用户能访问网络应用程序,必须允许从Internet到Web服务器的正向连接,因此一旦网络应用程序有注入漏洞,攻击者就可以直接访问数据库进而获得数据库所在的服务器的访问权,因此在某些情况下,鬣狗的威胁还是极大的。

  文章的开头,小康还是要提醒大家,切勿对国内各网站随意进行扫描、攻击。

  奇幻漂流第一日:注入攻击的本质

  (原著中“派”共漂流了227天,当然大家不要注意这些细节了~)

  先捞干货:注入攻击的本质就是,把用户输入的数值作为代码执行。换一个说法:很多的动态网页都会从网页使用者的请求中得到某些参数(例如用户名、密码),然后将其“嵌入”要执行的代码,发送到Web数据库。而攻击就是从这“嵌入”数据的代码上入手。

  奇幻漂流第二日:注入思路

  了解了鬣狗的本质,我们来分析下其攻击的过程。先上一张图:

代码的奇幻漂流 网康Web攻防之SQL注入
▲SQL注入流程图

  1、鬣狗攻击前会先寻找对方的弱点,同样在注入之前,首要是先扫描要注入的网站有哪些漏洞。这时就要利用扫描器,扫描器的工作原理是跟踪站点上所有的链接,然后自动地对每一个页面进行一系列攻击(其中就包括,对所有能输入数据的地方,尝试所有的输入组合),最后将发现的漏洞呈现出来。

代码的奇幻漂流 网康Web攻防之SQL注入
▲扫描器工作界面

  2、实施攻击。鬣狗发现了猎物弱点,就要开始攻击了。对于简单的猎物,鬣狗一扑就够了。对于简单的命令注入,用浏览器就够了…但对于不能直接在浏览器上进行的操作,则需要使用抓包工具,设置代理,就可以对要发送给服务器的请求进行修改。

  3、对于难啃的猎物,当然还有专业化、自动化的攻击工具。本文并不使用,感兴趣的可以自己去研究一下。

  4、研究动物的攻击,当然不能让它随便咬。本文中将会使用WebGoat进行测试。WebGoat 是由著名的 OWASP 研制出的用于进行web漏洞实验的应用平台。利用此平台展示,省去了扫描的过程。

代码的奇幻漂流 网康Web攻防之SQL注入
▲Webgoat界面

  奇幻漂流第三日:命令注入

  鬣狗最直接的攻击技能——直接冲上去。命令注入也是SQL注入中比较简单的一种。利用抓包工具在提交的命令中添加或修改命令,就可以访问其他的界面。

代码的奇幻漂流 网康Web攻防之SQL注入
▲通过抓包工具抓包后进行修改

代码的奇幻漂流 网康Web攻防之SQL注入
▲成功注入

  奇幻漂流第四日:数字、字符SQL注入

  鬣狗二级攻击技能(怎么有点LOL风了)。小康马上要说的就是鼎鼎大名、逢SQL注入必提的两种注入——数字SQL注入以及字符SQL注入。换成大家耳熟能详的说法就是:“ or 1=1”和“’ or‘a’=’a”。小康来举个例子说明一下这种注入的原理。

  看下面这个语句:

  SELECT * FROM Users WHERE Username='$username' AND Password='$password' (我是正常的语句,我很无辜啊-.-#)

  你很无辜?那我提交以下用户名、密码呐?

  $username=1' or'1'='1
  $password=1' or'1'='1

  整个SQL查询语句变成:

  SELECT * FROM Users WHERE Username='1' OR '1'='1' AND Password='1'OR '1'='1' (我怎么变成恒等式了!)

  奇幻漂流第五日:SQL盲注

  鬣狗三级攻击技能,本技能在实际捕猎中应用非常广泛。在盲注中,攻击者根据其返回页面的不同来判断信息(可能是页面内容的不同,也可以是响应时间不同)。

  小康在此只介绍盲注的一种方式:在复合SQL语句中加入关键字“AND”和“OR”进行多个测试。创建一个SQL语句,用来做一个真/假的测试,然后选择目标元素的第一个字符,利用>和<缩小查询范围。纯文字的东西毕竟不好理解,还是来一起看演示 :p

  我们来通过盲注来得到用户名。

  1、判断userid为15613的first_name第一个字符是不是小与M(ascii77)

代码的奇幻漂流 网康Web攻防之SQL注入

  返回“Account number is valid”则为真,返回“Invalid account number”则为否。然后继续测试…

  2、判断第一个字符是不是J(ascii 74),返回为真。(结果我早已经夜观天象算出来了~)

  3、第二个字符是不是o(ascii 111),返回为真,这样我们就知道了前两个字符Jo

  虽说革命尚未成功,同志仍需努力,但这样试毕竟不是办法。鬣狗有时会整群的进行围猎,在SQL注入方面,将注入语句整合并自动化攻击的工具也很多。

  4、这样经过艰苦卓绝的工作,我们得到了用户名“Joesph”。

  旅途驿站:如何防范SQL注入

  明白了鬣狗的攻击原理、攻击方式,要做的就是进行防护了。防范SQL注入,有两个手段,一种是手工防御,另一种是外加防御。

  《白帽子讲Web安全》中说到,从根本上解决SQL注入,就要遵循“数据与代码分离原则”,尽管已经有很多安全开发手册,但目前存在SQL注入漏洞的网站还是数目惊人。不恰当的比喻一下,就是要让鬣狗与食肉动物这个标签分离(无肉不欢啊)。

  外加防御的方式就是配合其他设施(硬件/软件)对SQL注入的“根源”进行过滤。类似于把鬣狗关起来。无论是硬件还是软件他们的原理都是一样的,对POST的数据进行解码,一直到应用层,对应用层的数据进行关键字过滤,特征库匹配,最后进行相关的操作。

  对于个人用户,需求不是很高的话,用免费的软件防护就可以。但对于网站的安全有较高要求用户,则需要部署专业的硬件防护设备,就像前文所说,这种上至应用层的攻击,普通防火墙很难有效的进行防护。

  网康Web应用防火墙,在没有SQL攻击时,给自己建设安全壁垒,防止鬣狗观察,或者显示无弱点(扫描可通过,但返回无漏洞)。在发现鬣狗攻击时,把鬣狗关住,直接阻断,限制此IP访问或者返回错误码。

  网康Web应用防火墙能够对所有匹配已知攻击特征的请求进行告警、阻断,实现被动防御;另一方面网康Web应用防火墙智能行为分析系统能够主动、实时学习Web服务器的各类参数和用户访问行为,智能分析,当发现异常请求、未知入侵攻击时,会第一时间对其进行告警、阻断,并生成报告,主动防御未知的Web攻击。

  网康Web应用防火墙只需两步即可将SQL注入攻击拒之门外:

代码的奇幻漂流 网康Web攻防之SQL注入
▲第一步:根据需求配置服务器

代码的奇幻漂流 网康Web攻防之SQL注入
▲第二步:开启主动防御,勾选相应功能

  代码的奇幻漂流,未完待续…

1
相关文章