『Java安全』初试JDWP攻击
文章目录
- 简介
- 手动调试
- JDWP攻击
- 如何探测?
- nmap
- socket发包
- 利用工具
- 参考
- 完
简介
Java Debug Wire Protocol(JDWP)是一种通信协议,是Java Platform Debugger Architecture的一部分。它用于调试器和Java虚拟机之间的通信,Java虚拟机进行调试。它允许在其他计算机上调试进程,可以通过网络套接字或共享内存工作。
https://en.wikipedia.org/wiki/Java_Debug_Wire_Protocol
平常使用IDEA debug就是把上面的过程简化
手动调试
把上面的程序编译成class,开启debug,然后使用jdb连接
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:8003 Test
jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8003
jdb有很多命令,help可以查看
在println打断点
stop in java.io.PrintStream.println(java.lang.String)
run
可以看到此时已经命中了断点
单步调试step,调试至最后cont,结束调试exit
JDWP攻击
可以从上面流程看到:JDWP攻击就是针对暴露在公网的server端,jdb自带了命令执行
使用step进入暂停模式,然后就能执行命令
如何探测?
nmap
扫端口
socket发包
发送握手包
import socket
client = socket.socket()
client.connect(("127.0.0.1", 8003))
client.send(b"JDWP-Handshake")
print(client.recv(14))
利用工具
https://github.com/Lz1y/jdwp-shellifier
https://github.com/IOActive/jdwp-shellifier
参考
https://forum.butian.net/share/1232
完
欢迎关注我的CSDN博客 :@Ho1aAs
版权属于:Ho1aAs
本文链接:https://ho1aas.blog.csdn.net/article/details/126587814
版权声明:本文为原创,转载时须注明出处及本声明