浅谈Slowloris拒绝服务攻击

原文地址: 浅谈Slowloris拒绝服务攻击 作者: xcgsnowdrop DDOS又称为分布式拒绝服务,全称是Distributed Denial of Service。DDOS本是利用合理的请求造成资源过载,导致服务不可用。比如一个停车场共有100车位,当100车位都停满后,再有车想要停进来,就必须等待已有的车先出去才行。如果已有的车一直不出去,那么停车场的入口就会排气长队,停车场的负荷过载,不能正常工作了,这种情况就是“拒绝服务”。 常见的DDOS攻击有SYN flood、UDP flood、ICMP flood等。其中SYN flood是一种最为经典的DDOS攻击。其利用的是TCP协议设计中的缺陷,此处先避开不谈。 Slowloris攻击则是利用Web Server的漏洞或设计缺陷,直接造成拒绝服务。下面通过一个典型示例分析slowloris的拒绝服务攻击本质。 Slowloris是在2009年由著名Web安全专家RSnake提出的一种攻击方法,其原理是以极低的速度往服务器发送HTTP请求。由于Web Server对于并发的连接数都有一定的上限,因此若是恶意地占用住这些连接不释放,那么Web Server的所有连接都将被恶意连接占用,从而无法接受新的请求,导致拒绝服务。 要保持住这个连接,RSnake构造了一个畸形的HTTP请求,准确地说,是一个不完整的HTTP请求。 GET / HTTP/1.1\r\n HOST: host\r\n User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.503l3; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MSOffice 12)\r\n Content-Length: 42\r\n 在正常的HTTP包头中,是以两个CLRF表示HTTP Headers部分结束的。 由于Web Server只收到了一个\r\n,因此将认为HTTP Headers部分没有结束,并保持此连接不释放,继续等待完整的请求。此时客户端再发送任意HTTP头,保持住连接即可。 X-a: b\r\n 当构造多个连接后,服务器的连接数很快就会达到上限。在Slowloris的专题网站上可以下载到POC演示程序,其核心代码置于文章底部,记为slowloris.pl),下面开始使用该脚本工具演示如何使用slowloris攻击使Web Server拒绝服务: 一,准备工作 1.在本机安装配置好Apache2.x,设置MaxClients为50 2.在Browser中访问http://127.0.0.1,结果显示正常 3.下载或编写slowloris.pl脚本 二,开始阶段 1.测试每个http连接等待超时时间,前面我们说过,当Web Server只收到了一个\r\n时,因将其认为HTTP Headers部分尚未结束,故会保持此连接不释放,继续等待完整的请求,此处测试的即为该连接等待完整请求的超时时间。 perl slowloris.pl -dns 127.0.0.1 -port 80 -test ...

2016年9月13日 · 12 分钟 · lucien116