IDEA远程调试

Posted 平凡的学者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IDEA远程调试相关的知识,希望对你有一定的参考价值。

前言

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

对Jar包进行远程调试

首先我们在IDEA上新建一个Java项目,并创建一个lib文件夹,把我们要调试的jar包放到lib文件夹下。右键选择Add as Library...。成功添加后可以看到Jar包中反编译后的源代码。


我们可以点击右上角的Add Configurations,点击+来添加一个Remote

在终端上输入java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005 Behinder.jar即可监听调试

对Weblogic进行远程调试

首先我们进入vulhub文件夹,修改/weblogic/CVE-2017-10271文件夹下的yml文件,打开8453端口

然后使用docker-compose命令编译镜像并启动容器


我们使用命令docker exec -it 0a /bin/bash命令进入容器,使用vi修改文件/root/Oracle/Middleware/user_projects/domains/base_domain/bin/setDomainEnv.sh,添加这两行代码

debugFlag="true"
export debugFlag


重启docker容器再进入,将/root/Oracle/Middleware/文件夹下的modules文件夹和wlserver_10.3文件夹使用zip命令压缩成zip压缩包。这里解释一下为什么要这么做,如果读者的系统为Windows,使用docker cp命令时,就会在复制一些长文件名的文件时报错,因此这一步的目的是打包成压缩文件再进行复制,以避免这种问题的出现。docker cp命令将这两个文件分别复制到本机的当前路径的test文件夹下

我们输入命令sudo chmod -R 777 modules/ wlserver_10.3更改文件夹对应的权限。移动到项目的文件夹后,我们对modules文件夹和wlserver_10.3/server/lib这个两个文件夹进行Add as Library...的操作。

然后我们根据前面的步骤,添加一个远程调试Remote,端口要改为和yml文件相同的8453

然后我们在wlserver_10.3/server/lib/weblogic.jar/weblogic/wsee/jaxws/WLSServletAdapter.class的handle方法上设置断点,接着运行Debug模式。在浏览器上访问http://127.0.0.1:7001/wls-wsat/CoordinatorPortType,同时查看IDEA是否运行调试成功

对Tomcat进行远程调试

因为Tomcat的操作和Weblogic的操作大同小异,所以下面我只截图说明了。


我们进入容器后的编辑一下这个文件bin/catalina.sh,插入以下的命令

使用docker cp将文件夹/usr/local/tomcat/lib复制到物理机上



补充

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

以上是关于IDEA远程调试的主要内容,如果未能解决你的问题,请参考以下文章

IDEA远程调试Java代码

IDEA远程调试Java代码

如何使用 Idea 远程调试 Java 代码

使用Idea工具 在本地代码上远程调试 生产或测试环境的代码

flinkFlink 使用IntelliJ IDEA 进行远程调试代码

IDEA远程调试