IDEA远程调试

远程调试

    • 前言
    • 对Jar包进行远程调试
    • 对Weblogic进行远程调试
    • 对Tomcat进行远程调试
    • 补充

前言

IDEA可以在无源代码的情况下进行远程调试,只需将程序的class文件或jar包添加到项目依赖即可对一些未开源的Java程序或大型中间件进行远程调试。我们将以冰蝎的Behinder.jar为例,并以CVE-2017-10271CVE-2017-12615漏洞环境为例介绍如何使用IDEA配合docker对WeblogicTomcat中间件进行调试。

对Jar包进行远程调试

首先我们在IDEA上新建一个Java项目,并创建一个lib文件夹,把我们要调试的jar包放到lib文件夹下。右键选择Add as Library...。成功添加后可以看到Jar包中反编译后的源代码。
IDEA远程调试_第1张图片
IDEA远程调试_第2张图片
我们可以点击右上角的Add Configurations,点击+来添加一个Remote
IDEA远程调试_第3张图片
在终端上输入java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005 Behinder.jar即可监听调试
在这里插入图片描述

对Weblogic进行远程调试

首先我们进入vulhub文件夹,修改/weblogic/CVE-2017-10271文件夹下的yml文件,打开8453端口
IDEA远程调试_第4张图片
然后使用docker-compose命令编译镜像并启动容器
IDEA远程调试_第5张图片
在这里插入图片描述
我们使用命令docker exec -it 0a /bin/bash命令进入容器,使用vi修改文件/root/Oracle/Middleware/user_projects/domains/base_domain/bin/setDomainEnv.sh,添加这两行代码

debugFlag="true"
export debugFlag

IDEA远程调试_第6张图片
重启docker容器再进入,将/root/Oracle/Middleware/文件夹下的modules文件夹和wlserver_10.3文件夹使用zip命令压缩成zip压缩包。这里解释一下为什么要这么做,如果读者的系统为Windows,使用docker cp命令时,就会在复制一些长文件名的文件时报错,因此这一步的目的是打包成压缩文件再进行复制,以避免这种问题的出现。docker cp命令将这两个文件分别复制到本机的当前路径的test文件夹下
IDEA远程调试_第7张图片
我们输入命令sudo chmod -R 777 modules/ wlserver_10.3更改文件夹对应的权限。移动到项目的文件夹后,我们对modules文件夹和wlserver_10.3/server/lib这个两个文件夹进行Add as Library...的操作。
IDEA远程调试_第8张图片
然后我们根据前面的步骤,添加一个远程调试Remote,端口要改为和yml文件相同的8453
IDEA远程调试_第9张图片
然后我们在wlserver_10.3/server/lib/weblogic.jar/weblogic/wsee/jaxws/WLSServletAdapter.class的handle方法上设置断点,接着运行Debug模式。在浏览器上访问http://127.0.0.1:7001/wls-wsat/CoordinatorPortType,同时查看IDEA是否运行调试成功
IDEA远程调试_第10张图片
IDEA远程调试_第11张图片

对Tomcat进行远程调试

因为Tomcat的操作和Weblogic的操作大同小异,所以下面我只截图说明了。
IDEA远程调试_第12张图片
IDEA远程调试_第13张图片
我们进入容器后的编辑一下这个文件bin/catalina.sh,插入以下的命令
IDEA远程调试_第14张图片

使用docker cp将文件夹/usr/local/tomcat/lib复制到物理机上
在这里插入图片描述
IDEA远程调试_第15张图片
IDEA远程调试_第16张图片
IDEA远程调试_第17张图片

补充

尽管vulhub可以很方便地搭建环境,但是由于漏洞更新比较快,因此我们使用虚拟机进行搭建漏洞环境会更好。在虚拟机上安装对应的环境,然后使用上述方法进行调试即可。

你可能感兴趣的:(Java代码审计,代码审计,Java安全,信息安全,渗透测试)