0x00 背景
隔壁家的漏扫扫出来的漏洞,通报下来要整改,也算是第一次重视类似漏洞。
拒绝服务攻击更多的是ddos这种类型听的多,当然经常见到tomcat、nginx一类的拒绝服务相关的漏洞。
简单测试了一下,发现这个漏洞针对web站点的攻击效果非常明显,测试工具跑起来之后访问站点,页面就无法刷新了。
0x01 漏洞原理
HTTP慢速攻击是利用HTTP合法机制,以极低的速度往服务器发送HTTP请求,尽量长时间保持连接,不释放,若是达到了Web Server对于并发连接数的上限,同时恶意占用的连接没有被释放,那么服务器端将无法接受新的请求,导致拒绝服务。
在http协议中,rn代表一行报文的结束也被称为空行(CRLF)而rnrn代表整个报文的结束。
简单来说,在Keep-Alive模式下,就是我们每次只发一行,每次发送之间的间隔时间很长,这迟迟未发送结束的HTTP包会占用服务端的资源,当达到服务端处理请求的上限时,这时候再用户对网站正常请求,服务端也处理不了了,导致了拒绝服务。
HTTP慢速攻击分为三类:
-
Slow headers
-
Slow body
-
Slow read
0x02 测试过程
一般使用工具slowhttptest工具,该工具有如下参数
测试模式:
-H slow header,slowloris默认采用此模式
-B slow body
-R 远程攻击又名Apache killer
-X slow read
报告选项:
-g 生成具有套接字状态更改的统计信息(默认关闭)
-o file_prefix 将统计信息输出保存在file.html和file.csv中(需要-g)
-v level 日志信息,详细级别0-4:致命,信息,错误,警告,调试
常规选项:
-c connections 连接目标连接数(50)
-i seconds 后续数据之间的间隔(以秒为单位)(10)
-l seconds 测试目标时间长度,以秒为单位(240)
-r rate 每秒连接数(50)
-s 如果需要,Content-Length标头的值(4096)
-t 请求中使用的动词,对于slow header和response,默认为GET;对于slow body,默认为POST
-u URL 目标的绝对URL(http://localhost/)
-x slowloris and Slow POST tests模式中,指定发送的最大数据长度
-f Content-Type标头的值(application/x-www-form-urlencoded)
-m 接受(Accept)标头的值(text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5)
探测/代理选项:
-d host:port 为所有连接指定代理
-e host:port 为探测连接指定代理
-p seconds 指定等待时间来确认DoS攻击已经成功
range attack特定选项:
-a 标头中的起始位置
-b 标头中的结束位置
slow read特定选项:
-k 在连接中重复相同请求的次数。如果服务器支持永久连接,则用于成倍增加响应大小。
-n 从recv缓冲区读取操作之间的时间间隔,以秒为单位(1)
-w slow read模式中指定tcp窗口范围下限
-y slow read模式中指定tcp窗口范围上限
-z 在每次的read中,从buffer中读取数据量
使用工具给出一些测试payload
Slow Header模式
slowhttptest -c 65500 -H -i 10 -r 200 -s 8192 -t SLOWHEADER -u http://vulurl.com
Slow Read模式
slowhttptest -c 65500 -X -r 1000 -w 10 -y 20 -t SLOWREAD -n 5 -z 32 -u http://vulurl.com
Slow Post模式
slowhttptest -c 65500 -B -i 10 -r 200 -s 8192 -t SLOWBODY -u http://vulurl.com
当服务出现如下状态,即站点无法提供正常服务。
原文始发于微信公众号(here404):HTTP慢速拒绝服务攻击
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论