
Strumento per fuzzing, enumerazione e sfruttamento di File Inclusion e Directory Traversal.
FDsploit menu:
$ python fdsploit.py -h
_____ ____ _ _ _
| __| \ ___ ___| |___|_| |_
| __| | |_ -| . | | . | | _|
|__| |____/|___| _|_|___|_|_|
|_|...ver. 1.2
Author: Christoforos Petrou (game0ver) !
usage: fdsploit.py [-u | -f ] [-h] [-p] [-d] [-e {0,1,2}] [-t] [-b] [-x] [-c]
[-v] [--params [...]] [-k] [-a] [--cmd]
[--lfishell {None,simple,expect,input}]
FDsploit.py: Automatic (L|R)FI & directory traversal enumeration & exploitation.
Required (one of the following):
-u , --url Specify a url or
-f , --file Specify a file containing urls
Optional:
-h, --help Show this help message and exit
-p , --payload Specify a payload-file to look for [default None]
-d , --depth Specify max depth for payload [default 5]
-e {0,1,2}, --urlencode {0,1,2}
Url-encode the payload [default: False]
-t , --tchar Use a termination character ('%00' or '?') [default None]
-b, --b64 Use base64 encoding [default False]
-x , --proxy Specify a proxy to use [form: host:port]
-c , --cookie Specify a session-cookie to use [default None]
-v , --verb Specify request type ('GET' or 'POST') [default GET]
--params [ ...] Specify POST parameters to use (applied only with POST requests)
Form: param1:value1,param2:value2,...
-k , --keyword Search for a certain keyword(s) on the response [default: None]
-a, --useragent Use a random user-agent [default user-agent: FDsploit_1.2_agent]
--cmd Test for command execution through PHP functions [default command: None]
--lfishell {None,simple,expect,input}
LFI pseudoshell [default None]
[!] For More Details please read the README.md file!
FDsploit può essere utilizzato per scoprire e sfruttare automaticamente vulnerabilità di Local/Remote File Inclusion e Directory Traversal. Nel caso in cui venga trovata una vulnerabilità LFI, l'opzione --lfishell può essere usata per sfruttarla. Per ora, sono supportati 3 diversi tipi di shell LFI:
simple: Questo tipo di shell permette all'utente di leggere file facilmente senza dover digitare l'URL ogni volta. Inoltre fornisce solo l'output del file e non tutto il codice sorgente HTML della pagina, il che lo rende molto utile.expect: Questo tipo di shell è una shell semi-interattiva che permette all'utente di eseguire comandi tramite il wrapper expect:// di PHP.input: Questo tipo di shell è una shell semi-interattiva che permette all'utente di eseguire comandi tramite lo stream php://input di PHP.Finora, ci sono solo due comandi integrati nella shell LFI:
clear eexit.*).Dall'output seguente sembra che il parametro directory sia probabilmente vulnerabile a directory traversal poiché ogni richiesta con ../ come payload produce un hash sha-256 diverso. Anche la content-length è diversa per ogni richiesta:
./fdsploit.py -u 'http://127.0.0.1:8888/test/bWAPP/bWAPP/directory_traversal_2.php?directory=documents' -c 'PHPSESSID=7acf1c5311fee614d0eb40d7f3473087; security_level=0' -d 8
Ancora, il parametro language sembra vulnerabile a LFI poiché usando ../etc/passwd ecc.. come payload, ogni richiesta colorata di verde produce un hash diverso, un content-length diverso da quello iniziale, e la parola chiave specificata viene trovata nella risposta:
./fdsploit.py -u 'http://127.0.0.1:8888/test/bWAPP/bWAPP/rlfi.php?language=*&action=go' -c 'PHPSESSID=7acf1c5311fee614d0eb40d7f3473087; security_level=0' -d 7 -k root -p /etc/passwd
Sfruttando la LFI di cui sopra utilizzando la shell simple:
POST, deve essere specificata anche l'opzione --params.--payload deve essere lasciata al valore predefinito (None).--file per test su più URL, è supportata solo la richiesta GET.--file e --cookie, poiché è possibile specificare un solo cookie alla volta, gli URL devono riferirsi allo stesso dominio o essere accessibili senza cookie (questo sarà risolto in un futuro aggiornamento).input non è compatibile con il verbo POST.Nota: Per installare i requisiti:
pip install -r requirements.txt --upgrade --user
💡 FDsploit è anche preinstallato con la distribuzione BlackArch Linux.
--file anche con parametri POST e cookie, utilizzando probabilmente un file json ecc... come input.--lfishell ad esempio history ecc...Feedback e contributi sono benvenuti. Se trovi un bug o hai una richiesta di funzionalità, sentiti libero di aprire un issue, e non appena lo revisionerò cercherò di risolverlo!
Questo strumento è solo per scopi di test e accademici e può essere utilizzato solo dove è stato dato un consenso esplicito. Non usarlo per scopi illegali! È responsabilità dell'utente finale rispettare tutte le leggi locali, statali e federali applicabili. Gli sviluppatori non si assumono alcuna responsabilità e non sono responsabili per qualsiasi uso improprio o danno causato da questo strumento e dal software in generale.
Questo progetto è concesso in licenza secondo la GPLv3 License - consulta il file LICENSE per i dettagli.