
ERPNEXT v15.67.0 के ब्लॉग पोस्ट सुविधा में एक संग्रहीत क्रॉस-साइट स्क्रिप्टिंग (XSS) भेद्यता हमलावरों को कंटेंट फ़ील्ड में इंजेक्ट किए गए विशेष रूप से तैयार पेलोड के माध्यम से मनमानी वेब स्क्रिप्ट या HTML निष्पादित करने की अनुमति देती है।
📌 सारांश
ERPNext (v15.67.0) / Frappe (v15.72.4) के ब्लॉग मॉड्यूल में एक संग्रहीत क्रॉस-साइट स्क्रिप्टिंग (XSS) भेद्यता मौजूद है। एक प्रमाणित उपयोगकर्ता जो ब्लॉग पोस्ट बना या संपादित कर सकता है, content फ़ील्ड में निर्मित HTML/JavaScript इंजेक्ट कर सकता है। वह पेलोड संग्रहीत हो जाता है और ब्लॉग-पोस्ट पृष्ठ देखने वाले किसी भी उपयोगकर्ता के ब्राउज़र में निष्पादित हो जाता है, जिससे मनमाना स्क्रिप्ट निष्पादन, सूचना प्रकटीकरण, सेवा से वंचित करना (denial of service) और अन्य क्लाइंट-साइड हमले संभव होते हैं। व्यवस्थापक (admin) विशेषाधिकार कड़ाई से आवश्यक नहीं हैं — ब्लॉग पोस्ट बनाने/संपादित करने की अनुमति वाला कोई भी उपयोगकर्ता इसका शोषण कर सकता है।
भेद्यता प्रकार: संग्रहीत क्रॉस-साइट स्क्रिप्टिंग (CWE‑79)
प्रभावित उत्पाद: ERPNext / Frappe
प्रभावित संस्करण (रिपोर्ट किए गए):
प्रभावित घटक: ERPNext ब्लॉग मॉड्यूल
रूट: /app/blog-post/<blog_name>
भेद्य फ़ील्ड: content (ब्लॉग पोस्ट निर्माण / संपादन फ़ॉर्म)
हमले का प्रकार: दूरस्थ (प्रमाणीकरण और ब्लॉग-पोस्ट निर्माण विशेषाधिकार की आवश्यकता)
गंभीरता: उच्च (क्लाइंट-साइड कोड निष्पादन, डेटा चोरी, सत्र अपहरण की संभावना)
अनुमानित CVSS v3.1 स्कोर: 7.5 (उच्च) — अनुमान; अधिकृत निर्धारक को अंतिम स्कोर की गणना करनी चाहिए
स्थिति: ठीक नहीं किया गया (रिपोर्ट के अनुसार)
खोजकर्ता: Mohammed Aloli
खोज की तारीख: निर्दिष्ट नहीं
CVE ID: CVE-2025-56379
केवल अधिकृत / प्रयोगशाला वातावरण में परीक्षण करें। उन प्रणालियों के विरुद्ध न चलाएं जिनके स्वामी आप नहीं हैं या जिनके परीक्षण की स्पष्ट अनुमति आपके पास नहीं है।
पुनरुत्पादन के चरण
लक्षित ERPNext इंस्टेंस में ब्लॉग पोस्ट बनाने/संपादित करने की अनुमति वाले उपयोगकर्ता के रूप में प्रमाणित करें।
ब्लॉग के लिए ब्लॉग-पोस्ट निर्माण/संपादन रूट पर जाएं, उदाहरण के लिए:
/app/blog-post/<blog_name>
content फ़ील्ड में पेलोड डालें और पोस्ट सहेजें:
ब्लॉग-पोस्ट पृष्ठ (/app/blog-post/<blog_name>) को किसी अन्य उपयोगकर्ता के रूप में (या उसी उपयोगकर्ता के रूप में एक नए ब्राउज़र में) खोलें। पेलोड दर्शक के ब्राउज़र में निष्पादित होता है (यहाँ, alert("xss"))।
नोट: PoC एक साधारण onerror अलर्ट का उपयोग करता है। वास्तविक हमले कुकीज़ चुरा सकते हैं, पीड़ित की ओर से कार्रवाई कर सकते हैं, या दूरस्थ स्क्रिप्ट लोड कर सकते हैं (CSP और कुकी फ़्लैग के अधीन)।
एक हमलावर जो ब्लॉग पोस्ट बना या संपादित कर सकता है, content फ़ील्ड में एक दुर्भावनापूर्ण स्क्रिप्ट संग्रहीत करता है। ब्लॉग-पोस्ट पृष्ठ पर जाने वाला कोई भी उपयोगकर्ता — व्यवस्थापकों सहित — अपने ब्राउज़र संदर्भ में हमलावर की स्क्रिप्ट निष्पादित करेगा। परिणामों में सत्र चोरी (यदि कुकीज़ HttpOnly नहीं हैं), पीड़ित के सत्र में जबरन कार्रवाई, उन पृष्ठों से डेटा का बहिर्गमन जिन तक हमलावर पहुंच सकता है, UI रिड्रेस हमले, और क्लाइंट-साइड घटकों का संभावित DoS शामिल हैं।
content HTML को सैनिटाइज़ करें और/या आउटपुट पर एस्केप करें, एक सुरक्षित HTML सैनिटाइज़र का उपयोग करके जो खतरनाक टैग और विशेषताओं को हटा देता है (on* विशेषताएँ, javascript: URI, <script>, `` आदि हटाएं)। अच्छी तरह से अनुरक्षित लाइब्रेरीज़ को प्राथमिकता दें।<p>, <b>, <i>, <ul>, <li>, सख्त href सत्यापन के साथ <a href>)। इनलाइन इवेंट हैंडलर अस्वीकार करें।'unsafe-inline' से बचें, जहाँ आवश्यक हो nonce/hash-आधारित स्क्रिप्ट अनुमतियों का उपयोग करें)।https://github.com/frappe/erpnexthttps://github.com/frappe/frappehttps://cheatsheetseries.owasp.org/cheatsheets/Cross_Site_Scripting_Prevention_Cheat_Sheet.htmlलेखक : Mohammed Aloli
यह रिपोर्ट केवल रक्षात्मक, उपचारात्मक और जागरूकता उद्देश्यों के लिए है। उन प्रणालियों के विरुद्ध इस भेद्यता का शोषण करने का प्रयास न करें जिनके स्वामी आप नहीं हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट प्राधिकरण नहीं है। यदि आप ERPNext/Frappe संचालित करते हैं, तो सुधार लागू करें, सैनिटाइज़ेशन लागू करें, और उपरोक्त शमन मार्गदर्शन का पालन करें।
HttpOnly हैं और कुकी चोरी और CSRF-जैसे जोखिमों को कम करने के लिए उचित SameSite विशेषताएँ निर्धारित करें।