ffuf

ffuf(Fuzz Faster U Fool)是用於Web 模糊測試的工具,可用於目錄和參數模糊測試/暴力破解。 fuzzing(模糊測試)指的是一種測試技術,它將各種類型的使用者輸入發送到某個介面以研究其反應。

雖然手動導航網站並點擊所有可用連結能看到一些頁面,但大多數連結和頁面可能不會向公眾發布,這些頁面的安全性往往較低。

而且如果只用手動完成此操作,將花費很長時間。因此需要能夠自動、有效率且快速地完成此操作的工具。此類工具每秒發送數百個請求,研究回應 HTTP 程式碼,並確定頁面是否存在。因此,攻擊者可以快速確定存在哪些頁面,然後手動檢查它們以查看其內容。

為了確定存在哪些頁面,會使用包含 Web 目錄和頁面常用單字的單字列表,我們不必透過手動建立這些單字清單,因為一些最常用的單字清單可以在 GitHub SecLists中找到 https://github.com/danielmiessler/SecLists/tree/master/Discovery


Basic Fuzzing

Directory Fuzzing

檢查是否存在未公開的目錄

ffuf -w /opt/useful/SecLists/Discovery/Web-Content/directory-list-2.3-small.txt:FUZZ -u http://SERVER_IP:PORT/FUZZ

Page Fuzzing

檢查是否存在未公開的頁面

ffuf -w /opt/useful/SecLists/Discovery/Web-Content/directory-list-2.3-small.txt:FUZZ -u http://SERVER_IP:PORT/blog/FUZZ.php

Extension Fuzzing

測試支持哪些副檔名,用法如下

ffuf -w /opt/useful/SecLists/Discovery/Web-Content/web-extensions.txt:FUZZ -u http://SERVER_IP:PORT/blog/indexFUZZ

Recursive Fuzzing

檢查主目錄與下一層子目錄有哪些未公開的.php

ffuf -w /opt/useful/SecLists/Discovery/Web-Content/directory-list-2.3-small.txt:FUZZ -u http://SERVER_IP:PORT/FUZZ -recursion -recursion-depth 1 -e .php -v

  • -recursion 啟用遞迴目錄的功能
  • -recursion-depth 指定遞迴深度,如果指定 -recursion-depth 1,只會看當前目錄與下一層子目錄
  • -e 指定副檔名


Domain Fuzzing

Sub-domains Fuzzing

檢查是否有未公開的子域名

ffuf -w /opt/useful/SecLists/Discovery/DNS/subdomains-top1million-5000.txt:FUZZ -u https://FUZZ.hackthebox.eu/

記得要先把IP加入/etc/hosts,否則未知域名無法解析出正確IP就無法訪問

Vhosts Fuzzing

檢查是否支持其他未公開的hostname

ffuf -w /opt/useful/SecLists/Discovery/DNS/subdomains-top1million-5000.txt:FUZZ -u http://academy.htb:PORT/ -H 'Host: FUZZ.academy.htb'


Parameter Fuzzing

GET Fuzzing

檢查是否GET參數支持其他名稱

ffuf -w /opt/useful/SecLists/Discovery/Web-Content/burp-parameter-names.txt:FUZZ -u http://admin.academy.htb:PORT/admin/admin.php?FUZZ=key -fs xxx

POST Fuzzing

檢查是否POST參數支持其他名稱

ffuf -w /opt/useful/SecLists/Discovery/Web-Content/burp-parameter-names.txt:FUZZ -u http://admin.academy.htb:PORT/admin/admin.php -X POST -d 'FUZZ=key' -H 'Content-Type: application/x-www-form-urlencoded' -fs xxx


過濾參數

常用過濾輸出參數

  • -fw: 按字數過濾
  • -fl :按行數過濾
  • -fs:按返回內容大小過濾,例如-fs 900是返回內容大於900 
  • -ms: 按返回內容的指定大小過濾,例如 -ms 780表示符合780大小的size
  • -fc : 按狀態碼過濾
  • -fr : 按正則表達式模式過濾
  • -mc: 按狀態碼過濾,默認為200,204,301,302,307,401,403,405,500


refer

https://github.com/ffuf/ffuf