Test av ffuf

ffuf

Ffuf är en snabb fuzzer som är skriven i programspråket Go. Ffuf står för Fuzz Faster U Fool. Om du pysslar med penetrationstester, red-teaming eller bugbounties är detta ett utmärkt verktyg.

Jag tänkte testa att använda ffuf mot OWASP Juice Shop som är en mycket osäker webbapplikation som bl.a. innehåller ett JSON-REST-backend.

Dock måste vi så klart börja med att installera ffuf, och det finns tre olika sätt:

  • Använda go:s pakethanterare: go get -u github.com/ffuf/ffuf
  • Ladda hem källkoden från Github-repot och kompilera med go
  • Ladda hem och köra binären

För de två översta valen så måste du ha Go version 1.13 eller senare installerat. Och kör du exempelvis Ubuntu 18.04 bionic så måste du installera rätt paket som troligtvis är:

sudo apt install golang-1.13

Kör du Kali Linux så följer antingen ffuf med eller så måste du installera det med:

sudo apt-get install ffuf

Och kör du macOS och har Homebrew så installerar du ffuf med:

brew install ffuf

När du sedan installera ffuf kan du verifiera att du har en relativt ny version som i skrivande stund är 1.2.1. Skärmdump:

ffuf kan också en del saker som Burp Suite kan, specifikt sådant som återfinnes under intruder-fliken. Där du kan välja injektionspunkter och vilken payload som ska motsvara dessa injektionspunkter:

-mode Multi-wordlist operation mode. Available modes: clusterbomb, pitchfork (default: clusterbomb)

Du kan även använda ffuf för att söka efter kataloger (dirsearch) och då med -D

-D DirSearch wordlist compatibility mode. Used in conjunction with -e flag. (default: false)

Och här är ett exempel på dirsearch:

Superbra! Har du inte SecLists så hittar du dessa listor här.

I nästa test så ska vi testa att fuzza ett JSON-backend med hjälp av radamsa och ffuf. Vi kollar först hur ett vanligt anrop ser ut vid inloggning mot backend och skriver ner det till en text-fil:

$ cat json.txt
{"email":"test","password":"test"}
$

Och i nästa steg så kör vi ffuf på följande sätt:

ffuf -X POST -input-cmd "radamsa json.txt" -d FUZZ -H "Content-Type: application/json" -u https://juiceshop.triop.se/rest/user/login -input-num 1000 -c -ac -of all -o fuzz -mc 200,204,301,302,307,403

Och allt ser bra ut efter 1000 anrop där vi har fuzzat json-anropet:

Och vill man vara ännu mer diskret så kan man sätta en egen user-agent:

ffuf -H "User-Agent: custom string" ...

Samt så kan man ändra antalet samtidiga trådar med -t som standard är 40. Även värt att notera i ovan exempel så väljer jag att skriva en logg med samtliga format som supportas: json, ejson, html, md, csv och ecsv.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *