Python Internal Read Gadgets
Reading time: 3 minutes
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- Bize katılın 💬 Discord grubuna veya telegram grubuna veya bizi takip edin Twitter'da 🐦 @hacktricks_live.
- Hacking ipuçlarını paylaşın, HackTricks ve HackTricks Cloud github reposuna PR göndererek.
Temel Bilgiler
Python Format Strings veya Class Pollution gibi farklı güvenlik açıkları, python iç verilerini okumanıza izin verebilir ancak kod çalıştırmanıza izin vermez. Bu nedenle, bir pentester bu okuma izinlerini en iyi şekilde kullanarak hassas ayrıcalıkları elde etmeli ve güvenlik açığını yükseltmelidir.
Flask - Gizli anahtarı oku
Bir Flask uygulamasının ana sayfasında muhtemelen bu gizli anahtarın yapılandırıldığı app
global nesnesi bulunacaktır.
app = Flask(__name__, template_folder='templates')
app.secret_key = '(:secret:)'
Bu durumda, bu nesneye erişmek için herhangi bir gadget kullanarak global nesnelere erişmek mümkündür Python sandbox'larını atlama sayfasından.
Açığın farklı bir python dosyasında olduğu durumda, ana dosyaya ulaşmak için dosyaları geçmek üzere bir gadget'a ihtiyacınız var, böylece global nesne app.secret_key
'e erişebilir ve Flask gizli anahtarını değiştirebilir ve bu anahtarı bilerek [yetki yükseltme] yapabilirsiniz (../../network-services-pentesting/pentesting-web/flask.md#flask-unsign).
Bu yazıdan şu şekilde bir payload:
__init__.__globals__.__loader__.__init__.__globals__.sys.modules.__main__.app.secret_key
Bu yükü kullanarak app.secret_key
'i (uygulamanızdaki adı farklı olabilir) değiştirin, böylece yeni ve daha fazla yetkiye sahip flask çerezlerini imzalayabilirsiniz.
Werkzeug - machine_id ve node uuid
Bu yazıdan bu yükleri kullanarak machine_id ve uuid node'una erişebileceksiniz, bu da Werkzeug pin'ini oluşturmak için ihtiyaç duyduğunuz ana sırlardır. Eğer hata ayıklama modu etkinse, /console
'da python konsoluna erişmek için kullanabilirsiniz:
{ua.__class__.__init__.__globals__[t].sys.modules[werkzeug.debug]._machine_id}
{ua.__class__.__init__.__globals__[t].sys.modules[werkzeug.debug].uuid._node}
warning
Dikkat edin ki, web sayfasında bazı hatalar oluşturarak app.py dosyasının sunucunun yerel yolunu alabilirsiniz.
Eğer zafiyet farklı bir python dosyasındaysa, ana python dosyasından nesnelere erişmek için önceki Flask numarasını kontrol edin.
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- Bize katılın 💬 Discord grubuna veya telegram grubuna veya bizi takip edin Twitter'da 🐦 @hacktricks_live.
- Hacking ipuçlarını paylaşın, HackTricks ve HackTricks Cloud github reposuna PR göndererek.