技术开发 频道

安全测试工程师必读:解析SQL注入攻击

  【IT168技术】随着互联网发展的逐步深入,以及移动互联网的到来,用户越来越离不开网络,然而网站的安全性已经成为了企业和用户不得不关注的热点问题。用户对网络安全性的认知也从千年虫以及熊猫烧香等病毒,转向了个人信息的安全。近一段时间,CSDN、天涯社区等国内重要的社区都因为用户信息的泄露遭受到了重大的损失,用户的个人信息都像一个个的裸体一样暴露在公众面前。紧接着又有众多的互联网公司让用户在登陆网站的时候更改密码,以确保信息的安全,更有甚者,新浪微博等社交网站都在以绑定用户手机的方式确保个人账户的安全性。

  第一职业网负责人表示,在这种网络安全备受争议的大环境之下,谁都不想成为下一个被攻击的对象,让自己辛辛苦苦积累的用户信息瞬间被暴露出来,伤害自己的用户,同时让企业蒙受损失。对于这些不幸的事件,我们确实应该惭愧,但是这同时又给了安全测试工程师更多的机会,而且薪资待遇也是水涨船高,转瞬间成了大家争相追捧的对象。

  于此同时,众多测试的培训机构也都将安全测试列为一个培训重点,亿诚测试也深刻体会到了安全测试的重要性,不仅开设了安全测试的课程,同时也专门开了一场针对SQl注入的安全测试公开课,让到场的测试工程师收益良多。4月29日,亿诚测试培训中心首次安全测试公开课正式落下帷幕,本次公开课是由亿诚测试培训中心资深讲师给大家分享的渗透测试攻击技术之SQL注入攻击。Jerry在讲课时深入浅出,深受到场的测试工程师的喜爱,课程内容主要包括SQL注入攻击的常用工具、SQL注入攻击的介绍、SQL注入攻击的原理、SQL注入攻击的过程以及如何做好SQL注入攻击的防御等五大方面,尽管从课程的深入程度上更专注于安全测试的普及,但是这些技术知识的普及能够很大程度上帮助广大的安全测试工程师学习和从事安全测试方面的具体工作。

  SQL注入工具主要分为SQL注入工具和扫描SQL注入漏洞工具,这些工具大家都可以在网上的一些资料中查到相关的用法和实际的作用。主要分类如下:

  一、SQL注入工具,主要包括Pangolin注入工具、Havij注入工具、旁注明小子注入工具、DSQLTools注入工具、NBSI注入工具、阿D注入工具

  二、扫描SQL注入漏洞工具,主要包括Acunetix Web Vulnerability Scanner 8、IBM Rational AppScan7.8、HP WebInspect

  SQL注入攻击原理

  对于SQL相信大家都比较熟悉,SQL(StructuredQuery Language)是一种用来和数据库交互的语言文本。

  SQL注入的攻击原理就是攻击者通过Web应用程序利用SQL语句或字符串将非法的数据插入到服务器端数据库中,获取数据库的管理用户权限,然后将数据库管理用户权限提升至操作系统管理用户权限,控制服务器操作系统,获取重要信息及机密文件。

  通常情况下,SQL注入漏洞攻击主要是通过借助于HDSI、NBSI和Domain等SQL注入漏洞扫描工具扫描出Web页面中存在的SQL注入漏洞,从而定位SQL注入点,通过执行非法的SQL语句或字符串达到入侵者想要的操作。

  SQL注入(Structured Query Language Injection)是从正常的WWW端口访问,而且表面看起来跟一般的Web页面没什么区别,所以目前市面的防火墙都不会对SQL注入发出警报,如果管理员没查看IIS日志的习惯,可能被入侵很长时间都不会发觉。

1.jpg

  SQL注入攻击是攻击者通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

  SQL注入攻击的流程图

2.jpg

  SQL注入攻击的几个阶段:

  一、扫描器先扫描Web服务器漏洞,了解网站整体安全状况。

  二、获取和验证SQL注入点

  一般来说,SQL注入一般存在于形如:HTTP://xxx.xxx.xxx/test.asp?id=XX等带有参数 的ASP动态网页中,有时一个动态网页中可能只有一个参数,有时可能有N个参数,有时是整型参数,有时是字符串型参数,不能一概而论。总之只要是带有参数的动态网页且此网页访问了数据库,那么就有可能存在SQL注入。如果ASP程序员没有安全意识,不进行必要的字符过滤,存在SQL注入的可能性就非常大。

  寻找SQL注入之前,先把IE菜单=>工具=>Internet选项=>高级=>显示友好 HTTP 错误信息前面的勾去掉。否则,不论服务器返回什么错误,IE都只显示为HTTP 500服务器错误,不能获得更多的提示信息。

  寻找SQL注入点的常想到的查找方法是在有参数传入的地方添加诸如“and 1=1”、“and 1=2”以及“’”等一些特殊字符,通过浏览器所返回的错误信息来判断是否存在SQL注入,如果返回错误,则表明程序未对输入的数据进行处理,绝大部分情况下都能进行注入。

  SQL注入防攻击

  在客户端和服务器端对输入值进行验证:使用客户端验证可以提高性能,但不够安全。所有来自Web浏览器的数据都能被修改为任意内容,因此,必须在服务器端进行适当的输入验证,才能避免过滤器被绕过。

  约束数据类型:Web程序不应该处理那些不符合基本类型、格式和长度要求的数据。

  对输入值进行归一化:SQL注入攻击代码可能经过字符集或各种进制的编码,因此在对它们进行验证检查前,必须将输入值进行归一化处理,否则编码后的数据会绕过过滤器,而在后续的逻辑中又被解码还原成恶意代码。

  对输入值进行过滤或者转换,尤其是' " @ ! = * . ; % ( ) -- 等符号。

  字符编码和输出验证:应该对HTML和SQL格式中使用的字符进行编码,以避免应用程序错误地解释和执行它们。

  为了能够充分让测试工程师了解测试的各方面技术课程,请直接登录第一职业网www.d1zhiye.com 以及亿诚测试官网 www.echengsoft.com .

0
相关文章