
CVE-2022-45782 के लिए प्रूफ-ऑफ-कॉन्सेप्ट: पूर्वानुमान योग्य dotCMS पासवर्ड-रीसेट टोकन, टोकन क्रैकर और पूर्ण एक्सप्लॉइट श्रृंखला के साथ।
यह रिपॉजिटरी CVE-2022-45782 के लिए एक प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट है, जो dotCMS में एक कमजोरी है जहाँ पासवर्ड-रीसेट टोकन गैर-क्रिप्टोग्राफिक विधि RandomStringUtils.randomAlphanumeric() का उपयोग करके उत्पन्न होते हैं। चूँकि यह टोकन पूर्वानुमेय है, एक हमलावर इसे ब्रूट-फोर्स या व्युत्पन्न कर सकता है और किसी व्यवस्थापक खाते का पासवर्ड रीसेट कर सकता है।
यह PoC पूरी एक्सप्लॉइट श्रृंखला प्रदर्शित करता है:
यह रिपॉजिटरी कमजोर टोकन-जनरेशन फ़ंक्शन के लिए क्रैकर युक्त एक Git सबमॉड्यूल का उपयोग करती है। यह क्रैकर का C कार्यान्वयन है जिसका उपयोग RandomStringUtils.randomAlphanumeric() द्वारा उत्पन्न पासवर्ड-रीसेट टोकनों को व्युत्पन्न/अनुमान लगाने के लिए किया जाता है।
सबमॉड्यूल के साथ क्लोन करें:
git clone https://github.com/alex91ar/randomstringutils.git
PoC को काम करने के लिए dotCMS को रीसेट ईमेल भेजने होंगे।
docker-compose.yml संपादित करें:
DOT_MAIL_SMTP_USER: "<smtp_email>"
DOT_MAIL_SMTP_PASSWORD: "<smtp_pass>"
(यदि Gmail उपयोग कर रहे हैं: ऐप पासवर्ड सक्षम करें और जनरेट किया गया 16-अक्षर वाला ऐप पासवर्ड उपयोग करें।)
docker compose up
यदि यह विफल होता है (पहली बार स्टार्टअप पर सामान्य), तो इसे फिर से चलाएँ।
लॉगिन पृष्ठ: https://localhost:8443/dotAdmin/#/public/login
dotCMS के अंदर:
इन दोनों खातों का उपयोग PoC द्वारा किया जाएगा।
randomstringutils dotCMS के असुरक्षित टोकन के लिए ब्रूट-फोर्सर/क्रैकर है।
इसे इस प्रकार संकलित करें:
cd randomstringutils
gcc -lpthread -O3 -o randomutils randomutils.c
यह तेज़ टोकन-क्रैकर बाइनरी उत्पन्न करता है।
python3 poc.py
सफल होने पर, स्क्रिप्ट एडमिन खाते को रीसेट करने के लिए क्रैक किए गए एडमिन टोकन का उपयोग करती है।
यह रिपॉजिटरी केवल शैक्षिक, अकादमिक और अधिकृत सुरक्षा परीक्षण के लिए है। इस एक्सप्लॉइट का उपयोग उन प्रणालियों के विरुद्ध न करें जिनके स्वामी आप नहीं हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट अनुमति नहीं है।