hacktricks/src/generic-methodologies-and-resources/python/python-internal-read-gadgets.md

4.7 KiB

Python Internal Read Gadgets

{{#include ../../banners/hacktricks-training.md}}

Basic Information

विभिन्न कमजोरियाँ जैसे कि Python Format Strings या Class Pollution आपको python आंतरिक डेटा पढ़ने की अनुमति दे सकती हैं लेकिन कोड निष्पादित करने की अनुमति नहीं देंगी। इसलिए, एक pentester को संवेदनशील विशेषाधिकार प्राप्त करने और कमजोरियों को बढ़ाने के लिए इन पढ़ने की अनुमतियों का अधिकतम लाभ उठाने की आवश्यकता होगी।

Flask - Read secret key

एक Flask एप्लिकेशन का मुख्य पृष्ठ शायद app वैश्विक ऑब्जेक्ट होगा जहाँ यह गुप्त कॉन्फ़िगर किया गया है

app = Flask(__name__, template_folder='templates')
app.secret_key = '(:secret:)'

इस मामले में, आप किसी भी गैजेट का उपयोग करके इस ऑब्जेक्ट तक पहुँच सकते हैं ताकि वैश्विक ऑब्जेक्ट्स तक पहुँच प्राप्त की जा सके Python सैंडबॉक्स को बायपास करने वाले पृष्ठ से।

उस मामले में जहाँ कमजोरी एक अलग पायथन फ़ाइल में है, आपको फ़ाइलों को पार करने के लिए एक गैजेट की आवश्यकता है ताकि मुख्य फ़ाइल तक पहुँच सकें और वैश्विक ऑब्जेक्ट app.secret_key तक पहुँच सकें ताकि Flask गुप्त कुंजी को बदल सकें और इस कुंजी को जानकर अधिकार बढ़ा सकें

इस तरह का एक पेलोड इस लेख से:

__init__.__globals__.__loader__.__init__.__globals__.sys.modules.__main__.app.secret_key

इस payload का उपयोग करें app.secret_key को बदलने के लिए (आपके ऐप में नाम अलग हो सकता है) ताकि आप नए और अधिक विशेषाधिकार प्राप्त flask कुकीज़ पर हस्ताक्षर कर सकें।

Werkzeug - machine_id और node uuid

इस लेख से इन payload का उपयोग करते हुए आप machine_id और uuid node तक पहुँच सकते हैं, जो कि मुख्य रहस्य हैं जिनकी आपको Werkzeug पिन उत्पन्न करने के लिए आवश्यकता है, जिसे आप /console में python कंसोल तक पहुँचने के लिए उपयोग कर सकते हैं यदि debug mode सक्षम है:

{ua.__class__.__init__.__globals__[t].sys.modules[werkzeug.debug]._machine_id}
{ua.__class__.__init__.__globals__[t].sys.modules[werkzeug.debug].uuid._node}

Warning

ध्यान दें कि आप app.py के लिए सर्वर का स्थानीय पथ प्राप्त कर सकते हैं, जो वेब पृष्ठ में कुछ त्रुटि उत्पन्न करके आपको पथ देगा

यदि कमजोरियां किसी अन्य पायथन फ़ाइल में हैं, तो मुख्य पायथन फ़ाइल से वस्तुओं तक पहुँचने के लिए पिछले Flask ट्रिक की जाँच करें।

{{#include ../../banners/hacktricks-training.md}}