很久很久没有关注网络安全方面的信息了,偶然看到乌云被关了,于是看了下乌云的微博,看到了这个漏洞,本地测试了下无力巨大,找了个目标进行了测试可能数据量不够效果不明显。

攻击的原理很简单, 目前很多语言, 使用hash来存储k-v数据, 包括常用的来自用户的POST数据, 攻击者可以通过构造请求头, 并伴随POST大量的特殊的”k”值(根据每个语言的Hash算法不同而定制), 使得语言底层保存POST数据的Hash表因为”冲突”(碰撞)而退化成链表.

这样一来, 如果数据量足够大, 那么就可以使得语言在计算, 查找, 插入的时候, 造成大量的CPU占用, 从而实现拒绝服务攻击.

PHP数组的Hash冲突实例

攻击测试代码:http://paste.ubuntu.org.cn/111381