zoukankan      html  css  js  c++  java
  • [ 高危 ] hash碰撞DOS漏洞

    这是一个很神奇的漏洞

    hotel.meituan.com订单页面,POST提交的是一串json数据。当把这串数据换成json碰撞数据 后,服务器原本 100毫秒可以响应的数据包,变成需要30秒才能响应完。

    由此,只需要一个页面,不停地发送hash碰撞数据包,即可造成DOS,使服务器CPU达到100%而504报错。

    评分:

    高危 RMB 600

    原理:

    json字符串解析过程中,经过hashtable函数,转换成hash。而如果每一个json元素经过hashtable函数计算得到的值都一样,就有一个哈希冲突的问题。有的hashtable函数使用链地址法,导致一堆hash冲突的json丢过去的时候,性能极度降低,龟速运行,造成DOS。

    通过反向推导不同语言的hashtable函数,可以计算hash碰撞数据。

    检测:

    扫描器在检测到POST数据为json形式的时候(GET有长度限制),将json数据替换成几种hash碰撞数据,一一尝试。如果响应时间与之前对比有大幅度提升,如几百毫秒变为几十秒,可能存在hash碰撞DOS漏洞。

    修复:

    过滤检测,但其实最好的是重写hashtable函数,也即发生冲突时的解决方法。

    这种漏洞实在是有趣,做了javascript的hash碰撞代码(本质上就是两句话:建一个str参数;json解析。)

    1. txt格式的代码,保存为html,本地打开即可测试。

    http://huim.me/ftpuploads/hashCollisions.txt

    2.已经保存为html的js代码,打开即食(注:消耗的是你的游览器资源,而不是我的博客的CPU,所以放心、大胆地打开,不用顾及我)。

    http://huim.me/ftpuploads/hashCollisions.html

    另外,附上一个有趣的东西

    谁点谁怀孕

    加强版

    [ 参考 ] 

    一种高级的DoS攻击-Hash碰撞攻击 - BY - it2048我是大雄

    Java Hash Collision之数据生产 - BY - it2048我是大雄

    -841

  • 相关阅读:
    交互式监控工具glances
    性能测试工具Locust
    CentOS 7 安装 PostgreSQL 教程
    Vue表单
    Vue事件处理
    Vue列表渲染
    Vue条件渲染
    Vue中class与style绑定
    GIT命令操作
    Git简介
  • 原文地址:https://www.cnblogs.com/huim/p/8313085.html
Copyright © 2011-2022 走看看