现象:
安全扫描软件报告截图:
原理:
HTTP Post慢速DoS攻击第一次在技术社区被正式披露是2012年的OWASP大会上(https://owasp.org/www-pdf-archive/Layer_7_DDOS.pdf),由Wong Onn Chee 和 Tom Brennan共同演示了使用这一技术攻击的威力,Slow HTTP Denial of Service Attack 中文叫作缓慢的HTTP攻击漏洞,服务器在接收到请求时,彻底接收之后才会处理请求,若是攻击者发送的比较缓慢或者发送的不完整,服务器会保留其链接,占用资源池,若是请求数量较多,就会造成 DDOS 攻击。利用的HTTP POST的时候,指定一个非常大的content-length,然后以很低的速度发包,比如10-100s发一个字节,hold住这个连接不断开。这样当客户端连接多了后,占用住了webserver的所有可用连接,从而导致DDOS。
慢速攻击类型分三种
代码语言:javascript复制- Slow Headers Attack (也称为 Slowloris 攻击)本次试验使用该种方式
- Slow Message Body Attack(也称为慢帖子攻击)
- Slow Read (称为慢读)
原理验证:
慢速攻击验证工具 GitHub - shekyan/slowhttptest: Application Layer DoS attack simulator ,该软件对gcc版本要求比较严格单独使用安装依赖比较繁琐,建议使用docker运行。
代码语言:javascript复制#拉取官方最新版本
docker pull shekyan/slowhttptest:latest
#启动测试
docker run -i -t shekyan/slowhttptest -c 400 -H -i 10 -r 200 -t GET -u https://10.0.12.6:9443/ -x 24 -p 3 -l 200
#重要参数说明 -c 400 -H -i 10 -r 200 -t GET -u https://10.0.12.6:9443/ -x 24 -p 3 -l 200
-u 要验证的地址,https://10.0.12.6:9443/ 如果在本机验证,因为是docker环境动不要使用localhost,请使用主机的ip地址
-c 400:总连接数
-H: slowloris模式
-i 10:发送数据间的间隔10s
-r 200: 200个连接每秒-t GET:使用GET请求-u url
-x 24:发送的最大数据长度24
-p 3∶等待3秒来确定DoS攻击是否成功
-l 200:测试持续时间
测试结束后 connected数量较多,closed数量很少或为0,说明之前建立的400个慢速攻击测试连接没有被关闭,存在漏洞。
代码语言:javascript复制1. 测试发起的连接较少,不能以“service available”参数作为依据。
2. 若结果为“Exit status: No open connections left”,则不存在漏洞
漏洞的两种原因:
- tomcat某些版本的bug
详情参考这里http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-11996 摘抄了一下主要内容
代码语言:javascript复制A specially crafted sequence of HTTP/2 requests sent to Apache Tomcat 10.0.0-M1 to 10.0.0-M5,
9.0.0.M1 to 9.0.35 and 8.5.0 to 8.5.55 could trigger high CPU usage for several seconds.
If a sufficient number of such requests were made on concurrent HTTP/2 connections, the server
could become unresponsive.
总结: tomcat某些版本存在该bug,请按照官网说明升级tomcat版本即可。
- tomcat参数配置问题。
如果普通tomcat找到根目录下/conf/server.xml,将所有connector节点都加上 connectionTimeout="8000"
代码语言:javascript复制<Connector port="8009" connectionTimeout="8000"/>
如果是springboot项目则增加如下配置
代码语言:javascript复制server:
tomcat:
connection-timeout: 8000
复测通过。
腾云先锋(TDP,Tencent Cloud Developer Pioneer)是腾讯云 GTS 官方组建并运营的技术开发者群体。这里有最专业的开发者&客户,能与产品人员亲密接触,专有的问题&需求反馈渠道,有一群志同道合的兄弟姐妹。来加入属于我们开发者的社群吧 。