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包
代码成功被修改