JDWP
其实上述的知识都是为了分析JDWP的反弹shell的铺垫。 根据JDWP 协议及实现
JDWP 是 Java Debug Wire Protocol 的缩写,它定义了调试器(debugger)和被调试的 Java 虚拟机(target vm)之间的通信协议。
换句话说,就是JDWP就是JAVA的一个调试协议。本质上我们通过IDEA或者eclipse通过断点的方式调试JAVA应用时,使用的就是JDWP.之前写过的Nuxeo RCE漏洞分析中的 第一步Docker远程调试用的是JDWP.而JDWP的漏洞的危害就如同之前写过的文章xdebug的攻击面。因为是调试协议,不可能带有认证信息,那么对于一个开启了调试端口的JAVA应用,我们就可能利用JDWP进行调试,最终执行命令。在什么时候会使用到JDWP这种协议呢?比如你在线上跑了一个应用,但是这个问题只有在线上才会出现问题,那么这个时候就必须开启远程调试功能了,此时就有可能被攻击者利用RCE。
JDWP是通过一个简单的握手完成通信认证。在TCP连接完之后,DEBUG的客户端就会发送JDWP-Handshake,而服务端同样会回复JDWP-Handshake.通过抓包分析:
JDWP通信解析格式
JDWP通信解析格式如下所示: