XenForo 2.3.13 之前的版本在 Windows 上导入样式归档时存在路径遍历漏洞。
导入器接受 upload/ 目录下的 ZIP 成员,并拒绝包含正斜杠形式 /../ 的名称。但它不会规范化或拒绝反斜杠。随后,XenForo 会将保留的成员名称附加到其临时解压目录。Windows 会将 ..\ 解释为父目录遍历。
拥有 style 权限的非超级管理员 ACP 用户可以逃逸临时目录,并将字节写入其他 Web 服务器可写路径。在我测试的 XenForo 2.3.12(build 2031270)安装环境中,一个精心构造的成员将新的 PHP 标记文件写入公共 Web 根目录;请求该文件会以 Web 服务器账户身份执行该常量标记。
前提条件是 Windows 部署环境具备 PHP ZIP 支持,并且存在被委派权限的样式管理员。该验证程序使用固定的新文件名,拒绝覆盖现有文件,且不包含命令执行功能。XenForo 2.3.13 已包含修复。
python poc.py https://xenforo.example LIMITED_STYLE_ADMIN --confirm-write
密码通过隐藏提示输入。运行结束后,请立即从测试 Web 根目录中删除 style-archive-sentinel.php。
由 Marco Paciaroni(BomboBombone)发现。