DDOS

通过构造Hash冲突实现各种语言的拒绝服务攻击

上周的时候Dmitry突然在5.4发布在即的时候, 引入了一个新的配置项: Added max_input_vars directive to prevent attacks based on hash collisions 这个预防的攻击, 就是”通过调用Hash冲突实现各种语言的拒绝服务攻击漏洞”(multiple implementations denial-of-service via hash algorithm collision). 攻击的原理很简单, 目前很多语言, 使用hash来存储k-v数据, 包括常用的来自用户的POST数据, 攻击者可以通过构造请求头, 并伴随POST大量的特殊的”k”值(

  • Leo Chen
    Leo Chen
2 min read
DDOS

PHP HashDOS 实现

你知道不知道, 插入65536个经过构造的键值的元素到PHP数组, 会需要耗时30秒以上? 而一般的这个过程仅仅需要0.1秒.. 请看如下的例子: 上面的例子, 在我的机器上的执行结果如下: 插入 65536 个恶意的元素需要 43.1438360214 秒 插入 65536 个普通元素需要 0.0210378170013 秒 经过特殊构造的键值, 使得PHP每一次插入都会造成Hash冲突, 从而使得PHP中array的底层Hash表退化成链表: 这样在每次插入的时候PHP都需要遍历一遍这个链表, 大家可以想象, 第一次插入, 需要遍历0个元素, 第二次是1个, 第三次是3个, 第65536个是65535个, 那么总共就需要65534*65535/2=

  • Leo Chen
    Leo Chen
2 min read
DDOS

hashDos-哈希表多碰撞实现拒绝服务及解决方案

起因: Wed, 28 Dec 2011 22:28:16 GMT apache tomcat公布了一个安全漏洞。 http://mail-archives.apache.org/mod_mbox/www-announce/201112.mbox/<4EFB9800.5010106@apache.org> 漏洞原理: 依靠相应语言的hashtable/hashmap实现过程(request多为此结构),当不同的key存入时如果hash值相等则以链表方式连接在前面。此漏洞利用碰撞相同的hash值得到一个长链表,重新get时,

  • Leo Chen
    Leo Chen
1 min read