
Docker-basiertes Labor zur Reproduktion und Validierung von CVE-2026-56011, einer nicht authentifizierten XSS-Schwachstelle in MapPress Maps für WordPress, mit Vergleichszielen für anfällige und gepatchte Versionen.
Dieses Repository enthält ein lokales Docker-Labor zur Reproduktion und Validierung von CVE-2026-56011, einer nicht authentifizierten Cross-Site-Scripting-Sicherheitslücke, die MapPress Maps for WordPress betrifft.
MapPress Maps for WordPress ist ein WordPress-Plugin, das zum Rendern von Karten in WordPress-Seiten und -Beiträgen verwendet wird. Das anfällige Verhalten betrifft den iframe-Karten-Rendering-Pfad, der über den Anfrageparameter mappress=embed erreichbar ist.
Dieses Labor vergleicht zwei MapPress-Versionen:
| Service | MapPress version | Zweck | URL |
|---|---|---|---|
| vuln | 2.97.3 | Angreifbares Vergleichsziel | http://localhost:8081 |
| patched | 2.97.4 | Gepatchtes Vergleichsziel | http://localhost:8082 |
Der in diesem lokalen Labor demonstrierte Validierungspfad ist:```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)
Das anfällige Ziel verwendet diese manuelle Browser-URL:```text
http://localhost:8081/?mappress=embed&name=cve56011%20onclick%3Dalert%281%29&width=400px&height=300px&zoom=5¢er=0%2C0
Erwartetes anfälliges Ergebnis:```text Click on the rendered MapPress component → alert(1) pops up
Das gepatchte Ziel verwendet denselben Payload gegen 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
Erwartetes gepatchtes Ergebnis:```text Click on the rendered MapPress component → no alert appears
Dieses Labor verwendet bewusst ausschließlich manuelle Browser-Validierung. Es enthält kein PoC-Skript, keine Browserautomatisierung, keinen Diebstahl von Anmeldedaten, keine externen Rückrufe, keine Schadsoftware, keine Persistenz, keine Post-Exploitation-Aktivitäten oder Angriffe auf externe Systeme.
## Verifizierte Fakten
| Behauptung | Belege | So überprüfen Sie es in diesem Labor |
| ------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
| CVE-2026-56011 betrifft MapPress Maps für WordPress. | Öffentliche Sicherheitshinweise identifizieren das betroffene WordPress-Plugin als MapPress Maps für WordPress. | Überprüfen Sie den Abschnitt „Referenzen“ und inspizieren Sie das in beiden Docker-Zielen installierte Plugin. |
| Die anfällige Vergleichsversion in diesem Labor ist MapPress 2.97.3. | Der `vuln`-Dienst erstellt das Plugin mit `MAPPRESS_VERSION: 2.97.3`. | Überprüfen Sie `docker-compose.yml` und `vuln/Dockerfile`. |
| Die gepatchte Vergleichsversion in diesem Labor ist MapPress 2.97.4. | Der `patched`-Dienst erstellt das Plugin mit `MAPPRESS_VERSION: 2.97.4`. | Überprüfen Sie `docker-compose.yml` und `patched/Dockerfile`. |
| MapPress 2.97.4 führte den relevanten iframe-Escaping-Fix ein. | Das offizielle Plugin-Änderungsprotokoll für 2.97.4 sagt: `Added: escape in iframe`. | Überprüfen Sie das offizielle WordPress-Plugin-Änderungsprotokoll und vergleichen Sie den anfälligen und gepatchten Quellcode. |
| Der anfällige Quellcode rendert den Karten-Namen in die Webkomponente `id` ohne Anführungszeichen. | In 2.97.3 rendert `mappress_map.php` `<mappress-map id={$name} ...>`. | Vergleichen Sie den Quellcode von 2.97.3 mit dem von 2.97.4. |
| Der gepatchte Quellcode setzt den `id`-Wert in Anführungszeichen und escapet ihn. | In 2.97.4 rendert `mappress_map.php` `id="` mit `esc_attr($name)`. | Vergleichen Sie den Patch-Diff zwischen 2.97.3 und 2.97.4. |
| Der iframe-Pfad ist ohne Authentifizierung erreichbar. | MapPress registriert `template_redirect`, wenn `$_GET['mappress']` vorhanden ist. | Fordern Sie `/?mappress=embed...` von einem Browser an, ohne sich anzumelden. |
| Der iframe-Pfad liest Kartenattribute aus der Anfrage. | `template_redirect()` bildet `$_GET` auf Kartenargumente ab und ruft den iframe-Renderer auf. | Überprüfen Sie `mappress.php` und reproduzieren Sie die manuelle URL. |
| Das anfällige Ziel ermöglicht Attributinjektion über `name`. | Der manipulierte `name`-Wert kann aus dem nicht in Anführungszeichen gesetzten `id`-Attribut ausbrechen und zu `onclick=alert(1)` werden. | Öffnen Sie die anfällige manuelle URL und klicken Sie auf die gerenderte MapPress-Komponente. |
| Das gepatchte Ziel blockiert das getestete Attributinjektionsverhalten. | Die gepatchte Ausgabe behält die vollständige Nutzlast innerhalb des in Anführungszeichen gesetzten `id`-Attributs. | Öffnen Sie die gepatchte manuelle URL und klicken Sie auf die gerenderte MapPress-Komponente. |
## Annahmen und Unbekanntes
Dieses Labor verwendet MapPress 2.97.3 als anfälliges Vergleichsziel, da öffentliche Sicherheitshinweise Versionen bis einschließlich 2.97.3 als betroffen identifizieren und der Quellcode-Diff in dieser Version die anfällige Darstellung des nicht in Anführungszeichen gesetzten Attributs zeigt.
Dieses Labor verwendet MapPress 2.97.4 als gepatchtes Vergleichsziel, da öffentliche Sicherheitshinweise 2.97.4 als die behobene Version identifizieren und das offizielle Änderungsprotokoll angibt, dass im iframe-Pfad Escaping hinzugefügt wurde.
Das getestete anfällige Verhalten ist der nicht authentifizierte iframe-Rendering-Pfad:```text
GET /?mappress=embed&name=<crafted-value>
Dieses Labor konzentriert sich auf die manuelle Ausführung eines harmlosen Alert-Payloads im Browser:```text name=cve56011 onclick=alert(1)
Das Labor versucht nicht, eine stored delivery chain zu beweisen. Einige öffentliche Sicherheitshinweise klassifizieren die Schwachstelle als stored XSS. Dieses Repository konzentriert sich auf die quellenbestätigte iframe-Rendering-Senke und das anfällige im Vergleich zum gepatchten Verhalten, das lokal über die nicht authentifizierte `mappress=embed`-Route reproduziert werden kann.
Das Labor demonstriert nicht:
* gespeicherte Payload-Persistenz,
* WordPress-Kontokompromittierung,
* Diebstahl von Admin-Sitzungen,
* Nonce-Diebstahl,
* externe Callbacks,
* Blind-XSS-Sammlung,
* Anmeldedatendiebstahl,
* Datenbank-Dumping,
* Schadsoftware,
* Persistenz,
* oder Angriffe auf Nicht-Lab-Systeme.
Die manuelle Browser-Validierung beweist den sicherheitsrelevanten Rendering-Unterschied:```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