<返回更多

小白教你慢速攻击安全测试

2020-06-12    
加入收藏

前言

可能有些人是第一次听到这个慢速攻击,这个是什么东西,会给我们的服务造成什么样的伤害。今天就跟大家分享一下,希望大家可以得到一些启发,加固好我们的系统服务。

小白教你慢速攻击安全测试

 

慢速攻击

慢速攻击是利用HTTP现有合法机制,在建立了与HTTP服务器的连接后,尽量长时间保持该连接,不释放,达到对HTTP服务器的攻击。

比如攻击者对任何一个开放了HTTP访问的服务器HTTP服务器,先建立了一个连接,指定一个比较大的content-length,然后以非常低的速度发表,比如1-10s发一个字节,然后维持住这个连接不断开。如果客户端持续建立这样的连接,那么服务器上可用的连接将一点一点被占满,从而导致拒绝服务。

小白教你慢速攻击安全测试

 

慢速攻击种类

1.Slow body:攻击者发送一个HTTP POST请求,该请求的Content-Length头部值很大,使得Web服务器或代理认为客户端要发送很大的数据。服务器会保持连接准备接收数据,但攻击客户端每次只发送很少量的数据,使该连接一直保持存活,消耗服务器的连接和内存资源。

2.Slow headers:Web应用在处理HTTP请求之前都要先接收完所有的http头部,因为HTTP头部中包含了一些Web应用可能用到的重要的信息。攻击者利用这点,发起一个HTTP请求,一直不停的发送HTTP头部,消耗服务器的连接和内存资源。

3.Slow read:客户端与服务器建立连接并发送了一个HTTP请求,客户端发送完整的请求给服务器端,然后一直保持这个连接,以很低的速度读取Response,比如很长一段时间客户端不读取任何数据,通过发送Zero Window到服务器,让服务器误以为客户端很忙,直到连接快超时前才读取一个字节,以消耗服务器的连接和内存资源。

怎么慢速攻击

这里我跟大家介绍一个工具slowhttptest,并说明怎么安装使用。

$ git clone https://github.com/shekyan/slowhttptest
小白教你慢速攻击安全测试

 

这里安装到指定目录
/opt/testerzhang/mytool/safe,大家可自行安装指定的目录。

$  ./configure --prefix=/opt/testerzhang/mytool/safe
$  make
$  make install
$ cd /opt/testerzhang/mytool/safe
$ ./slowhttptest -h

可以看到有很多选项

小白教你慢速攻击安全测试

 

 -g      在测试完成后,以时间戳为名生成一个CVS和html文件的统计数据
 -H      SlowLoris模式
 -B      Slow POST模式
 -R      Range Header模式
 -X      Slow Read模式
 -c      number of connections 测试时建立的连接数
 -d      HTTP proxy host:port  为所有连接指定代理
 -e      HTTP proxy host:port  为探测连接指定代理
 -i      seconds 在slowrois和Slow POST模式中,指定发送数据间的间隔。
 -l      seconds 测试维持时间
 -n      seconds 在Slow Read模式下,指定每次操作的时间间隔。
 -o      file name 使用-g参数时,可以使用此参数指定输出文件名
 -p      seconds 指定等待时间来确认DoS攻击已经成功
 -r      connections per second 每秒连接个数
 -s      bytes 声明Content-Length header的值
 -t      HTTP verb 在请求时使用什么操作,默认GET
 -u      URL  指定目标url
 -v      level 日志等级(详细度)
 -w      bytes slow read模式中指定tcp窗口范围下限
 -x      bytes 在slowloris and Slow POST tests模式中,指定发送的最大数据长度
 -y      bytes slow read模式中指定tcp窗口范围上限
 -z      bytes 在每次的read()中,从buffer中读取数据量

这里我从官网下载了一个Tomcat服务,安装了一个JAVA工程,并启动了服务。

我们去访问
http://10.10.10.10:8100/test/loginDisplay这个登录页面,目前可以正常显示登录页面。

$ slowhttptest -c 1000 -B -g -o my_body_stats -i 110 -r 200 -s 8192 -t FAKEVERB -u http://10.10.10.10:8100/test/loginDisplay -x 10 -p 3

通过上面这个命令,我们再去访问
http://10.10.10.10:8100/test/loginDisplay这个登录页面,发现已经没有那么快响应了。

小白教你慢速攻击安全测试

 

这样长时间下去,你的系统服务已经慢得不能对外提供服务,影响正常用户的体验。

小白教你慢速攻击安全测试

 

慢速攻击怎么处理

这里列举两个常用的服务:

tomcat的connect保留的时间默认设置为20s,可以适当减少connect的时间,比如将connectTimeout修改为2秒。

小白教你慢速攻击安全测试

 

1、通过调整$request_method,配置服务器接受http包的操作限制;
2、在保证业务不受影响的前提下,调整client_max_body_size, client_body_buffer_size, client_header_buffer_size,large_client_header_buffersclient_body_timeout, client_header_timeout的值,必要时可以适当的增加;
3、对于会话或者相同的ip地址,可以使用HttpLimitReqModule and HttpLimitZoneModule参数去限制请求量或者并发连接数;
4、根据CPU和负载的大小,来配置worker_processes 和 worker_connections的值,公式是:max_clients = worker_processes * worker_connections。

由于本人非从事安全领域,以上的处理方式仅仅提供参考。

结束语

安全无小事,我们身处互联网下,保护好自己的系统服务,才是王道。

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>