Werkzeug / Flask Debug
Last updated
Last updated
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)
Web uygulamalarınız, ağınız ve bulutunuz hakkında bir hacker perspektifi edinin
Gerçek iş etkisi olan kritik, istismar edilebilir güvenlik açıklarını bulun ve raporlayın. Saldırı yüzeyini haritalamak, ayrıcalıkları artırmanıza izin veren güvenlik sorunlarını bulmak ve temel kanıtları toplamak için otomatik istismarları kullanmak için 20'den fazla özel aracımızı kullanın, böylece sıkı çalışmanızı ikna edici raporlara dönüştürün.
Eğer hata ayıklama aktifse /console
erişmeyi deneyebilir ve RCE elde edebilirsiniz.
İnternette şu gibi birkaç istismar da bulunmaktadır veya metasploit'te bir tane.
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.
Bunu görmek için uygulamada bir hata sayfası zorlayın:
"console locked" senaryosuna erişim sağlanmaya çalışıldığında, konsolu kilidini açmak için bir PIN gereksinimini belirten bir mesajla karşılaşılır. Konsol PIN'ini istismar etmek için Werkzeug'ün hata ayıklama başlatma dosyasındaki PIN oluşturma algoritmasını analiz etme önerisi yapılmaktadı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 önerilmektedir.
Konsol PIN'ini istismar etmek için iki set değişken gereklidir: probably_public_bits
ve private_bits
:
probably_public_bits
username
: Flask oturumunu başlatan kullanıcıyı ifade eder.
modname
: Genellikle flask.app
olarak adlandırılır.
getattr(app, '__name__', getattr(app.__class__, '__name__'))
: Genellikle Flask olarak çözülür.
getattr(mod, '__file__', None)
: Flask dizinindeki app.py
'nin tam yolunu temsil eder (örneğin, /usr/local/lib/python3.5/dist-packages/flask/app.py
). Eğer app.py
geçerli değilse, app.pyc
denemelisiniz.
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 bulabilir, ardından /sys/class/net/<device id>/address
'den MAC adresini çıkarabilirsiniz.
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 verileri alır ve /proc/self/cgroup
'un sonundaki son satırı (/
) ile birleştirir.
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)