Pentesting JDWP - Java Debug Wire Protocol
Експлуатація
Експлуатація JDWP ґрунтується на відсутності аутентифікації та шифрування в протоколі. Зазвичай він знаходиться на порту 8000, але можливі інші порти. Початкове підключення відбувається шляхом відправлення "JDWP-Handshake" на цільовий порт. Якщо служба JDWP активна, вона відповідає тим самим рядком, підтверджуючи свою присутність. Цей рукостиск діє як метод відбору для ідентифікації служб JDWP в мережі.
Щодо ідентифікації процесу, пошук рядка "jdwk" в процесах Java може вказувати на активну сесію JDWP.
Основним інструментом є jdwp-shellifier. Ви можете використовувати його з різними параметрами:
Я виявив, що використання --break-on 'java.lang.String.indexOf'
робить експлойт більш стабільним. І якщо у вас є можливість завантажити backdoor на хост і виконати його замість виконання команди, експлойт буде ще стабільнішим.
Детальніше
Це краткий огляд https://ioactive.com/hacking-java-debug-wire-protocol-or-how/. Перевірте його для отримання додаткових відомостей.
Огляд JDWP:
Це мережевий бінарний протокол на основі пакетів, в основному синхронний.
Відсутність аутентифікації та шифрування робить його вразливим при взаємодії з ворожими мережами.
Рукостискання JDWP:
Для ініціювання комунікації використовується простий процес рукостискання. Між відлагоджувачем (клієнтом) та відлагоджуваним (сервером) обмінюється 14-символьний ASCII-рядок "JDWP-Handshake".
Комунікація JDWP:
Повідомлення мають просту структуру з полями, такими як Довжина, Ідентифікатор, Прапор та НабірКоманд.
Значення НаборуКоманд коливаються від 0x40 до 0x80, що представляють різні дії та події.
Експлуатація:
JDWP дозволяє завантажувати та викликати довільні класи та байткод, що створює ризики безпеки.
Стаття деталізує процес експлуатації у п'яти кроках, що включає отримання посилань на Java Runtime, встановлення точок зупинки та виклик методів.
Експлуатація в реальному житті:
Незважаючи на потенційні захисні заходи брандмауеру, служби JDWP виявляються та експлуатуються в реальних сценаріях, як показано пошуками на платформах, таких як ShodanHQ та GitHub.
Скрипт експлойту був протестований на різних версіях JDK та є платформонезалежним, пропонуючи надійне виконання коду на віддаленому сервері (RCE).
Наслідки для безпеки:
Наявність відкритих служб JDWP в Інтернеті підкреслює необхідність регулярних перевірок безпеки, вимкнення функцій відлагодження в продакшені та належної конфігурації брандмауера.
Посилання:
http://www.secdev.org/projects/scapy(no longer active)
http://www.hsc-news.com/archives/2013/000109.html (no longer active)
https://github.com/search?q=-Xdebug+-Xrunjdwp&type=Code&ref=searchresults
Last updated