參考文章
- HTTP慢速攻擊
- Slowhttptest攻擊原理
- 如何防范緩慢的HTTP攻擊
- 識別Web應用程序上的慢速HTTP攻擊漏洞
- Tag: #慢速攻擊 #slowhttptest #邏輯漏洞
- Ref:
本片文章僅供學習使用,切勿觸犯法律!
概述
總結
一、漏洞介紹
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
六、修復防范
- 將標題和消息體限制在最小的合理長度上。針對接受數據的每個資源,設置更嚴格的特定於URL的限制。
- 設置合理的連接超時時間
- 定義最小傳入數據速率,並刪除比該速率慢的連接
- 如果Web服務器從相同的IP接收到數千個連接,同一個用戶代理在短時間內請求相同的資源,直接禁掉IP並且記錄日志
- 對web服務器的http頭部傳輸的最大許可時間進行限制,修改成最大許可時間為20秒。