java审计之下载漏洞获取到的代码如何断点调试

java审计之下载漏洞获取到的代码如何断点调试

哈拉少安全小队 2025-06-04 04:36

前言

文件下载漏洞获取到网站源码,想通过代码审计漏洞,但是逻辑太复杂,难以直接复现出来,这时候就需要断点调试了。

演示

以调试jar包举例,这里以之前下载到的源码演示一下

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar web.jar

出现5005表示运行成功

1、在线平台

https://www.decompiler.com/

这种方法比较简单,将代码放到在线平台反编译,这个平台反编译后的代码比较完整,方便调试。在线平台可能会存在泄露代码的问题,安全起见可以使用本地工具

将反编译后的代码打开,编辑配置,选择远程调试

点击确认,最好项目的jdk版本与本地运行jar的版本相同

点击调试

连接成功

然后打开本地运行的jar服务

对登录接口断点一下试试

成功将数据断下来

接下来就可以
像有源码的程序一样正常调试了

2、本地工具

如果不想使用在线平台,可以使用本地工具

将jar包直接解压代码

IDEA新建一个空项目,
项目结构->库,选择刚才解压程序Jar包中
的BOOT-INF/classes

模块处勾选刚才导入的依赖

添加完毕后,在左侧依赖库侧边栏中显示了这个依赖

再将刚才解压
ja
r包中
的BOOT-INF/lib添加进依赖里

找到登录接口代码进行断点

和刚才一样配置远程调试

点击登录

成功断点

补充:

如果我想修改jar包的代码后再调试呢?

idea下载插件

然后使
用maven,
将本地的 JAR 文件手动安装到本地 Maven 仓库中

mvn install:install-file -Dfile=E:\xxx\xxxx\xxxx.jar -DgroupId=com.test666 -DartifactId=house -Dversion=0.0.1 -Dpackaging=jar

E:\xxx\xxxx\xxxx.jar为你要修改的jar包位置,
-DgroupId    -DartifactId可以随便写。

记住这个路径

新建一个空项目

在的pom.xml中导入刚才安装到本地maven仓库的项目

<dependencies>
    <dependency>
        <groupId>com.test666</groupId>
        <artifactId>house</artifactId>
        <version>0.0.1</version>
    </dependency>
</dependencies>

同时IDEA设置中maven仓库位置要选对

左侧依赖库可以看到刚才导入的依赖

找到要修改的代码,这里我随便修改了信息

修改后使用插件保存

来到刚才的maven仓库位置

重新修改后的jar包位置在这里

运行jar包

代码成功被修改