使用场景:

很多时候我们在漏洞环境搭建上面消耗了巨大的时间,之前偶然在网上看到了一篇文章关于vulhub的docker环境+idea实现weblogic漏洞远程调试分析的文章,后来想着试着把其他的vulhub里其他java语言相关的漏洞也尝试进行远程调试,下面分享一些环境的配置技巧。

IDEA远程调试

要让远程服务器运行的代码支持远程调试,则启动的时候必须加上特定的JVM参数,这些参数是:

-Xdebug -Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=127.0.0.1:5555

什么是JVM?
JVM(Java Virtual Machine,Java虚拟机)
Java程序的跨平台特性主要是指字节码文件可以在任何具有Java虚拟机的计算机或者电子设备上运行,Java虚拟机中的Java解释器负责将字节码文件解释成为特定的机器码进行运行。因此在运行时,Java源程序需要通过编译器编译成为.class文件。众所周知java.exe是java class文件的执行程序,但实际上java.exe程序只是一个执行的外壳,它会装载jvm.dll(windows下,下皆以windows平台为例,linux下和solaris下其实类似,为:libjvm.so),这个动态连接库才是java虚拟机的实际操作处理所在。JVM是JRE的一部分。它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java语言最重要的特点就是跨平台运行。使用JVM就是为了支持与操作系统无关,实现跨平台。所以,JAVA虚拟机JVM是属于JRE的,而现在我们安装JDK时也附带安装了JRE(当然也可以单独安装JRE)。


什么是JVM?
JVM参数说明
-Xdebug:是通知JVM工作在DEBUG模式下。
-Xrunjdwp:是通知JVM使用(java debug wire protocol)来运行调试环境。
Transport:用于在调试程序和 VM 使用的进程之间通讯,指定了调试数据的传送方式,dt_socket是指用SOCKET模式,另有dt_shmem指用共享内存方式,其中,dt_shmem只适用于Windows平台。
Server:VM 是否需要作为调试服务器执行。
suspend指明,是否在调试客户端建立起来后,再执行JVM。
address:调试服务器的端口号,客户端用来连接服务器的端口号。


Docker配置远程调试:

CVE-2020-1938

docker-compose.yml配置

在这里插入图片描述
配置vulhub漏洞文件下的docker-compose.yml。

version: '2'
services:
 tomcat:
   image: vulhub/tomcat:9.0.30
   ports:
    - "8080:8080"
    - "8009:8009"
    - "5005:5005"
   environment:
     TZ: Asia/Shanghai
     JPDA_ADDRESS: 5005
     JPDA_TRANSPORT: dt_socket
   command: ["catalina.sh", "jpda", "run"]

idea配置::

这里需要先把vulhub-docker中tomcat漏洞环境拷贝到本地,然后使用idea打开并配置远程调试
在这里插入图片描述

在需要调试的地方打上断点,开始远程调试,我们看到idea已经成功连接上了远程调试端口
在这里插入图片描述

攻击执行:

加载攻击payload
在这里插入图片描述
接下来就可以对断点处代码进行分析了。
在这里插入图片描述

参考文章:

https://blog.csdn.net/qq_41701956/article/details/80020103
https://www.jianshu.com/p/302dc10217c0
https://blog.csdn.net/weixin_44055234/article/details/108824772
https://www.awaimai.com/2608.html
https://www.jianshu.com/p/a9008acc0654
http://blog.topsec.com.cn/struts2-s2-059-%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90/
https://www.cnblogs.com/rutor/p/10245811.html

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐