http参数污染即HPP(HTTP Parameter Pollution),是一种注入型漏洞,攻击者通过 在HTTP请求中插入特定的参数来发起攻击。如果web应用中存在这样的漏洞可以被攻击者利用来进行客户端或服务器端的攻击。
在sql注入的应用则是可以达到绕过sqlwaf的目的。
在跟服务器交互的过程中,http允许get或者post多次传同一个参数,造成覆盖从而绕过waf的效果。也就是http协议允许同样的名称的参数出现多次
但是不同服务器的处理方式会不一样。
必应:
对于同样的参数,必应会处理后一个参数
但是对于谷歌,会两个参数一起处理。
一些常见的web服务器对同样名称的参数出现多次的处理方式:
Web服务器 | 参数获取函数 | 获取到的参数 |
---|---|---|
PHP/Apache | $_GET("par") | Last |
JSP/Tomcat | Request.getParameter("par") | First |
Perl(CGI)/Apache | Param("par") | First |
Python/Apache | getvalue("par") | All(list) |
ASP/IIS | Request.QueryString("par") | ALL(comma-delimited string) |
如果waf会将union给过滤掉,那么我们可以利用HHP绕过
如上传的参数为在特定情况下为bbs=u&bbs=n&bbs=i&bbs=o&bbs=n&bbs=select 1,user(),3
如果服务器端是将获取到的参数组合的话,就可以达到绕过的目的。
组合起来就是union select 1,user(),3
暂不详细介绍