HTTP参数污染(HPP)
漏洞简述:
攻击者在请求中注入了额外的参数,同时目标网站信任了这些参数并且导致了非预期的结果
漏洞危险性:
危险性可高可低,具体来说看可污染参数重要与否,不过多数的时候属于低危
漏洞用处:
此漏洞我个人认为最重要的用处时绕过认证,比如最简单的越权漏洞我们可以通过修改其uid来越权,而对这个漏洞的最常用的检测就是创建另一个参数包含这个uid然后加密用来验证是否是这个参数
我们要是知道加密方式还好,可以自己推导出这个参数修改就可以,但是多数我们是很难推测的,但是如果存在这个漏洞,比如有的网站会检测uid和checkid这两个参数吧,如果我们在后面或者前面加上&uid=
也就是传入两个参数,有些网站无法很好的处理两个参数,会出现验证的时候验证的是前一个或者后一个参数,但是到了接收参数的时候采用的是另一个参数,这就会绕过检测产生越权,同理如果waf检测的
是第一个参数,网站监测的覆盖后的参数也就是第二个参数,那么我们也可以用这个漏洞绕过waf制造sql或者xxs等
漏洞例子:
就展示一个常见例子
http://xxx/horse.php?id=7 union select 1,2,3,current_user
如果网站有waf会轻易检测出来,如果说这个waf是检测的第一个参数,而网站会接收最后一个参数,那么我们改成:
http://xxx/horse.php?id=0&id=7 union select 1,2,3,current_user (&就是&的html转义字符)
漏洞发现:
就直接修改参数不成发现有验证等可以在左右加上同名参数修改看看
漏洞修改:
1.对用户输入数据的参数的格式进行验证。
2.在WAF或其他网关设备(比如IPS)在检查URL时,对同一个参数被多次赋值的情况进行特殊处理。
3.在代码层面,编写WEB程序时,要通过合理的$_GET方法获取URL中的参数值,而尝试获取web服务器返回给程序的其他值时要慎重处理。