http慢速拒绝服务攻击

简介

http慢速攻击是利用网络协议的设计缺陷,尽可能的长时间保持链接,占用系统的资源,若是达到了Web Server对于并发连接数的上限,同时恶意占用的连接没有被释放,那么服务器端将无法接受新的请求,导致拒绝服务。

http 慢速攻击

http 慢速攻击主要分为一下三种

  1. Slow headers
  2. Slow body
  3. Slow read
Slow headers

这种慢速攻击方式首先要看一下http报文的格式了,我用burp抓了个包,报文内容如下。

GET / HTTP/1.1
Host: www.baidu.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:93.0) Gecko/20100101 Firefox/93.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close

在实际传输中,,\r\n代表一行报文的结束也被称为空行(CRLF),而\r\n\r\n代表整个报文的结束,当我们客户端发送一个报文,不以CRLF结尾,而是10s发送一行报文,我们的报文需要80s才能发送完毕,这80s内,服务器需要一直等待客户端的CRLF,然后才能解析这个报文。当我们大量的发起这种请求,就会占用大量的http 连接数,倒是web 服务器无法在接收连接,导致拒绝服务。

Slow body

原理为在POST提交方式中,允许在HTTP的头中声明content-length,即POST内容的长度。

这种方式与Slow headers,差别不大,主要就是在数据内容中做手脚,缓慢的发送报文内容,以达到长时间占用http连接的目的。

Slow read

第三类攻击方式采用调整TCP协议中滑动窗口大小,来对服务器单次发送的数据大小进行控制,使得服务器需要对一个相应包分为很多个包来发送,想要使这种攻击效果明显,请求的资源要尽量大,这里很容易理解,当请求的资源越大,返回包才越大,这样才能分成更多的包让服务器发送,导致拒绝服务的产生。

漏洞测试

http慢速攻击漏洞一般使用slowhttptest工具进行测试。

可以直接使用Linux命令在系统中直接安装

apt install slowhttptest

或者使用下载、编译等方式进行安装。

Slow headers

slowhttptest -c 65500 -H -i 10 -r 200 -s 8192 -t SLOWHEADER -u http://vulurl.com

Slow body

slowhttptest -c 65500 -B -i 10 -r 200 -s 8192 -t SLOWBODY -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

漏洞修复

对于这种类似于DOS 的攻击,都是不好搞的,毕竟我只要量大,总有可能把你搞挂,介绍几种缓解、修复方式。

修改超时时常

将http连接保持时间改的短一点,这样可以确保连接不会长时间存在,可以有效缓解。

增大允许连接数

在系统资源允许的范围内容,将连接数改大,但是这种方式应该不会有多大效果。

限制每个IP连接数

这种方式因该是相当有效的。

设置每个 IP 只能建立20个连接

iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 -j REJECT --reject-with tcp-reset

参考

https://my.oschina.net/u/4369742/blog/3484553
https://www.cnblogs.com/Cl0ud/p/13409171.html

猜你喜欢

转载自blog.csdn.net/qingzhantianxia/article/details/120823065