javaweb代码审计记录(一)

admin 2022年5月2日17:21:38评论115 views字数 965阅读3分13秒阅读模式

欢迎转发,请勿抄袭

一、前言

        项目代码源自炼石计划的代码审计系统一。

二、使用到的工具

            idea

            idea插件(Free MyBatis Too)

            mysql

三、漏洞挖掘过程

        将代码部署完成后,进行正常访问。

javaweb代码审计记录(一)

        尝试挖掘sql注入,先通过搜索${对xml文件进行搜索发现存在几处

javaweb代码审计记录(一)

        发现有几个相对简单些,这里就不进行演示了,主要分析一个相对复杂一点的。

javaweb代码审计记录(一)

        发现是一个更新的语句,这个变量是使用${}方式,这种方式是存在sql注入。点击绿色箭头。进行跟踪

javaweb代码审计记录(一)

         选中该方法,进行跟踪

javaweb代码审计记录(一)

        发现是一个不可控参数,到这里,很多人就会觉得不可控参数,就没存在sql注入。不过我们可以,通过先插入数据,再让它查询加载过来。

        继续跟踪updateParentDeptStatus,因为updateParentDeptStatus调用了updateDeptStatus

javaweb代码审计记录(一)

        发现updateDept这个入口,对提交的数据进行判断是否为空,如果不为空,则进行Ancestors更新,不过这里影响不是很大,主要看下面的一个更新操作

javaweb代码审计记录(一)

        我们可通过在数据包直接构造ancestors,对应的更新语句

javaweb代码审计记录(一)

      继续跟踪updateDept,找到调用地方

javaweb代码审计记录(一)

    寻找对应的web地方

javaweb代码审计记录(一)

       点击提交,对应数据包

javaweb代码审计记录(一)

        发现没有对应的ancestors参数,直接构造

javaweb代码审计记录(一)

        到数据库里面查看,发现已经成功修改

javaweb代码审计记录(一)

        构造update的报错查询语句

0,5and extractvalue(1,concat('~',database()))#(

        出现了异常,说明屏蔽了报错信息

javaweb代码审计记录(一)

        再次到数据库查看,发现攻击语句已经到了数据库里面。

javaweb代码审计记录(一)

        通过idea日志中发现,我们已经爆出数据库名

javaweb代码审计记录(一)

        总结:这是一个基础漏洞。。。。。

        文章声明:文章涉及到的工具、及教程仅供学习参考,请勿非法使用。否则与作者无关!

加入内卷:请扫码javaweb代码审计记录(一)javaweb代码审计记录(一)javaweb代码审计记录(一)

javaweb代码审计记录(一)


原文始发于微信公众号(yudays实验室):javaweb代码审计记录(一)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年5月2日17:21:38
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   javaweb代码审计记录(一)https://cn-sec.com/archives/968931.html

发表评论

匿名网友 填写信息