Werkzeug / Flask Debug
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
अपने वेब ऐप्स, नेटवर्क और क्लाउड पर हैकर का दृष्टिकोण प्राप्त करें
महत्वपूर्ण, शोषण योग्य कमजोरियों को खोजें और रिपोर्ट करें जिनका वास्तविक व्यावसायिक प्रभाव है। हमारे 20+ कस्टम टूल का उपयोग करके हमले की सतह का मानचित्रण करें, सुरक्षा मुद्दों को खोजें जो आपको विशेषाधिकार बढ़ाने की अनुमति देते हैं, और आवश्यक सबूत इकट्ठा करने के लिए स्वचालित शोषण का उपयोग करें, जिससे आपका कठिन काम प्रभावशाली रिपोर्टों में बदल जाए।
यदि डिबग सक्रिय है तो आप /console
तक पहुँचने और RCE प्राप्त करने का प्रयास कर सकते हैं।
इंटरनेट पर कई एक्सप्लॉइट्स भी हैं जैसे यह या मेटास्प्लॉट में एक।
कुछ अवसरों पर /console
एंडपॉइंट एक पिन द्वारा सुरक्षित होगा। यदि आपके पास फाइल ट्रैवर्सल वल्नरेबिलिटी है, तो आप उस पिन को उत्पन्न करने के लिए सभी आवश्यक जानकारी लीक कर सकते हैं।
ऐप में एक डिबग त्रुटि पृष्ठ को मजबूर करें ताकि इसे देखा जा सके:
एक संदेश "कंसोल लॉक" परिदृश्य के बारे में तब मिलता है जब Werkzeug के डिबग इंटरफेस तक पहुँचने का प्रयास किया जाता है, जो कंसोल को अनलॉक करने के लिए एक PIN की आवश्यकता को इंगित करता है। सुझाव दिया गया है कि कंसोल PIN का शोषण Werkzeug के डिबग प्रारंभिक फ़ाइल (__init__.py
) में PIN जनरेशन एल्गोरिदम का विश्लेषण करके किया जाए। PIN जनरेशन तंत्र का अध्ययन Werkzeug स्रोत कोड भंडार से किया जा सकता है, हालांकि संभावित संस्करण भिन्नताओं के कारण वास्तविक सर्वर कोड को फ़ाइल ट्रैवर्सल भेद्यता के माध्यम से प्राप्त करने की सलाह दी जाती है।
कंसोल PIN का शोषण करने के लिए, दो सेट के वेरिएबल्स, probably_public_bits
और private_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
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
की पहली पंक्ति के साथ अंतिम स्लैश (/
) के बाद जोड़ता है।
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE) GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)