Werkzeug / Flask Debug
कमजोरी मूल्यांकन और पेनटेस्टिंग के लिए तुरंत उपलब्ध सेटअप। कहीं से भी 20+ उपकरणों और सुविधाओं के साथ एक पूर्ण पेंटेस्ट चलाएँ जो पुनः खोज से रिपोर्टिंग तक जाते हैं। हम पेंटेस्टर्स का स्थान नहीं लेते - हम कस्टम उपकरण, पहचान और शोषण मॉड्यूल विकसित करते हैं ताकि उन्हें गहराई से खुदाई करने, शेल पॉप करने और मज़े करने के लिए कुछ समय वापस मिल सके।
Console RCE
यदि डिबग सक्रिय है तो आप /console
तक पहुँचने और RCE प्राप्त करने का प्रयास कर सकते हैं।
इंटरनेट पर कई एक्सप्लॉइट्स भी हैं जैसे यह या मेटास्प्लॉट में एक।
पिन सुरक्षित - पथ यात्रा
कुछ अवसरों पर /console
एंडपॉइंट एक पिन द्वारा सुरक्षित होगा। यदि आपके पास फाइल ट्रैवर्सल वल्नरेबिलिटी है, तो आप उस पिन को उत्पन्न करने के लिए सभी आवश्यक जानकारी लीक कर सकते हैं।
Werkzeug कंसोल पिन एक्सप्लॉइट
ऐप में एक डिबग त्रुटि पृष्ठ को मजबूर करें ताकि इसे देखा जा सके:
एक संदेश "कंसोल लॉक" परिदृश्य के बारे में तब मिलता है जब Werkzeug के डिबग इंटरफेस तक पहुँचने का प्रयास किया जाता है, जो कंसोल को अनलॉक करने के लिए एक PIN की आवश्यकता को इंगित करता है। सुझाव दिया गया है कि कंसोल PIN का शोषण Werkzeug के डिबग प्रारंभिक फ़ाइल (__init__.py
) में PIN जनरेशन एल्गोरिदम का विश्लेषण करके किया जाए। PIN जनरेशन तंत्र का अध्ययन Werkzeug स्रोत कोड भंडार से किया जा सकता है, हालांकि संभावित संस्करण भिन्नताओं के कारण वास्तविक सर्वर कोड को फ़ाइल ट्रैवर्सल भेद्यता के माध्यम से प्राप्त करने की सलाह दी जाती है।
कंसोल PIN का शोषण करने के लिए, दो सेट के वेरिएबल्स, probably_public_bits
और private_bits
, की आवश्यकता होती है:
probably_public_bits
probably_public_bits
username
: उस उपयोगकर्ता को संदर्भित करता है जिसने Flask सत्र शुरू किया।modname
: आमतौर परflask.app
के रूप में नामित होता है।getattr(app, '__name__', getattr(app.__class__, '__name__'))
: सामान्यतः Flask में हल होता है।getattr(mod, '__file__', None)
: Flask निर्देशिका के भीतरapp.py
के लिए पूर्ण पथ का प्रतिनिधित्व करता है (जैसे,/usr/local/lib/python3.5/dist-packages/flask/app.py
)। यदिapp.py
लागू नहीं है, तोapp.pyc
का प्रयास करें।
private_bits
private_bits
uuid.getnode()
: वर्तमान मशीन का MAC पता प्राप्त करता है, जिसमेंstr(uuid.getnode())
इसे दशमलव प्रारूप में अनुवादित करता है।सर्वर के MAC पते का निर्धारण करने के लिए, एक को ऐप द्वारा उपयोग किए जा रहे सक्रिय नेटवर्क इंटरफेस की पहचान करनी होगी (जैसे,
ens3
)। यदि अनिश्चितता हो, तो/proc/net/arp
लीक करें ताकि डिवाइस ID मिल सके, फिर/sys/class/net/<device id>/address
से MAC पता निकालें।एक हेक्साडेसिमल MAC पते को दशमलव में परिवर्तित करने के लिए नीचे दिखाए अनुसार किया जा सकता है:
get_machine_id()
:/etc/machine-id
या/proc/sys/kernel/random/boot_id
से डेटा को/proc/self/cgroup
की पहली पंक्ति के साथ अंतिम स्लैश (/
) के बाद जोड़ता है।
Last updated