
CVE-2025-47812 POC
这是 Wing FTP 服务器漏洞(CVE-2025-47812)的概念验证(PoC)
Wing FTP Server 7.4.4 之前的版本因对用户名参数的不安全处理而存在远程代码执行(RCE)漏洞。当我们在 /loginok.html 页面登录时,可以注入空字节 %00
后跟 Lua 代码,以实现 RCE。
当我们向 loginok.html 页面发送 POST 请求时,c_CheckUser() 函数(用于验证正确用户名和密码的函数)使用了 strlen()。问题在于该依赖函数容易受到空字节截断的影响。
这意味着如果我们在用户名后发送 %00,c_CheckUser() 只会验证空字节之前的字符串部分:"anonymous%00........." --> "anonymous"。
随后,应用程序会创建一个 SESSION 变量,并将其写入文件。然而,该文件不仅包含用户名,还包含包括空字节及后续代码在内的整个字符串。 由于该文件是一个 Lua 文件,因此可以注入 Lua 代码,从而导致 RCE。
假设允许匿名登录。如果我们发送一个具有以下结构的 POST 请求:username=anonymous%00]]%0dlocal+h+%3d+io.popen("whoami")%0dlocal+r+%3d+h%3aread(\"*a\")%0dh%3aclose()%0dprint(r)%0d--&password=&username_val=anonymous&password_val=,我们就已经通过 Lua 代码在空字节之后注入了 whoami 命令。完成这一步后,我们需要复制响应中的 UID,并使用该 UID 向任何已认证页面发送 GET 请求,例如 dir.html 页面。
CVE-2025-47812.py 脚本会替我们完成这一过程。