IDEA远程调试
Posted 平凡的学者
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IDEA远程调试相关的知识,希望对你有一定的参考价值。
前言
IDEA可以在无源代码的情况下进行远程调试,只需将程序的class文件或jar包添加到项目依赖即可对一些未开源的Java程序或大型中间件进行远程调试。我们将以冰蝎的Behinder.jar
为例,并以CVE-2017-10271
和CVE-2017-12615
漏洞环境为例介绍如何使用IDEA配合docker对Weblogic
和Tomcat
中间件进行调试。
对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工具 在本地代码上远程调试 生产或测试环境的代码