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
你很可能不知道連接超時時間,那麼就用下面的命令,讓Slowloris自動幫你完成吧。
slowloris.pl -dns 192.168.1.123 -port 80 -test
這是一個慢啓動的過程,要達到效果需要一段時間。所以建議最好是自己估計一個時間告訴slowloris。Timeout時間太長,可能被服務器主動斷開連接,時間太短就需要發送更多數據包,帶寬消耗更多。
DOS效果:
服務器內存使用:略有增加
服務器CPU使用:正常
服務器響應:不能響應正常請求
Netstat命令可以查看到大量的連接:
http://bbs.pediy.com/attachment.php?attachmentid=64989&stc=1&d=1330150037
服務器將直接RST消息,拒絕新的連接:
http://bbs.pediy.com/attachment.php?attachmentid=64988&stc=1&d=1330150037

另外:
Slowloris能吃的服務器:Apache 1.x, Apache 2.x, dhttpd。
Slowloris不能吃的服務器:IIS6.0, IIS7.0, lighttpd, nginx, Cherokee, Squid。
如果你perl運行出錯,可能是你沒安裝相關支持包,可以註釋掉Slowloris.pl 中相關代碼。
如果你運行在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/articles/slow-read-attack-a-new-http-denial-of-service-attack/

威脅五,hash碰撞DOS

參考:http://bbs.pediy.com/showthread.php?t=145634
實驗過的朋友可能發現,這個DOS會造成服務CPU利用率100%,但是某些服務器依然能正常響應HTTP請求。原因我目前還沒找到,這可能與apache或者php的配置有關。望知道答案的大牛解釋。


作 者: ctaotao
時 間: 2012-02-25,13:51:32

鏈 接: http://bbs.pediy.com/showthread.php?t=146952 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章