欢迎来到天天文库
浏览记录
ID:35515599
大小:241.45 KB
页数:7页
时间:2019-03-25
《waf的sql注入绕过手段和防御技术》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、WAF的SQL注入绕过手段和防御安华金和思成一.关于SQL注入SQL注入是一种常见的入侵WEB应用的手法。SQL注入是利用应用系统的编程漏洞和SQL语言的语法特征,改变原始的SQL语句执行逻辑而产生的。攻击者向Web应用发送精心构造的输入数据,这些输入中的一部分被解释成SQL指令,改变了原来的正常SQL执行逻辑,执行了攻击者发出的SQL命令,最终使攻击者获取Web应用的管理员权限或者下载了Web应用存到数据库中的敏感信息。二.SQL注入如何实现为了对本文进行更好的讲解,下面简单地对SQL注入的原理进行示例性说明。
2、如下图是某网站的登录界面。登陆界面中输入用户名:admin密码admin1234。在Web应用程序后台会把输入和程序混合变成SQL命令去访问数据库。最终Web应用发给后台数据的SQL命令是:Select*fromuserswhereusername='admin'andPassword='admin1234'(这个形式)这个SQL查询要求数据库检查“用户表”中的每一行,提取出每条username列为admin和Password列值为admin1234的记录。如果数据库中WHERE后的条件满足。应用程序将为该用户建
3、立一个通过验证的会话。(Web应用登陆成功)上面是正常登陆Web应用的过程。如果由于编程的不严谨,用户名或密码输入处存在SQL注入点,攻击者可以利用SQL注入绕过Web应用的登陆访问控制。例如攻击者在用户名处输入admin'--密码处可以输入任意值均可通过。-7-DBSEC©2016www.dbsec.cn因为,后台实际的SQL语句将演变成:select*fromuserswhereusername='admin'--'andpassword='123dq在SQLServer中“-”等于注释,由于加入了“—”上面
4、的语句等价于select*fromuserswhereusername='admin'也就是说只要有用户名为admin。攻击者就可以直接用admin登入到应用系统中。当然SQL注入的用法远不止这一种,本文不做详述。一.WAF如何防御SQL注入WAF简单说,就是解析HTTP请求,检验HTTP中参数是否存在攻击行为;若存在,则触发攻击行为。主要有两种主流的的方式绕阔WAF,一种是利用WAF可能存在的HTTP协议解析缺陷,另一种就是利用包装后的SQL命令,使WAF无法识别SQL注入。一般通过HTTP协议攻击的方式,有四
5、种绕过WAF入侵的手法:1.1断包绕过某些早期版本的WAF不具备把TCP断包组合成完整TCP包的能力。一旦攻击者发送的HTTP请求包是断包,WAF将无法正常处理不完整的HTTP请求包。如果这些请求包中含有SQL注入语句就可以直接绕过WAF,进入web应用组成SQL注入语句。1.2缓冲区溢出现在的WAF产品基本都具备了对HTTP协议中参数的解析能力。但是攻击者如果故意在参数中写入过长的占位内容+shellcode,这时如果WAF产品自身对参数检验不够严格的话,则有可能导致缓冲区溢出的发生。例如改变id=1的输入为i
6、d=1andselect-7-DBSEC©2016www.dbsec.cn0xAAAAAAAAAAA...(1000个以上)+shellcode的模式。攻击者可能会利用这种入侵手段,绕过WAF进而入侵到应用系统内部。1.1协议不兼容还有一种方式就是向WEB服务器发送畸形的,而非RFC2616标准的HTTP请求,这时WEB服务器可能出于兼容的目的,会尽可能解析畸形的HTTP请求,这种情况下如果WAF和WEB兼容的方式不一致则可能出现绕过现象。例如一个请求没有协议字段、没有HOST字段,apache默认会把HTTP协
7、议作为0.9版本处理,HOST默认使用apache自身的servername。WAF出于兼容的目的,这时候未必能和web服务器上的server采取相同的策略。由于不同版本的HTTP有语法差异,这种情况就有可能绕过WAF进入系统内部。1.2参数污染参数污染简单说就是同名参数写多个,WAF往往只检查第一个参数。但服务器具体用哪个参数,策略是不相同的。例如:xxx.php?id=0&id=7%20union%20select%201,2,3,current_user是个明显的SQL注入。WAF解析id=0这一看就是合法
8、的,但PHP解析得到的确是id=7unionselect.....却是个注入语句。不同的server有不同的解析方式,这个时候WAF很有可能被绕过。通过SQL命令包装的方式绕过WAF,是利用WAF在进行SQL命令的防御的核心技术正则匹配的缺陷。这种技术,一般通过4种匹配事变的方式进行方式::1、 识别SQL语句的关键保留字,如selectfrom,unionselect,
此文档下载收益归作者所有