Web服务器面临的五种应用层DOS威胁

经典的DOS有:ICMP flood ,SYN flood,UDP flood,Teardrop attacks ,Spoofing attacks。这里总结一下Web服务器面临的五中应用层的DOS 威胁。主要是介绍基本原理和工具的简单实用方法。每个攻击方法我列出了参考信息链接地址,要深入了解这类攻击的话,建议看看链接地址。

**威胁一slowloris

原理:HTTP的一个请求包括:

Request = Request-Line *(( general-header | request-header | entity-header ) CRLF) CRLF [ message-body ]

例如:

GET /index.php HTTP 1.1(\r\n)

HOST: www.site.com (\r\n) (\r\n)

按照RFC规定,一个正常的HTTP请求是以2个\r\n结束。想想如果发送大量只有一个\r\n的请求,会发生什么样的情况。对,服务器会一直等待,直到超时。等待就会占用一个线程,而服务器的线程使用数量是有上限的,达到上限以后就很难处理新的http请求. 达到拒绝服务的目的。

攻击方法: 当然你可以根据自己的理解写程序来来发送这些诡异的HTTP请求。也有现成的工具可以用——Slowloris.pl,地址:http://ha.ckers.org/slowloris/。 为了更好的理解每个输入参数的用法,建议先把连接中的文章先看看。这里举几个例子: 建立500个socket连接,DOS 服务器192.168.1.123的80端口,设置connection的超时时间为200秒。slowloris.pl -dns 192.168.1.123 -port 80 -timeout 200 -num 500

DOS效果:

服务器内存使用:略有增加

服务器CPU使用:正常

服务器响应:不能响应正常请求

Netstat命令可以查看到大量的连接,服务器将直接RST消息,拒绝新的连接。

另外:Slowloris能吃的服务器:Apache 1.x, Apache 2.x, dhttpd。

Slowloris不能吃的服务器:IIS6.0, IIS7.0, lighttpd, nginx, Cherokee, Squid。如果你运行在windows上,socket的最大连接数可能被限制了,导致dos不成功。

威胁二:HTTP POST DOS

原理:向服务器发送POST请求,告诉它将要POST 的数据为n,服务器会开辟长度为n的内存空间等待接收数据。当n足够大,POST请求足够多的时候,这种攻击会吃到服务器大量内存,从而影响服务器性能。

POST数据包:

POST /openemr/interface/login/login_frame.php HTTP/1.1

Host: 10.200.119.198

User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Connection: keep-alive Content-Length: 1000000 Content-Type: application/x-www-form-urlencoded

工具: 明白了原理,方法就变得很简单了,写程序30行代码搞定。

现成的工具也有:https://www.owasp.org/index.php/OWASP_HTTP_Post_Tool

DOS效果:服务器内存使用:激增

服务器CPU使用:激增

服务器响应:不能响应正常请求

威胁三:HTTP RANGE DOS

只需要一个请求数据包就能折腾服务器的一种攻击方式。

HTTP头字段Range用于文件分段下载。迅雷,PDF在线阅读都使用了这个功能。这个字段也可以被用于DOS服务器。攻击数据包如下:

HEAD /file.rmvb HTTP/1.1

Host: www.site.com

Range: bytes=0-,5-0,5-1,5-2,5-3,5-4,,,,,

Accept-Encoding: gzip

Connection: close

Web服务器收到这个包时,会将file.rmvb文件大量的小片段,然后使用gzip加压下片段。分片后加压过程会消耗服务器大量资源,造成DOS。

参考:http://www.secanalyst.org/?p=350

参考:http://www.exploit-db.com/exploits/17696/

威胁四:HTTP Slow Read DOS

原理:向Web服务器发送正常合法的read请求,比如下载文件。在文件下载时,将TCP滑动窗口size设为1或者2,这样服务器就会以非常缓慢的速度发送文件,文件将长期滞留在服务器内存中,消耗资源,造成DOS。

工具:http://code.google.com/p/slowhttptest/

参考:http://www.theinfoboom.com/artic-of-service-attack/

威胁五:hash碰撞DOS

参考:http://bbs.pediy.com/showthread.php?t=145634

实验过的朋友可能发现,这个DOS会造成服务CPU利用率100%,但是某些服务器依然能正常响应HTTP请求。原因我目前还没找到,这可能与apache或者php的配置有关。望知道答案的大牛解释

-----------------------------分割线---------------------------

上述是转载,我以为对应用层的拒绝服务攻击手法介绍的比较清晰了。

之所以转载这篇文章,是因为在工作中接触到很多IT运维人员和甲方安全运维人员对拒绝服务攻击的认识存在误区。最突出的误区就是,运维人员普遍把拒绝服务攻击等同于“人海战术”,认为DOS攻击就是大流量攻击,只要是DOS或者DDOS攻击发生了,那么一定是超过互联网出口带宽的大流量拥堵过来了,除了等待别无他法。

举个例子,去年底黑客组织THC发布的针对SSL服务器的DOS攻击工具想必大家都不陌生。根据分析文章显示,这一攻击工具利用的就是SSL协议的漏洞,反复建立与SSL服务器的协商过程,从而消耗靶机的处理资源,达到攻击效果的。当时根据我的亲身测试,一台普通家用PC+2MB的ADSL线路,只需不到十分钟时间就可让一台日本的SSL服务器停止服务,所有网页提示“该页无法显示”。

窃以为这种消极态度最根本的原因还是在于对攻击原理和手法的不理解造成的。DOS攻击除了使用大流量泛洪攻击以外,还会大量构造特殊攻击数据包,消耗靶机的处理资源(比如CPU资源、内存资源等),从而实现靶机停止对外服务的攻击效果。针对实际遇到的攻击数据包和攻击IP地址进行针对性防御,理应可以起到一定的积极防御效果。由于实际工作中还尚未遇到过DOS攻击的实战,无法进行更切实的分析。

PS:这篇文章摘自90sec的安全月刊,文中并未提供原作者姓名和原文地址,因此在本篇转载中未能注明。敬请谅解。

你的打赏,我的干粮