
CVE-2018-11736 的 PoC 漏洞利用,影响 Pluck CMS 4.7.7-dev2 之前版本,存在文件上传漏洞。
免责声明 ⚠️:本漏洞利用代码主要作为编程入门练习用 Rust 编写,请谅解其中可能缺乏技术严谨性或非惯用的代码模式。此外,此漏洞并非本人发现,编写利用代码时参考了官方报告。
针对影响 Pluck CMS 4.7.7-dev2 之前版本的 CVE-2018-11736 的 PoC 利用代码。漏洞位于 /data/inc/images.php,允许攻击者上传任意文件。通过上传伪装成 image/jpeg MIME 类型的恶意 .htaccess 文件,可迫使 Web 服务器将 .jpg 文件解释为 PHP 脚本,从而实现任意 PHP 代码执行。
必须安装 Cargo 才能编译 main.rs。
cargo build
并且需要目标 Pluck CMS 实例的有效身份认证会话 Cookie:
./CVE-2018-11736 -h
CVE-2018-11736 漏洞利用。上传恶意 .htaccess 强制 Web 服务器将 .jpg 文件解释为 PHP 脚本,导致远程代码执行(RCE)
用法: CVE-2018-11736 --cookie <COOKIE> --base-url <BASE_URL> --hta-path <HTACCESS> --image-path <IMAGE>
选项:
-c, --cookie <COOKIE> 会话 Cookie(成功登录后获取)。格式: xxxxxxxxxxxx
-u, --base-url <BASE_URL> 基础 URL(例如 http://localhost)
-H, --hta-path <HTACCESS> .htaccess 文件的路径
-i, --image-path <IMAGE> 伪造图片文件的路径
-h, --help 打印帮助信息
-V, --version 打印版本信息
为确保可重现和安全的测试,可使用 Docker 部署一个存在漏洞的 Pluck CMS v4.7.4-dev5 实例。部署前需下载漏洞版本的 .zip 文件:
wget https://github.com/pluck-cms/pluck/archive/refs/tags/4.74-dev5.zip
然后,在 docker 文件所在目录下执行以下命令:
docker-compose up -d
Web 应用程序将在 http://localhost:8080 上可用。若要在容器内启动 TTY:
docker exec -it pluck-cms bash
以下是 PoC 的实际运行过程,展示了恶意配置的上传以及 RCE 的效果。