tags: Enumerazione_Parametri ffuf ffuf_Enumerazione_Parametri


Questo strumento ti permette di enumerare eventuali paramentri vulnerabile dell’applicazione web come per esempio page, id, filename, ecc, per farlo ci basta utilizzare questo comando:

ffuf -u 'http://10.10.125.182/sqli-labs/Less-1/?FUZZ=1' -c -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt -fw 39
 
 
ffuf -u 'http://10.10.125.182/sqli-labs/Less-1/?FUZZ=1' -c -w /usr/share/seclists/Discovery/Web-Content/raft-medium-words-lowercase.txt -fw 39
 
ffuf -u http://admin.academy.htb:32720/admin/admin.php?FUZZ=key -w /opt/wordlists/SecList/Discovery/Web-Content/burp-parameter-names.txt -fs 798
 

Metti la Keyword FUZZ dove vuoi che la wordlist funzioni.

Una volta trovato il parametro possiamo anche dire a ffuf di prendere il comando precedente ed inserirlo come wordlist del comando di ffuf tramite la flag -w - come nel seguente esempio:

 
seq 0 255 | ffuf -u 'http://10.10.125.182/sqli-labs/Less-1/?id=FUZZ' -c -w - -fw 33
 
#Ora come wordlist userà la nostra sequenza di numeri

Richieste POST

Può capitare che per accedere ad una determinata risorsa sia necessario effettuare una richiesta POST, ma siccome queste richieste differiscono da quelle GET è necessario anche modificare il comando di FFUF tramite la flag -d per il fuzzing del paramentro, il -X POST per effettuare richieste POST e -H per il content type (PHP per le richieste POST vuole application/x-www-form-urlencoded) come nel seguente esempio:

ffuf -X POST -u http://admin.academy.htb:32720/admin/admin.php -d "FUZZ=key" -H 'Content-Type: application/x-www-form-urlencoded' -w /opt/wordlists/SecList/Discovery/Web-Content/burp-parameter-names.txt -fs 798
 
        /'___\  /'___\           /'___\       
       /\ \__/ /\ \__/  __  __  /\ \__/       
       \ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\      
        \ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/      
         \ \_\   \ \_\  \ \____/  \ \_\       
          \/_/    \/_/   \/___/    \/_/       
 
       v2.1.0-dev
________________________________________________
 
 :: Method           : POST
 :: URL              : http://admin.academy.htb:32720/admin/admin.php
 :: Wordlist         : FUZZ: /opt/wordlists/SecList/Discovery/Web-Content/burp-parameter-names.txt
 :: Header           : Content-Type: application/x-www-form-urlencoded
 :: Data             : FUZZ=key
 :: Follow redirects : false
 :: Calibration      : false
 :: Timeout          : 10
 :: Threads          : 40
 :: Matcher          : Response status: 200-299,301,302,307,401,403,405,500
 :: Filter           : Response size: 798
________________________________________________
 
id                      [Status: 200, Size: 768, Words: 219, Lines: 54, Duration: 45ms]
user                    [Status: 200, Size: 783, Words: 221, Lines: 54, Duration: 44ms]
:: Progress: [6453/6453] :: Job [1/1] :: 877 req/sec :: Duration: [0:00:10] :: Errors: 0 ::

Ora per vedere se effettivamente è raggiungibile possiamo effettuare una richiesta POST tramite Curl o BurpSuite.

curl http://admin.academy.htb:32720/admin/admin.php -X POST -d 'id=key' -H 'Content-Type: application/x-www-form-urlencoded'

Salvare la richiesta in un file

Possiamo copiarci direttamente tutta la richiesta da BurpSuite su un file req.txt (usa Pluma evitare errori di spazi), modificarlo aggiungendo il parametro FUZZ e poi darlo in pasto a FFUF, lui capirà cosa fare:

ffuf -request req.txt -w /opt/wordlists/SecList/Discovery/Web-Content/directory-list-2.3-small.txt

Enumerazione Valori

Una volta trovato il parametro (nel nostro caso precedente era id) possiamo provare ad enumerare i valori di quel parametro in modo da poter accedere a quella risorsa, per farlo possiamo usare la seguente sintassi:

 
#Prima ci creiamo una wordlist adatta:
 
seq 1 1000 > id.txt
 
#Poi la diamo in pasto a FFUF
 
ffuf -X POST -u http://admin.academy.htb:32720/admin/admin.php -d "id=FUZZ" -H 'Content-Type: application/x-www-form-urlencoded' -w id.txt -fs 768
 
        /'___\  /'___\           /'___\       
       /\ \__/ /\ \__/  __  __  /\ \__/       
       \ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\      
        \ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/      
         \ \_\   \ \_\  \ \____/  \ \_\       
          \/_/    \/_/   \/___/    \/_/       
 
       v2.1.0-dev
________________________________________________
 
 :: Method           : POST
 :: URL              : http://admin.academy.htb:32720/admin/admin.php
 :: Wordlist         : FUZZ: /tmp/id.txt
 :: Header           : Content-Type: application/x-www-form-urlencoded
 :: Data             : id=FUZZ
 :: Follow redirects : false
 :: Calibration      : false
 :: Timeout          : 10
 :: Threads          : 40
 :: Matcher          : Response status: 200-299,301,302,307,401,403,405,500
 :: Filter           : Response size: 768
________________________________________________
 
73                      [Status: 200, Size: 787, Words: 218, Lines: 54, Duration: 44ms]
:: Progress: [1000/1000] :: Job [1/1] :: 132 req/sec :: Duration: [0:00:04] :: Errors: 0 ::
 

Ora possiamo verificare che la risorsa sia accessibile tramite Curl:

curl http://admin.academy.htb:32720/admin/admin.php  -X POST -d 'id=73' -H 'Content-Type: application/x-www-form-urlencoded'                   
 
<div class='center'><p>HTB{p4r4m373r_fuzz1n6_15_k3y!}</p></div>
<html>
<!DOCTYPE html>
 
<head>
  <title>HTB Academy</title>
  <style>