Werkzeug / Flask Debug
Anında kullanılabilir zafiyet değerlendirme ve penetrasyon testi kurulumu. 20'den fazla araç ve özellikle her yerden tam bir pentest çalıştırın, keşiften raporlamaya kadar uzanan. Pentester'ları değiştirmiyoruz - özel araçlar, tespit ve istismar modülleri geliştiriyoruz, böylece daha derine inmek, kabukları patlatmak ve eğlenmek için zaman kazanıyorlar.
Konsol RCE
Hata ayıklama etkinse /console
'a erişmeyi deneyebilir ve RCE elde edebilirsiniz.
İnternette bu gibi birkaç açık bulunmaktadır veya metasploit'te bir tane.
Pin Korumalı - Yol Geçişi
Bazı durumlarda /console
ucu bir pin ile korunabilir. Eğer bir dosya geçişi açığınız varsa, o pin'i oluşturmak için gerekli tüm bilgileri sızdırabilirsiniz.
Werkzeug Console PIN Sızma Açığı
Uygulamada bir hata sayfası oluşturarak bunu görüntüleyin:
Konsol Kilitli Senaryosu
Werkzeug'in hata ayıklama arayüzüne erişmeye çalışırken "konsol kilitli" senaryosuyla karşılaşılır ve konsolu kilidini açmak için bir PIN gerektiği belirtilir. Werkzeug'ın hata ayıklama başlatma dosyasındaki (__init__.py
) PIN oluşturma algoritmasını analiz ederek konsol PIN'ini sömürme önerilir. PIN oluşturma mekanizması Werkzeug kaynak kodu deposundan incelenebilir, ancak olası sürüm farklılıkları nedeniyle gerçek sunucu kodunu dosya gezintisi açığı aracılığıyla temin etmek tavsiye edilir.
Konsol PIN'ini sömürmek için probably_public_bits
ve private_bits
olmak üzere iki set değişkene ihtiyaç vardır:
probably_public_bits
probably_public_bits
username
: Flask oturumunu başlatan kullanıcıyı ifade eder.modname
: Genellikleflask.app
olarak belirlenir.getattr(app, '__name__', getattr(app.__class__, '__name__'))
: Genellikle Flask'a çözümlenir.getattr(mod, '__file__', None)
: Flask dizinindekiapp.py
'nin tam yolunu temsil eder (örneğin,/usr/local/lib/python3.5/dist-packages/flask/app.py
).app.py
uygun değilse,app.pyc
deneyin.
private_bits
private_bits
uuid.getnode()
: Geçerli makinenin MAC adresini alır vestr(uuid.getnode())
ile onu ondalık formata çevirir.**Sunucunun MAC adresini belirlemek için, uygulama tarafından kullanılan etkin ağ arabirimini tanımlamak gerekir (örneğin,
ens3
). Belirsiz durumlarda, cihaz kimliğini bulmak için/proc/net/arp
'yi sızdırın, ardından MAC adresini/sys/class/net/<cihaz kimliği>/address
'den çıkarın.Bir onaltılık MAC adresini ondalık formata dönüştürme aşağıdaki gibi gerçekleştirilebilir:
get_machine_id()
:/etc/machine-id
veya/proc/sys/kernel/random/boot_id
ile/proc/self/cgroup
'ın son eğik çizgisinden sonraki ilk satırını birleştirir.
Gerekli tüm veriler toplandıktan sonra, açıklayıcı betik yürütülerek Werkzeug konsolu PIN'i oluşturulabilir. Betik, birleştirilmiş probably_public_bits
ve private_bits
kullanarak bir karmayı oluşturur, ardından bu karmadan geçerek nihai PIN üretilir. Aşağıda bu işlemi yürütmek için Python kodu bulunmaktadır:
Bu betik, bitlerin birleştirilmesiyle PIN'i oluşturur, belirli tuzlar (cookiesalt
ve pinsalt
) ekler ve çıktıyı biçimlendirir. Üretilen PIN'in Werkzeug konsolu tarafından beklenen PIN ile eşleşmesini sağlamak için probably_public_bits
ve private_bits
için gerçek değerlerin hedef sistemden doğru bir şekilde alınması önemlidir.
Eğer Werkzeug'in eski bir sürümünde iseniz, sha1 yerine md5 karma algoritmasını denemeyi düşünebilirsiniz.
Werkzeug Unicode karakterleri
Bu sorunda gözlemlendiği gibi, Werkzeug başlıkta Unicode karakterleri olan bir isteği kapatmaz. Ve bu yazıda açıklandığı gibi, bu bir CL.0 İstek Kaçırma zafiyetine neden olabilir.
Bu, Werkzeug'de bazı Unicode karakterlerinin gönderilebilmesinin ve sunucunun çökmesine neden olabileceğinin mümkün olmasıdır. Ancak, eğer HTTP bağlantısı Connection: keep-alive
başlığı ile oluşturulmuşsa, isteğin gövdesi okunmayacak ve bağlantı hala açık kalacaktır, bu nedenle isteğin gövdesi bir sonraki HTTP isteği olarak işleme alınacaktır.
Referanslar
Anında kullanılabilir zayıflık değerlendirme ve penetrasyon testi kurulumu. 20'den fazla araç ve özellikle tam bir pentest çalıştırın, keşiften raporlamaya kadar uzanan özelliklerle. Pentester'ları değiştirmiyoruz - onlara daha derinlemesine kazmak, kabuklar açmak ve eğlenmek için biraz zaman kazandırmak için özel araçlar, tespit ve istismar modülleri geliştiriyoruz.
Last updated