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

5 KiB
Raw Blame History

Python İçsel Okuma Araçları

{% hint style="success" %} AWS Hacking'i öğrenin ve uygulayın:HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE)
GCP Hacking'i öğrenin ve uygulayın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)

HackTricks'i Destekleyin
{% endhint %}

Temel Bilgiler

Python Format Strings veya Sınıf Kirliliği gibi farklı zafiyetler size Python iç verilerini okuma imkanı sağlayabilir ancak kodu yürütmenize izin vermeyebilir. Bu nedenle, bir pentester'ın bu okuma izinlerinden en iyi şekilde yararlanarak duyarlı ayrıcalıkları elde etmesi ve zafiyeti yükseltmesi gerekecektir.

Flask - Gizli anahtarı okuma

Bir Flask uygulamasının ana sayfasında muhtemelen app global nesnesi bulunur ve bu nesne üzerinde gizli anahtar yapılandırılmış olabilir.

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

Bu durumda, bu nesneye erişmek için sadece herhangi bir araca sahip olmak mümkündür ve Python kum havuzlarını atlatma sayfasından global nesnelere erişmek mümkündür.

Zafiyet farklı bir python dosyasında olduğunda, ana dosyaya ulaşmak için dosyalar arasında gezinmek için bir araca ihtiyacınız vardır ve Flask gizli anahtarını değiştirmek ve bu anahtarı bilerek ayrıcalıkları yükseltmek için global nesne app.secret_key'e erişmek gerekir.

Bu yazıdan bir payload gibi:

{% code overflow="wrap" %}

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

{% endcode %}

Bu payload'ı kullanarak app.secret_key'i (uygulamanızdaki ad farklı olabilir) değiştirin ve yeni ve daha fazla ayrıcalıklı flask çerezlerini imzalayabilin.

Werkzeug - machine_id ve node uuid

Bu yazıdan bu payload'ı kullanarak machine_id ve uuid düğmesine erişebilecek ve Werkzeug pinini oluşturmak için gereken ana sırlara erişebileceksiniz. Bu pin'i kullanarak /console içinde python konsoluna erişebilirsiniz eğer hata ayıklama modu etkinse:

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

{% hint style="warning" %} Sunucunun yerel yolunu app.py dosyasına ulaşmak için web sayfasında bazı hatalar oluşturarak yolunuzu alabilirsiniz. {% endhint %}

Eğer zafiyet farklı bir python dosyasında ise, ana python dosyasından nesnelere erişmek için önceki Flask hilesini kontrol edin.

{% hint style="success" %} AWS Hacking'i öğrenin ve uygulayın: HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE)
GCP Hacking'i öğrenin ve uygulayın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)

**HackTricks'i Destekleyin**
{% endhint %}