
CVE-2024-1813 的 PoC 漏洞利用:Simple Job Board WordPress 插件中的 PHP 对象注入,通过 gadget 链实现未认证远程代码执行(RCE)。附带 Docker 实验环境,用于安全演示。
端到端流程:访客通过公开的申请表单存储一个序列化的 PHP 对象,管理员打开申请人列表后,Gadget 链会写入一个 WebShell。
Simple Job Board(PressTigers)WordPress 插件存在未认证的 PHP 对象注入漏洞。访客通过公开的申请表单存储一个序列化的 PHP 对象;当管理员随后打开申请人列表时,插件会将其反序列化,第三方 Gadget 链会将其转换为远程代码执行。
| CVE | CVE-2024-1813 |
| 插件 | Simple Job Board (PressTigers) |
| 受影响版本 | ≤ 2.11.0 |
| 已修复版本 | 2.11.1 |
| 类型 | PHP 对象注入(不安全反序列化) |
| 认证 | 无需认证(认证前注入) |
| 触发条件 | 管理员打开申请人列表(正常操作流程) |
| CVSS | 9.8 |
📖 完整技术分析文章: https://mobeta.fr/blog/
本仓库是对应的实验环境和 PoC。详细分析(根本原因、双重
unserialize、构建 POP 链、WAF 绕过)请参阅博客文章。
.
├── sjb_cve_2024_1813.py # the PoC (builds + sends the payload)
├── LICENSE
└── lab/
├── docker-compose.yml # WordPress + MariaDB + vulnerable plugins
├── setup/setup.sh # one-shot provisioning (wp-cli)
└── trigger_exploit.sh # simulates the admin opening the applicants list
复现存在漏洞的组件组合:WordPress 6.9.4 / PHP 8.3 / MariaDB 10.11,以及 Simple Job Board 2.10.8(漏洞源与触发点)和 All In One SEO 4.5.6(Gadget 链)。
cd lab
docker compose up -d # boot + auto-provision
docker compose logs setup # prints the site URL, admin creds and job_id
实验环境默认值:http://localhost:8081,管理员 admin / admin123!。
# 1. Store the payload (pre-auth). Replace 4 with the job_id from the setup logs.
python3 sjb_cve_2024_1813.py http://localhost:8081 4 'id > /tmp/RCE_PROOF.txt'
# 2. Fire the sink (plays the admin opening the applicants list).
cd lab && ./trigger_exploit.sh
# 3. Check the result.
docker exec sjb_lab_wp cat /tmp/RCE_PROOF.txt
有用的 PoC 参数:
--print-only - 构建并打印网络载荷,不产生网络流量。--field - POST 字段名称(必须包含 name;默认为 jobapp_full_name)。--int-prefix '+' - 序列化长度前缀的 WAF 绕过变体。--proxy http://127.0.0.1:8080 - 通过 Burp 代理转发。post_meta 上所有显式的 unserialize() / maybe_unserialize();建议使用 unserialize($data, ['allowed_classes' => false])。vendor/composer/installed.json,以免被指纹识别出作用域库的版本。仅限授权的安全测试与教育用途。未经所有者明确书面许可,切勿针对任何系统运行本工具。
MIT - 参见 LICENSE。