📒博客主页:开心星人的博客主页
🔥系列专栏:Try to Hack
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
📆首发时间:🌴2022年7月14日🌴
🍭作者水平很有限,如果发现错误,还望告知,感谢!
HTTP参数污染,简称HPP。当HTTP传参,?par1=val1&par1=val2
,不同脚本的语言和环境,其par1取值是不同的。
这样问题就出现了,如:某个WAF防火墙模板定义数据中不允许出现select关键字,WAF取值验证时可能会选择第一项参数值,而脚本取值与WAF则不同,这样就有可能绕过WAF的数据验证。
请求如下:
PHP:News.php?id=1&id=select username,password from admin--
WAF取ID值为1,而PHP取ID值为select username,password from admin--
asp.net: news.aspx?id=1;&id=s&id=e&id=l&id=e&id=c&id=t
而asp.net将会把多个相同参数项的值连接在一起,这样使用HTTP参数污染就极有可能绕过某些WAF防火墙。
漏洞修复:
1、设备层面,让WAF或其他网关设备(比如IPS)在检查URL时,对同一个参数被多次赋值的情况进行特殊处理。由于HTTP协议允许相同参数在URL中多次出现,因此这种特殊处理需要注意避免误杀的情况;
2、代码层面,编写WEB程序时,要通过合理的$_GET方法获取URL中的参数值,而尝试获取 Web服务器返回给程序的其他值时要慎重处理,结合其他漏洞的产生进行组合排查。