SQL注入攻击研究

2017-02-14 09:26吴力挽苏曼玲
网络安全技术与应用 2017年1期
关键词:用户名木马攻击者

◆吴力挽 苏曼玲 杨 翀

(广州医科大学卫生职业技术学院 广东 510450)

SQL注入攻击研究

◆吴力挽 苏曼玲 杨 翀

(广州医科大学卫生职业技术学院 广东 510450)

针对web网站远程渗透问题,本文简要介绍了SQL注入形成原因、攻击原理和攻击过程,重点阐述了SQL注入在开发阶段、测试阶段、产品化阶段的防御措施,将这些措施应用于网站开发中,增强了网站防御效果,提高了网站安全性。

SQL注入; 远程渗透; 旁注; WebShell权限

0 前言

SQL注入攻击是现在web网站远程渗透最为有效的攻击方式,其注入技术的门槛低、攻击隐蔽、危害性大、杀毒软件无法查杀,一旦形成注入漏洞,网站WebShell权限被攻击者获取,攻击者上传网页木马,从而控制整站,达到攻击目的。针对SQ L注入攻击的特点和危害,本文简要介绍SQL注入攻击形成的原因、攻击原理、攻击流程,提出了一些SQL注入攻击防范措施。通过在网站上应用这些措施,增强了网站系统立体防御效果,提高了网站安全性。

1 SQL注入形成原因

SQL注入攻击是由于程序员在编写代码过程中,对SQL语句书写不规范,对一些特殊字符没有过滤,导致在客户端能通过全局变量POST和GET提交一些SQL语句,远程获取服务器敏感信息,包括用户名、密码、姓名、电话、家庭住址等。

2 SQL注入攻击原理

很多应用程序都利用数据库来存储信息。SQL命令是前端w eb和后端数据库之间的接口,很多站点都利用SQL语句查询数据库,从而返回用户需要的信息。由于开发程序员编程水平参差不齐,在编程时没有对一些客户端编写的字符进行合法性检查过滤,导致攻击者在URL连接、表单域输入自已编写的SQL命令,查询出数据库的敏感信息,形成SQL注入攻击。

3 SQL注入攻击流程

SQL注入攻击手段和方法多种多样,但总的说来,一般分为判断能否注入、寻找注入点、猜解用户名和密码、上传网页木马、入侵和破坏五个阶段。

(1)判断web网站能否注入。如果网站全部做成静态化,访问网页时连接变成为http://www.***.com/index.html,这种普通网页访问,由于没有数据库访问入口,所以是不存在注入漏洞的。当访问网页变成http://www.***.com/do?id=1,其中?id=1表示数据查询变量,这种语句需要在数据库端执行,因此通过单引号法判断程序是否存在注入漏洞。

(2)寻找web网站注入点。完成上一步的检测后,就要寻找可利用的注入漏洞,通过输入一些特殊语句,根据浏览器返回的信息,判断是否存在注入点和数据库类型等有用信息。在http://xxx.xxx.xxx/abcd.asp?p=XX 后面追加“and 1=1”,并访问该网址即http://xxx.xxx.xxx/abcd.asp?p=XX and 1=1 应该与访问原地址得到的结果相同。在http://xxx.xxx.xxx/abcd.asp?p=XX 后面追加“a nd 1=2”,并访问该网址即http://xxx.xxx.xxx/abcd.asp?p=XX and 1 =2应该与访问原地址得到的结果不同,并提示数据库错误。这就说明该入口存在注入漏洞。

(3)猜解用户名和密码。数据库中现有的表名都是有规律的。攻击者可以通过构建特殊SQL语句在数据库中依次查找表名、字段名、用户名和密码长度以及内容。这个猜测过程可以通过网上现有SQL注入工具快速实现,如:阿D注入、NBSI、WEB旁注综合检测、SQLMAP,这些工具可以快速破解网站用户密码。

(4)上传网页木马。在猜解到用户名和密码后,利用第三方扫描工具快速扫面网站,利用社会工程学反复尝试,从而获得网站管理员后台登录界面。登录到网站后台,利用上传功能上传网页木马。

(5)入侵和破坏。在成功上传了网页木马后,接下来就可以进行任意的破坏行为,包括删除网站程序文件、篡改网页、添加非法用户、修改泄漏用户信息,进一步入侵数据库从而获取到数据库的控制权限。

4 SQL注入防御措施

首先,在开发阶段树立防SQL注入安全意识,编写程序时,一定要加强对危险字符的严格过滤。最常用做法是单独编写一个防SQL注入的通用程序,通过Include方式放到数据库连接文件中,这样可以在每个页面进行加载。该程序是利用正则表达式匹配策略,逐一检测判断用户输入字符的合法性,其正则判断规则'|(and|or).+?(〉|〈|=|in|like)|/*.+?*/|〈s*script|EXEC|U NION.+?SELECT|UPDATE.+?SET|INSERTs+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNC ATE)s+(TABLE|DATABASE)。调用正则函数编写如下:

其次,在测试阶段采用两种方式对web安全加强检测,一是采用源代码相互审查方式,从编程者角度审视代码是否存在漏洞;二是采用第三方专业的工具进行漏洞检测,如:sqlmap工具,这样可以不断提高代码质量,杜绝各种漏洞。

再次,在产品化阶段通过部署第三方硬件设备加强过滤。本文采用蓝盾web应用防火墙,通过串接式部署在服务器DMZ区,在web防火墙管理系统界面输入过滤端口,这样所有流经服务器流量均要经过web防火墙深度入侵检测,判断是否为SQL注入恶意流量,一旦确认就进行阻断并记录到攻击日志。同时不定期升级web防火墙的安全规则,不断增强其防御效果。

最后,在前端对网站所有页面做静态化处理,通过模板生成静态页的方式,将网页内容存储到服务器本地硬盘,用户访问网站时浏览的是服务器硬盘数据,没有访问数据库,从而杜绝SQ L注入攻击。在后端,所有的数据表操作都采用参数化查询方式,利用存储过程进行参数化传递,既能加快编译速度,又能防范恶意SQL注入。

5 总结与展望

本文从SQL注入形成原因、攻击原理、攻击过程入手,详细阐述了在开发阶段、测试阶段和产品化阶段SQL注入防御措施。在后续的工作中,还可以在IIS中设置为不返回服务器出错信息,对IIS中一些上传目录将其执行权限设置为最低。另外,对数据库中敏感字符进行复杂MD5加密处理,对密码不定期更换,通过以上措施,SQL注入才能防患于未然。

[1]乐德广,李鑫,龚声蓉,郑力新.新型二阶SQL注入技术研究[J].通信学报,2015.

[2]田伟,许静,杨巨峰等.模型驱动的Web应用SQL注入渗透测试[J].高技术通讯,2012.

[3]田玉杰,赵泽茂,张海川等.二阶SQL注入攻击防御模型[J].信息网络安全,2014.

[4]王文明,李海炜.SQL服务器注入攻击的主动防御技术研究[J].计算机科学,2012.

[5]王溢,李舟军,郭涛等.防御代码注入式攻击的字面值污染方法[J].计算机研究与发展,2012.

猜你喜欢
用户名木马攻击者
《护士进修杂志》投稿程序
机动能力受限的目标-攻击-防御定性微分对策
小木马
《护士进修杂志》投稿程序
骑木马
《护士进修杂志》投稿程序
小木马
正面迎接批判
旋转木马
机智的快递员