欢迎转发,请勿抄袭
一、前言
项目代码源自炼石计划的代码审计系统一。
二、使用到的工具
idea
idea插件(Free MyBatis Too)
mysql
三、漏洞挖掘过程
将代码部署完成后,进行正常访问。
尝试挖掘sql注入,先通过搜索${对xml文件进行搜索发现存在几处
发现有几个相对简单些,这里就不进行演示了,主要分析一个相对复杂一点的。
发现是一个更新的语句,这个变量是使用${}方式,这种方式是存在sql注入。点击绿色箭头。进行跟踪
选中该方法,进行跟踪
发现是一个不可控参数,到这里,很多人就会觉得不可控参数,就没存在sql注入。不过我们可以,通过先插入数据,再让它查询加载过来。
继续跟踪updateParentDeptStatus,因为updateParentDeptStatus调用了updateDeptStatus。
发现updateDept这个入口,对提交的数据进行判断是否为空,如果不为空,则进行Ancestors更新,不过这里影响不是很大,主要看下面的一个更新操作
我们可通过在数据包直接构造ancestors,对应的更新语句
继续跟踪updateDept,找到调用地方
寻找对应的web地方
点击提交,对应数据包
发现没有对应的ancestors参数,直接构造
到数据库里面查看,发现已经成功修改
构造update的报错查询语句
0,5) and extractvalue(1,concat('~',database()))#(
出现了异常,说明屏蔽了报错信息
再次到数据库查看,发现攻击语句已经到了数据库里面。
通过idea日志中发现,我们已经爆出数据库名
总结:这是一个基础漏洞。。。。。
文章声明:文章涉及到的工具、及教程仅供学习参考,请勿非法使用。否则与作者无关!
加入内卷:请扫码
原文始发于微信公众号(yudays实验室):javaweb代码审计记录(一)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论