CVE-2026-87902: WordPress-LFI wird Stunden nach dem Patch aktiv ausgenutzt

Was geschah

Zwei Tage nach Click2Shell — der Kette, die WordPress 7.1.1 am 17. September schloss — kam das nächste Update: Version 7.1.2 (22. September) patched CVE-2026-87902 (CVSS 9.2), eine Local File Inclusion bis hin zu Remote Code Execution. Und diesmal dauerte es keine Tage, bis Angreifer zuschlugen: Previdian registrierte den ersten Ausnutzungsversuch am 22. September um 11:49 UTC — am selben Tag, an dem der Patch erschien. Patchstack bestätigte die Beobachtung: Die Aktivität wandelte sich schnell von Reconnaissance gegen harmlose Core-Dateien zu aktiver Ausnutzung mit pearcmd.php.

Bis zum 23. September hatte Previdian 68 Exploitation-Versuche in seinen Honeypots gezählt, von IP-Adressen in New Jersey (USA) und Indonesien.


Die Lücke: get_page_template() liest überall

WordPress wählt Seitentemplates über die Funktion get_page_template(). CVE-2026-87902 erlaubt einem unauthentifizierten Angreifer, diese Auswahl so zu beeinflussen, dass eine beliebige lesbare lokale .php-Datei außerhalb der Theme-Verzeichnisse eingebunden wird. Wenn die Server-Umgebung und das aktive Theme die richtigen Vorbedingungen erfüllen, wird daraus RCE.

Die beiden Voraussetzungen:

  • Das aktive Child- oder Parent-Theme enthält ein Verzeichnis auf oberster Ebene, dessen Name mit page- beginnt (z.B. page-templates).
  • Eine lesbare .php-Datei existiert auf dem Server und ist für den Webserver-Account zugänglich (z.B. /usr/local/lib/php/pearcmd.php).

Beide Bedingungen sind nicht exotisch — page-templates ist ein gängiges Theme-Verzeichnis, und pearcmd.php liegt auf vielen PHP-Standardinstallationen genau dort.


Der Angriff in der Wildbahn

Die beobachteten Requests folgen einem klaren Muster:

  1. pearcmd.php einbinden — die PEAR-Kommandozeile, die auf vielen Servern installiert und lesbar ist.
  2. Datei nach /tmp/ schreiben — über die PEAR-Kommandozeile eine PHP-Datei auf die Platte legen.
  3. Upload-Script von GitHub ziehen — die geschriebene Datei lädt raw.githubusercontent.com/MrG3P5/web-shell/refs/heads/main/uploader.php nach und includiert sie. Danach hat der Angreifer eine Webshell.

Beobachtete Dateinamen auf kompromittierten Systemen:

  • wp-pear-rce-flag.php
  • poc87902.php
  • luci_<random>.php
  • zeta_<random>.php

IP-Adressen aus den Angriffen:

  • 104.194.9.227 (New Jersey, USA — erster beobachteter Versuch)
  • 43.250.53.42
  • 180.251.159.243
  • 195.178.110.247
  • 107.189.14.87
  • 45.61.184.170
  • 92.246.130.76

Update (25. September): Die Angriffswelle läuft an

heise online berichtet auf Basis der Patchstack-Analyse: Der Traffic auf die Schwachstelle ist seit dem ersten Abend auf mehr als das Zehnfache angestiegen. Die Angriffe verlaufen inzwischen mehrstufig und routiniert:

  1. Recon: Inklusionsversuche auf gewöhnliche Core-Dateien — die Server-Antwort zeigt den Angreifern, ob die Instanz verwundbar ist.
  2. Zielsuche: Zugriff auf pearcmd.php, in drei unterschiedlichen Verzeichnissen auf dem Host.
  3. Schreiben: Über den config-create-Befehl von pearcmd.php geht es vom lesenden zum schreibenden Zugriff — eigene PHP-Inhalte landen in beliebigen Dateien.

Die bislang beobachteten Dateien in /tmp und /var/tmp sind dabei eher Beleg der Codeausführung als eine persistente Backdoor — /tmp ist üblicherweise nicht aus dem Netz erreichbar. Kompromittiert ist der Host trotzdem vollständig: Auf demselben Weg lassen sich Dateien auch an aus dem Netz erreichbaren Orten ablegen.

Ernsthaft verschärft hat sich die Lage durch öffentlich kursierenden Proof-of-Concept-Code und eine Vorlage für den Schwachstellenscanner Nuclei — entsprechende User-Agents sind in den Angriffen zu sehen. Die Einbruchsschwelle liegt damit bei praktisch null.


Zusammenhang mit Click2Shell

Am 17. September hatte WordPress 7.1.1 veröffentlicht — elf Sicherheitslücken, darunter Click2Shell, eine Kette aus Selektor-Injektion und erzwungener Theme-Installation, die aus einem einzigen Admin-Klick eine vollständige Übernahme macht. Fünf Tage später folgte 7.1.2 für CVE-2026-87902. Beide Lücken sind unauthentifiziert, beide führen zu RCE, beide betreffen Core — aber die Angriffsvektoren sind grundverschieden: Click2Shell braucht einen eingeloggten Administrator, der einen präparierten Link besucht (Social Engineering oder XSS als Einfallstor). CVE-2026-87902 braucht keine Interaktion — es reicht ein Server, auf dem die Vorbedingungen erfüllt sind, und eine lesbare pearcmd.php.

Zusammen bilden sie ein Bild der aktuellen WordPress-Angriffsfläche: Auf der einen Seite das Backend mit seinen Interaktion-Abhängigkeiten (Admin-Klick, Theme-Installation, Customizer), auf der anderen der Template-Resolver, der mit lokalen Dateien operiert, als wäre der Dateisystem-Pfad vertrauenswürdiger Input. Zwei unterschiedliche Codestellen, zwei unterschiedliche Vorbedingungen, ein gemeinsames Ergebnis: PHP-Code unter dem Server-Account.


Wie ernst ist es?

Ryan Dewhurst (Previdian) ordnet es ein: Die Vorbedingungen machen Massen-Kompromittierung weniger wahrscheinlich als bei einer Lücke ohne Einschränkungen. WordPress hat Auto-Updates standardmäßig aktiviert — viele Instanzen sind also bereits gepatched. Aber: Honeypots zeigen, dass die Ausnutzung sofort nach Disclosure beginnt. Wer nicht auto-updated oder die Vorbedingungen erfüllt, ist sofort Ziel.

Patchen auf 7.1.2 (oder 7.0.6, 6.9.9, 6.8.10 — betroffen sind alle Versionen von 4.7.0 bis einschließlich 7.1.1; für alle älteren Zweige gibt es Backports bis hinunter zu 4.7.37). Danach auf die typischen Spuren prüfen: unbekannte .php-Dateien in /tmp/, /var/tmp/ und Webroot; Einträge in Access-Logs gegen die obigen IPs; pearcmd.php-Aufrufe, die nicht von legitimen PEAR-Operationen stammen.


Quellen