slowhttptest慢速攻擊工具使用詳解

GorillaLee發表於2021-01-31

參考文章

本片文章僅供學習使用,切勿觸犯法律!


一、簡要介紹

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

二、下載安裝

Kali Linux:

apt-get install slowhttptest 

其他Linux發行版:

tar -xzvf slowhttptest-x.x.tar.gz
cd slowhttptest-x.x
./configure --prefix=PREFIX
make
sudo make install

PREFIX替換為應該安裝slowhttptest工具的絕對路徑。
需要安裝libssl-dev才能成功編譯該工具。

MacOS安裝命令:

brew update && brew install slowhttptest

git安裝:

git clone https://github.com/shekyan/slowhttptest

三、執行使用

預設引數測試
./slowhttptest
其回應的相關引數:

test type 測試型別
number of connections 連線數
URL 網址
verb 動詞
interval between follow up data 隨機資料之間的間隔
connections per second 每秒連線數
test duration 測試時間
probe connection timeout 探針連線超時
max length of followup data field 後續資料欄位的最大長度

1、引數說明

選項 描述
-a 開始 用於範圍標頭測試的range-specifier的起始值
-b 位元組 範圍標題測試的範圍說明符限制
-c 連線數 限於65539
-d 代理主機:埠 通過Web代理定向所有流量
-e 代理主機:埠 用於僅通過Web代理定向探測流量
-H,B,R或X 指定在標頭部分或訊息正文中放慢速度,-R啟用範圍測試,-X啟用慢速讀取測試
-f 內容型別 內容型別標頭的值
-g 生成CSV和HTML格式的統計資訊,格式為slow_xxx.csv / html,其中xxx是時間和日期
-i 秒 每個連線的後續資料之間的間隔(以秒為單位)
-j cookie Cookie標頭的值(例如:-j“ user_id = 1001;超時= 9000”)
-k 流水線係數 如果伺服器支援HTTP管道,則在同一連線中重複請求以進行慢速讀取測試的次數。
-l 秒 測試持續時間(以秒為單位)
-m 接受 Accept標頭的值
-n 秒 從接收緩衝區讀取操作之間的間隔
-o 檔案 定製輸出檔案的路徑和/或名稱,如果指定了-g,則有效
-p 秒 等待探針連線上的HTTP響應超時,此後伺服器被視為不可訪問
每秒-r個連線 連線率
-s 位元組 如果指定了-B,則Content-Length標頭的值
-t 動詞 要使用的自定義動詞
-u URL 目標URL,與您在瀏覽器中鍵入的格式相同,例如http s:// host [:port] /
-v 級 日誌0-4的詳細級別
-w 位元組 範圍的開始,將從中選擇廣告視窗大小
-x 位元組 隨訪資料的最大長度
-y 位元組 範圍的末端,將從中選擇廣告視窗大小
-z 位元組 通過單個read()操作從接收緩衝區讀取的位元組

2、功能命令

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.co

慢節奏模式下的用法示例:

./slowhttptest -c 1000 -H -g -o my_header_stats -i 10 -r 200 -t GET -u https://myseceureserver/resources/index.html -x 24 -p 3

通過在xxxx:8080上的代理進行探測:

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

3、錯誤資訊

錯誤資訊 這是什麼意思
"Hit test time limit" 程式達到了用-l引數指定的時間限制
"No open connections left" 同行關閉了所有連線
"Cannot establish connection" 在測試的前N秒內未建立任何連線,其中N是-i引數的值,或者是10(如果未指定)。如果沒有到主機的路由或遠端對等體斷開,則會發生這種情況
"Connection refused" 遠端對等方不接受指定埠上的連線(僅來自您?使用代理進行探測)
"Cancelled by user" 您按了Ctrl-C或以其他方式傳送了SIGINT
"Unexpected error" 永遠不會發生

3、判斷依據

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

相關文章