Werkzeug / Flask Debug
Zafiyet değerlendirmesi ve penetrasyon testi için anında kullanılabilir kurulum. 20'den fazla araç ve özellik ile her yerden tam bir pentest gerçekleştirin; keşiften raporlamaya kadar. Biz pentester'ların yerini almıyoruz - onlara daha derinlemesine inceleme, shell açma ve eğlenme fırsatı vermek için özel araçlar, tespit ve istismar modülleri geliştiriyoruz.
Konsol RCE
Eğer debug aktifse /console
erişmeyi deneyebilir ve RCE elde edebilirsiniz.
Ayrıca internette şu gibi birkaç istismar bulunmaktadır veya metasploit'te bir tane.
Pin Koruması - Yol Traversali
Bazı durumlarda /console
uç noktası bir pin ile korunacaktır. Eğer bir dosya traversali açığı varsa, o pini oluşturmak için gerekli tüm bilgileri sızdırabilirsiniz.
Werkzeug Konsol PIN İstismarı
Bunu görmek için uygulamada bir hata sayfası zorlayın:
Bir "konsol kilitli" senaryosuyla ilgili bir mesaj, Werkzeug'un hata ayıklama arayüzüne erişmeye çalışırken karşılaşılır ve konsolu açmak için bir PIN gereksinimini belirtir. Konsol PIN'ini istismar etmek için, Werkzeug'un hata ayıklama başlatma dosyasındaki PIN oluşturma algoritmasını analiz etme önerisi yapılır (__init__.py
). PIN oluşturma mekanizması, Werkzeug kaynak kodu deposu üzerinden incelenebilir, ancak potansiyel sürüm farklılıkları nedeniyle gerçek sunucu kodunun bir dosya geçiş açığı aracılığıyla temin edilmesi tavsiye edilir.
Konsol PIN'ini istismar etmek için iki set değişken gereklidir: probably_public_bits
ve private_bits
:
probably_public_bits
probably_public_bits
username
: Flask oturumunu başlatan kullanıcıyı ifade eder.modname
: Genellikleflask.app
olarak adlandırılır.getattr(app, '__name__', getattr(app.__class__, '__name__'))
: Genellikle Flask olarak çözülür.getattr(mod, '__file__', None)
: Flask dizinindekiapp.py
'nin tam yolunu temsil eder (örneğin,/usr/local/lib/python3.5/dist-packages/flask/app.py
). Eğerapp.py
geçerli değilse,app.pyc
denemek gerekir.
private_bits
private_bits
uuid.getnode()
: Mevcut makinenin MAC adresini alır,str(uuid.getnode())
bunu ondalık formata çevirir.Sunucunun MAC adresini belirlemek için, uygulamanın kullandığı aktif ağ arayüzünü tanımlamak gerekir (örneğin,
ens3
). Belirsizlik durumunda,/proc/net/arp
sızıntısı yaparak cihaz kimliğini bulmak, ardından/sys/class/net/<device id>/address
'den MAC adresini çıkarmak gerekir.Onaltılık bir MAC adresinin ondalık formata dönüştürülmesi aşağıda gösterildiği gibi yapılabilir:
get_machine_id()
:/etc/machine-id
veya/proc/sys/kernel/random/boot_id
'den alınan verileri, son eğik çizgiden (/
) sonra/proc/self/cgroup
'un ilk satırıyla birleştirir.
Last updated