本仓库详细介绍了 CVE-2021-29447 漏洞,这是 WordPress 中一个严重的安全缺陷,允许攻击者通过媒体库进行经过身份验证的 XML 外部实体(XXE)攻击。它还提供了一个自动化脚本,用于演示概念验证(PoC)。
该漏洞存在于 WordPress 对上传音频文件元数据的处理中。具体如下:
根本原因:WordPress 使用 getID3 库解析 WAV 等媒体文件的元数据。WAV 文件可以包含一个名为 iXML 的 XML 数据块。攻击者可以构造一个包含恶意 XML 内容的 WAV 文件,当易受漏洞影响的库解析该文件时,会触发 XXE 攻击。
受影响版本:WordPress 5.6 至 5.7 版本。
关键要求:WordPress 安装必须运行在 PHP 8 上,因为 PHP 8 中默认 Libxml2 配置的更改是该漏洞利用的核心。
影响:成功利用可能导致任意文件泄露(例如,读取 wp-config.php 以获取数据库凭据)以及服务端请求伪造(SSRF)
以下代码片段尝试解析 iXML 子块中的 XML 数据:

自动化整个流程:创建恶意 WAV 文件和 DTD,处理到目标 WordPress 站点的文件上传,并设置监听器以接收泄露的数据。
可配置:允许您指定要泄露的目标文件路径。
./payload.sh 运行脚本。