声明
背景
漏洞扫描工具扫出“检测到目标主机可能存在缓慢的HTTP拒绝服务攻击”
检测到目标主机可能存在缓慢的HTTP拒绝服务攻击.png
Lighttpd 配置
参数配置
示意图
HTTP缓慢攻击
原理
HTTP 慢速攻击也叫 slow http attack,是一种 DoS 攻击的方式。由于 HTTP 请求底层使用 进行会话,因此如果中间件对会话超时时间设置不合理,并且HTTP在发送请求的时候采用慢速发 HTTP 请求,就会
。如果发送大量慢速的 HTTP 包就会导致拒绝服务攻击DoS
目的
消耗服务器的连接和内存资源。
如果客户端持续建立这样的连接,那么服务器上可用的连接将一点一点被占满,从而导致DoS(拒绝服务)。
分类
1. slow headers
Web应用在,Web 服务器再没接收到 2 个连续的
\r\n
时,会认为客户端没有发送完头部,而持续的等客户端发送数据。
攻击者利用这点,发起一个HTTP请求,一直不停的发送HTTP头部,消耗服务器的连接和内存资源。
2. slow body(Slow HTTP POST)
攻击者发送一个 HTTP POST 请求,将,使得 Web 服务器或代理认为客户端要发送很大的数据,服务器会保持连接准备接收数据。
但是在随后的数据发送中,(比如10-100s发一个字节),这样导致服务器端一直等待攻击者发送数据。
3. show read
客户端与服务器建立连接并发送了一个HTTP请求,客户端发送完整的请求给服务器端,然后一直保持这个连接,以。
如很长一段时间客户端不读取任何数据,通过发送Zero Window到服务器,让服务器误以为客户端很忙,直到连接快超时前才读取一个字节,以消耗服务器的连接和内存资源。
防御手段
可对每秒钟http并发连接数进行检查。
对web服务器的http头部传输的最大许可时间进行限制。
示例
- 工具 slowhttptest,具体安装步骤参考Slowhttptest安装步骤
- 测试
slowhttptest -c 400 -H -i 10 -r 200 -t GET -u 目标url -x 24 -p 3 -l 200
常用参数:
- -c 400: 总连接数
- -H: slowloris 模式,表示test type为Slow headers
- -B: 表示Slow body
- -X: 表示Slow read
- -i 10: 发送数据间的间隔10s
- -r 200: 200个连接每秒
- -t GET: 使用GET请求方式
- -u url: 目标url格式为具体的接口url
- -x 24: 发送的最大数据成都24
- -p 3: 等待3秒来确定Dos攻击是否成功
-
-l 200: 测试持续时间
测试结果-无此漏洞.png
测试结果为“Exit status: No open connections left",代表无此漏洞。
测试结束后connected数量较多,closed数量很少或0,说明之前建立的400个慢速攻击测试连接没有关闭,存在漏洞。
- 附上个类型攻击的结果
- slow headers
slowhttptest -c 400 -H -i 10 -r 200 -t GET -u 目标url -x 24 -p 3 -l 200
- slow body
slowhttptest -c 400 -B -i 10 -r 200 -s 20000 -t GET -u 目标url -x 24 -p 3 -l 200
- slow read
slowhttptest -c 400 -X -i 10 -r 200 -s 20000 -t GET -u 目标url -x 24 -p 3 -l 200