javaweb代码审计记录(一)
一、前言
项目代码源自炼石计划的代码审计系统一。 二、使用到的工具 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日志中发现,我们已经爆出数据库名
总结:这是一个基础漏洞。。。。。
|