这是一个很神奇的漏洞

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

最新文章

  1. 自己解决虚拟机Ubuntu开机黑屏
  2. js快捷输入日期
  3. Cassandra数据类型:
  4. python property
  5. PS网页设计教程——30个优秀的PS网页设计教程的中文翻译教程
  6. PHP核心技术与最佳实践--笔记
  7. Java——匿名内部类
  8. linux Shell的使用
  9. rhel及相关linux系统版本知识
  10. Android 管理Activity中的fragments
  11. codeforce #339(div2)C Peter and Snow Blower
  12. Codeforces 549C The Game Of Parity(博弈)
  13. FineUI开发实践-目录
  14. 4、Hibenrate中HQL的10中查询方式
  15. 【Alpha】咸鱼冲刺日记第一天-黄紫仪
  16. HBase RegionServer Splitting 流程
  17. windows服务器的误解
  18. Comet OJ - Contest #2 简要题解
  19. Android7.0对dlopen的改变——读取私有.so结果变化
  20. shell 命令 mkdir -p

热门文章

  1. Confluence 6 Oracle 创建数据库用户
  2. BIgnum类的程序提交
  3. hishlib 算法加密
  4. Python计算器实操
  5. cf1084d 非常巧妙的树形dp
  6. 改变html结构可以实现优先加载
  7. jenkins+git+maven 增量部署思路以及相关脚本
  8. AI-URL注册器
  9. 饮冰三年-人工智能-linux-03 Linux文件管理(权限管理+归档+压缩)
  10. 20165323 2017-2018-2 《Java程序设计》课程总结