-
-
[下载]PHP hash碰撞DOS攻击payload下载
-
发表于:
2012-1-17 19:40
4868
-
[下载]PHP hash碰撞DOS攻击payload下载
2011年年末,PHP, ASP.NET等各个web服务器都爆出hash碰撞造成的DOS攻击CVE-2011-4885。
具体原理性的东西参考这里,英文的:
http://stackoverflow.com/questions/8669946/application-vulnerability-due-to-non-random-hash-functions
这个是中文中描述的比较全面的文章:
http://www.cnblogs.com/xuanhun/archive/2012/01/01/2309571.html
原理弄懂了以后就知道,攻击的关键是找到hash值相同的key。事实上找hash相同的key是很容易的。hash值的取值范围是0到2^32。所以只要尝试2^32+1个key就必然能找到2个key的hash值是相同的(鸽笼原理)。
暴力的找hash碰撞的方法:使用1到254的字符构造长度为5的key。254约等于2^8,所以这种方法能构造出(2^8)^5个key。(2^8)^5远远大于2^32,可以轻易到hash相同的key。写个小程序在一分钟之内就能找到很多hash相同的key。
这些hash函数还有这样的特性:
如果hash(ab)=hash(ac),那么hash(ab123)=hash(ac123).
上面的结果明显成立,也就是说只要找到一对hash相同的key,就可以构造出任意多hash相同的key。
将得到的key URL编码成如同ab=&ac=&,%ce%ee=&%ce%ef=&这样的形式,然后post到web服务器上。PHP默认一次最大接受8M的POST数据。附件是适用于PHP的编码好的POST数据,可以直接读出用于测试或攻击。数据比较多,可以根据需要,要多少读多少。
这篇文章中说:
http://www.nruns.com/_downloads/advisory28122011.pdf
理论上POST数据中如果包含了8M的hash碰撞key,将消耗i7的CPU 4个小时的时间。
本文章只是技术讨论,除了实验以为请不要用于真正的攻击。
防范:
各个服务器都有相关的配置文件,在配置文件中可以限制POST数据的最大长度,一次POST的参数个数,CPU使用时间等等。
[ATTACH]Payload下载[/ATTACH]
[课程]Linux pwn 探索篇!