JSON fuzzing
Allt eftersom fler och fler applikationer hanterar JSON (JavaScript Object Notation) så blir det också viktigare att genomföra olika former av säkerhetstester som just fokuserar på JSON. Många verktyg såsom Burp Suite och ZAP har stöd för att lägga till egna listor och där passar SecLists-listor bra såsom denna:
Problemet dock med dessa listor är att dom är ”dumma” och tar inte så mycket hänsyn till övriga värden och kriterier som eventuellt måste uppfyllas.
För att råda bot på detta så tog Michael Henriksen fram verktyget JDAM ”A structure-aware JSON fuzzer” som baseras på samma idé som mitt favoritverktyg radamsa.
Gif-animation som visar hur JDAM kan användas:
Och här är ett till exempel när jag använder jdam för 10 st iterationer:
Nästa utmaning är att mata in dessa värden mot den applikation eller system vi vill testa. Man kan givetvis skriva ut dessa testfall till en fil och sedan använda den filen i Burp eller ZAP. Det går även att köra ffuf direkt med utdata från jdam på följande sätt:
ffuf -input-cmd 'cat test.json | jdam -rounds 3' -d FUZZ -u http://localhost/api/user/1 -X PUT -v -mc 500 -mr 'error|failed|failure|fault|abort|root:|1764|0x|\d{20}' -od /tmp/ffuf_test
Att vi väljer just en regexp att matcha mot (-mr) som innehåller bla 1764 är för att detta är ett ”magiskt” värde där vi matar in 42*42 vilket blir 1764. Detta kan indikera på bl.a. template injections. Håll även koll på krashar, felmeddelanden eller annat som kan indikera på att applikationen hanterar indata på ett felaktigt sätt.
Samtliga olika mutationer som JDAM känner till är följande: