也说说Http Parameter Pollution
国外那份文档出了很长时间了,也有人分析过了,我认为完全属性YY,只不过是一种特性罢了。只说一下PHP的:
比如这个URL:http://127.0.0.1/hpp.php?in=1&in=2&in=3&in=4&in=5&in=6&in=7
PHP会接收最后一参数调用。
如果源代码是这样的话:
<?PHP<br /> $var = $_GET["in"];<br /> echo htmlspecialchars($var);<br />?>
或者:
$id = $_GET["id"];<br />$query = "select * from xsstest where id=".intval($id);
不管你是参数覆盖还是参数合并,或者取第一个参数,也或者取第二个参数,还是怎么着, htmlentities、htmlspecialchars 、intval 、mysql_escape_string 等等,他终会去处理的,又不是说PHP函数只处理第一参数,其他同名的参数传递过来就不处理,如果是这样我认为才是漏洞。流程应该是这样的:浏览器参数–》根据 PHP、asp等各种程序去选择参数值 –》代码处理。
如上URL,我们如果把他当成漏洞去攻击的,其实我们测试其后的同名参数,和我们正常应用是一样的。完全是取参特性而已。不管是XSS,sql,都会处理的。还是那句话:又不是说程序函数只处理第一参数,其他同名的参数传递过来就不处理,如果是这样我认为才是漏洞。
此文随便说说,难免有错。
转载请注明:woyigui's blog [http://www.woyigui.cn/]
本文标题:也说说Http Parameter Pollution
本文地址:http://www.woyigui.cn/2009/06/04/Http-Parameter-Pollution/
分析得还可以,如果对这类YY概念一知半解,然后无视PHP的超级全局变量的这种基础特性,我想换了谁都会很无语。
不过Http Parameter Pollution逃避IDS之类确实是不错的思路。
[回复]
woyigui 回复:
六月 5th, 2009 at 上午 1:50
呵呵,逃避IDS这个问题,也是一种方法,也就是逃避关键字法了,比如:asp?id=1 an%d 1=(selec%t * form admin) 一样可以突破了。
[回复]
呃……我还是觉得这个文章分析的不是HPP。HPP的本质都不是放在程序层面的,这篇文章里的PHP例子和作者的例子展现的都是在HPP之后的行为(CSRF,注入),HPP要是有搞头就必须结合程序的漏洞,所以HPP和程序特性是要分开看的,最后说一句大实话:现在的IDS虽然不是万能的,但是也绝对不像楼主说的那么简单,还关键字呢……呵呵
btw
$query = "select * from xsstest where id=".intval($id);
这代码写的有问题……
[回复]
woyigui 回复:
六月 5th, 2009 at 上午 3:53
IDS确实不能就关键字这么简单,我只是提一下。。。代码只是例子。您说的那个应用分层思维很好。
[回复]
结合 存在风险 不结合 纯YY 哈哈
[回复]
恩 XY7这个说法我不反对,确实是结合其他如XSS、CSRF和SQL注射之类才会出现安全问题。
但是本质还是没有太多的区别,仅仅是绕过一些逻辑上面的防护手段。
[回复]
浏览器参数–》根据 PHP、asp等各种程序去选择参数值 -?有点不对吧?我工具看过提交,都提交了!!估计要么是服务器选择,要么是语言特性选项!!

[回复]