HTTP慢速攻擊


漏洞原理

HTTP慢速攻擊也叫slow http attack,是一種DoS攻擊的方式。由於HTTP請求底層使用TCP網絡連接進行會話,因此如果中間件對會話超時時間設置不合理,並且HTTP在發送請求的時候采用慢速發HTTP請求,就會導致占用一個HTTP連接會話。如果發送大量慢速的HTTP包就會導致拒絕服務攻擊DoS。

 

3種攻擊方式

  • Slow headers(也稱slowloris):Web應用在處理HTTP請求之前都要先接收完所有的HTTP頭部,Web服務器再沒接收到2個連續的\r\n時,會認為客戶端沒有發送完頭部,而持續的等等客戶端發送數據,消耗服務器的連接和內存資源。
  • Slow body(也稱Slow HTTP POST):攻擊者發送一個HTTP POST請求,該請求的Content-Length頭部值很大,使得Web服務器或代理認為客戶端要發送很大的數據。服務器會保持連接准備接收數據,但攻擊客戶端每次只發送很少量的數據,使該連接一直保持存活,消耗服務器的連接和內存資源。
  • Slow read(也稱Slow Read attack):客戶端與服務器建立連接並發送了一個HTTP請求,客戶端發送完整的請求給服務器端,然后一直保持這個連接,以很低的速度讀取Response,比如很長一段時間客戶端不讀取任何數據,通過發送Zero Window到服務器,讓服務器誤以為客戶端很忙,直到連接快超時前才讀取一個字節,以消耗服務器的連接和內存資源。

 

 

漏洞驗證

使用工具:slowhttptest

SlowHTTPTest是一款對服務器進行慢攻擊的測試軟件,所謂的慢攻擊就是相對於cc或者DDoS的快而言的,並不是只有量大速度快才能把服務器搞掛,使用慢攻擊有時候也能到達同一效果。slowhttptest包含了之前幾種慢攻擊的攻擊方式,包括slowloris, Slow HTTP POST, Slow Read attack等。那么這些慢攻擊工具的原理就是想辦法讓服務器等待,當服務器在保持連接等待時,自然就消耗了資源。

安裝工具

Kali Linux:

apt-get install slowhttptest

  

其他Linux發行版:

./configure
make
sudo make install

  

參數說明

-a 一開始開始值范圍說明符用於范圍頭測試
-b 將字節限制的范圍說明符用於范圍頭測試
-c 連接數限制為65539
-d  proxy host:port用於指導所有流量通過web代理
-e  proxy host:port端口用於指導只有探針交通通過web代理
-h,B,R或x 指定減緩在頭部分或在消息體,- R 允許范圍檢驗,使慢讀測試- x
-g  生成統計數據在CSV和HTML格式,模式是緩慢的xxx。csv / html,其中xxx是時間和日期
-i  seconds秒間隔跟蹤數據在幾秒鍾內,每個連接
-k  管道因子次數重復請求在同一連接慢讀測試如果服務器支持HTTP管道內襯。
-l  在幾秒鍾內,秒測試時間
-n  秒間隔從接收緩沖區讀取操作
-o  文件定義輸出文件路徑和/或名稱,如果指定有效- g
-p  秒超時等待HTTP響應在探頭連接后,服務器被認為是不可訪問的
-r  seconds連接速度
-s  字節值的內容長度標題詳細說明,如果指定- b
-t  verb自定義
-u  URL目標URL,相同的格式鍵入瀏覽器,e。g https://host[:port]/
-v  level冗長等級0 – 4的日志
-w  字節范圍廣告的窗口大小會選擇從
-x  字節最大長度的跟蹤數據結束
-y  字節范圍廣告的窗口大小會選擇從
-z  字節從接收緩沖區讀取字節與單一的read()操作

  

 

驗證命令

slowloris模式:

slowhttptest -c 1000 -H -i 10 -r 200 -t GET -u https://yourtarget.com/index.html -x 24 -p 3

Slow Body攻擊:

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

  

Slow Read模式:

slowhttptest -c 1000 -X -r 1000 -w 10 -y 20 -n 5 -z 32 -u http://yourtarget.com -p 5 -l 350 -e x.x.x.x:8080

  

判斷依據

1、當服務器可控,可以通過以下命令來確認是否存在該漏洞:
pgrep http | wc -l  進程數量
netstat -antp | grep 443 |wc -l  網絡連接數量
2、在攻擊的時間段,服務無法正常訪問則存在漏洞。

  

修復建議

  • 設定URL白名單和黑名單,識別壞的IP;
  • 設置一個絕對連接超時;
  • 定義最小的輸入數據速率;
  • 對web服務器的http頭部傳輸的最大許可時間進行限制,修改成最大許可時間為20秒。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM