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

39 lines
4.7 KiB
Markdown

# Python Internal Read Gadgets
{{#include ../../banners/hacktricks-training.md}}
## Basic Information
विभिन्न कमजोरियाँ जैसे कि [**Python Format Strings**](bypass-python-sandboxes/index.html#python-format-string) या [**Class Pollution**](class-pollution-pythons-prototype-pollution.md) आपको **python आंतरिक डेटा पढ़ने की अनुमति दे सकती हैं लेकिन कोड निष्पादित करने की अनुमति नहीं देंगी**। इसलिए, एक pentester को **संवेदनशील विशेषाधिकार प्राप्त करने और कमजोरियों को बढ़ाने के लिए** इन पढ़ने की अनुमतियों का अधिकतम लाभ उठाने की आवश्यकता होगी।
### Flask - Read secret key
एक Flask एप्लिकेशन का मुख्य पृष्ठ शायद **`app`** वैश्विक ऑब्जेक्ट होगा जहाँ यह **गुप्त कॉन्फ़िगर किया गया है**
```python
app = Flask(__name__, template_folder='templates')
app.secret_key = '(:secret:)'
```
इस मामले में, आप किसी भी गैजेट का उपयोग करके इस ऑब्जेक्ट तक पहुँच सकते हैं ताकि **वैश्विक ऑब्जेक्ट्स तक पहुँच** प्राप्त की जा सके [**Python सैंडबॉक्स को बायपास करने वाले पृष्ठ**](bypass-python-sandboxes/index.html) से।
उस मामले में जहाँ **कमजोरी एक अलग पायथन फ़ाइल में है**, आपको फ़ाइलों को पार करने के लिए एक गैजेट की आवश्यकता है ताकि मुख्य फ़ाइल तक पहुँच सकें और **वैश्विक ऑब्जेक्ट `app.secret_key`** तक पहुँच सकें ताकि Flask गुप्त कुंजी को बदल सकें और इस कुंजी को जानकर [**अधिकार बढ़ा सकें**](../../network-services-pentesting/pentesting-web/flask.md#flask-unsign)।
इस तरह का एक पेलोड [इस लेख से](https://ctftime.org/writeup/36082):
```python
__init__.__globals__.__loader__.__init__.__globals__.sys.modules.__main__.app.secret_key
```
इस payload का उपयोग करें **`app.secret_key`** को बदलने के लिए (आपके ऐप में नाम अलग हो सकता है) ताकि आप नए और अधिक विशेषाधिकार प्राप्त flask कुकीज़ पर हस्ताक्षर कर सकें।
### Werkzeug - machine_id और node uuid
[**इस लेख से इन payload का उपयोग करते हुए**](https://vozec.fr/writeups/tweedle-dum-dee/) आप **machine_id** और **uuid** node तक पहुँच सकते हैं, जो कि **मुख्य रहस्य** हैं जिनकी आपको [**Werkzeug पिन उत्पन्न करने के लिए**](../../network-services-pentesting/pentesting-web/werkzeug.md) आवश्यकता है, जिसे आप `/console` में python कंसोल तक पहुँचने के लिए उपयोग कर सकते हैं यदि **debug mode सक्षम है:**
```python
{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}}