逻辑漏洞之慢速攻击解析

参考文章

本片文章仅供学习使用,切勿触犯法律!


概述


总结


一、漏洞介绍

HTTP慢速攻击也叫slow http attack,是一种DoS攻击的方式。


二、漏洞原理

HTTP请求底层使用TCP网络连接进行会话,因此如果中间件对会话超时时间设置不合理,并且HTTP在发送请求的时候采用慢速发HTTP请求,就会导致占用一个HTTP连接会话。如果发送大量慢速的HTTP包就会导致拒绝服务攻击DoS。


三、漏洞危害

影响客户体验。导致网站无法运行,中断企业正常运营。


四、利用前提


五、挖掘利用

1、Slow headers(也称slowloris)

1.描述

每个 HTTP 请求都是以空行结尾,即以两个 (\r\n)结 尾 。 若将空行去掉 ,即以 一个 (\r\n) 结尾,则服务器会一直等待直到超时。在等待过程中占用线程(连接数),服务器线程数量达到极限,则无法处理新的合法的 HTTP请求,达到DOS目的。
通常配置不太好的的服务器的并发连接池数并不多,当攻击者连续不间断的建立连接并占满server的连接池资源之后,server就不能为正常用户提供服务,达到DoS攻击效果

2.挖掘

暂无经验,直接用slowhttptest工具怼。

3.利用

使用工具:slowhttptest

slowhttptest -c 1000 -H -i 10 -r 200 -t GET -u https://yourtarget.com/index.html -x 24 -p 3

示例:
在kali配置slowhttptest
输入:http://192.168.56.1/pikachu-master/index.php
显示:

当service available:NO时,即表示,攻击成功
访问http://192.168.56.1/pikachu-master/index.php

查看统计信息

2、Slow body(也称Slow HTTP POST)

1.描述

其本质也是通过耗尽服务器的连接池来达到攻击目的,而且攻击过程和上面提到的Slowloris差不多
在Post攻击中http header头是完整发送的,但是这里会利用header头里面的content-length字段,正常情况下content-length的长度就是所要发送的数据长度,但是攻击者可以定制client发送的content-length,于是如果攻击者发送一个content-length特别大的值,那么server就会等待后续没有传完的body内容
此时攻击者会延迟发送后续的body甚至是不发送,但是server端依旧会在等待并为其保留连接池并持续等待后续信息直到连接超时

2.挖掘

暂无经验,直接用slowhttptest工具怼。

3.利用

使用工具:slowhttptest

slowhttptest -c 1000 -B -g -o my_body_stats -i 110 -r 200 -s 8192 -t FAKEVERB -u http://www.mywebsite.com -x 10 -p 3

3、Slow read(也称Slow Read attack)

1.描述

慢速读取server传输过来的数据,攻击者将window size置为一个特别小的值,但是却又请求一个特别大的资源,那么服务器就会与这个连接进行长时间通信,如果建立的连接数足够大就会塞满server的连接池
当server端缓冲区未发送的资源堆积过多时还会导致缓冲区溢出,也无法响应其他请求

2.挖掘

暂无经验,直接用slowhttptest工具怼。

3.利用

使用工具:slowhttptest

slowhttptest -c 1000 -X -r 1000 -w 10 -y 20 -n 5 -z 32 -u http://yourtarget.co

六、修复防范

  1. 将标题和消息体限制在最小的合理长度上。针对接受数据的每个资源,设置更严格的特定于URL的限制。
  2. 设置合理的连接超时时间
  3. 定义最小传入数据速率,并删除比该速率慢的连接
  4. 如果Web服务器从相同的IP接收到数千个连接,同一个用户代理在短时间内请求相同的资源,直接禁掉IP并且记录日志
  5. 对web服务器的http头部传输的最大许可时间进行限制,修改成最大许可时间为20秒。

七、提出问题

posted @ 2021-01-31 23:56  GorillaLee  阅读(1138)  评论(0编辑  收藏  举报