Forwarded from s0ld13r ch. (s0ld13r)
"Это не баг, а фича" или же backdoor by design pt. 1 😃
Когда мы ищем векторы RCE в инфре, мы привыкли охотиться за сложными CVE. Но иногда дверь оставлена открытой специально - по архитектурным соображениям. Сегодня поговорим про Java Debug Wire Protocol (JDWP)👩💻
🔍 Что это такое?
Это протокол для отладки Java-приложений в реальном времени. Он позволяет смотреть состояние потоков, память и execution flow, не перезагружая приложение. Чтобы его включить, разработчику достаточно добавить одну строку:
🤭 В чем подвох?
Протокол не предусматривает никакой авторизации. Если порт 5005 торчит наружу или доступен во внутренней сети - это легитимный RCE «из коробки».
🤬 Проблема старых инструментов:
Популярный jdwp-shellifier написан на Python 2 и использует только Runtime.exec(). Главный минус - вы не видите вывод команды в консоли (blind execution). Если сеть ограничена и вы не можете кинуть reverse shell или сделать curl на свой сервер, эксфильтрация данных превращается в квест.
Я переписал и проапгрейдил этот инструмент, сделав его современным и более «зубастым» назвав его JDWP Knife.
Ключевые фичи:
• Python 3.6+👩💻
• Интерактивность: Вывод👩💻
• Удобство: Минимум лишних движений при разведке 🕵️♂️
✍️ Примеры использования:
Будьте аккуратны с debug портами в проде, иногда удобство в разработке может привести к компрометации всей инфраструктуры😉
💻 jdwp-knife: https://github.com/s0ld13rr/jdwp-knife
🧢 s0ld13r
Когда мы ищем векторы RCE в инфре, мы привыкли охотиться за сложными CVE. Но иногда дверь оставлена открытой специально - по архитектурным соображениям. Сегодня поговорим про Java Debug Wire Protocol (JDWP)
Это протокол для отладки Java-приложений в реальном времени. Он позволяет смотреть состояние потоков, память и execution flow, не перезагружая приложение. Чтобы его включить, разработчику достаточно добавить одну строку:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005
Протокол не предусматривает никакой авторизации. Если порт 5005 торчит наружу или доступен во внутренней сети - это легитимный RCE «из коробки».
Популярный jdwp-shellifier написан на Python 2 и использует только Runtime.exec(). Главный минус - вы не видите вывод команды в консоли (blind execution). Если сеть ограничена и вы не можете кинуть reverse shell или сделать curl на свой сервер, эксфильтрация данных превращается в квест.
Я переписал и проапгрейдил этот инструмент, сделав его современным и более «зубастым» назвав его JDWP Knife.
Ключевые фичи:
• Python 3.6+
• Интерактивность: Вывод
env, ls и cat прямо в консоль • Удобство: Минимум лишних движений при разведке 🕵️♂️
# 1. Discover JDWP
echo "JDWP-Handshake" | nc -w3 TARGET 5005
# 2. Identify service
python3 jdwp-knife.py -t TARGET -p 5005 --props
# 3. Extract credentials
python3 jdwp-knife.py -t TARGET -p 5005 --env | grep -iE 'pass|secret|key|token|jdbc|aws'
# 4. Read interesting files
python3 jdwp-knife.py -t TARGET -p 5005 --cat /etc/passwd
Будьте аккуратны с debug портами в проде, иногда удобство в разработке может привести к компрометации всей инфраструктуры
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM