RBAC管理系统审计记录
1|0RBAC管理系统审计记录
1|1环境搭建
环境依赖
- Windows
- idea2022
- jdk 8
- RBAC源码
- phpstudy的mysql 5.6.7
简易搭建流程(Windows下)
- 直接使用idea打开项目,然后选中右上角的项目构建
- 项目中有几处需要修改:
○ 1、 要开启phpstudy的mysql,然后创建rbac数据库,并将源码中的rbac.sql数据导入进数据库
○ 2、在全局中搜索application.yaml文件,修改其中的数据库密码为phpstudy中设置的用户名密码
○ 3、使用admin/123456登录炼石计划后台进入系统
○ 4、使用admin/admin登录sql监控
○ 5、使用idea自动下载系统所需所有依赖包
○ 6、 系统访问url:http://127.0.0.1:8088
1|2系统审计
- java代码审计,一般都是基于maven的web项目,然后使用spring框架,或者是基于tomcat的web项目,使用spring框架
- 审计时,要先关注pom.xml文件,这个文件是Maven进行工作的主要配置文件。在这个文件中我们可以配置Maven项目的groupId、artifactId和version等Maven项目必须的元素;可以配置Maven项目需要使用的远程仓库;可以定义Maven项目打包的形式;可以定义Maven项目的资源依赖关系等等。
漏洞审计
SQL注入
- 从pom.xml文件中可以发现是使用了mybatis进行sql语句的操作
mybatis
- MyBatis支持两种参数符号,一种是#,另一种是$。
- 使用参数符号#的句子:
<select id="selectPerson" parameterType="int" resultType="hashmap"> SELECT * FROM PERSON WHERE ID = #{id}</select>
- MyBatis会创建一个预编译语句,生成的代码类似于
*// Similar JDBC code, NOT MyBatis…String selectPerson = "SELECT * FROM PERSON WHERE ID=?";PreparedStatement ps = conn.prepareStatement(selectPerson);ps.setInt(1,id);
- 参数会在SQL语句中用占位符”?”来标识,然后使用prepareStatement来预编译这个SQL语句。
- 在默认情况下,MySQL Connector/J只不过是把selectPerson做了一下转义,前后加了双引号,拼接到SQL语句里面,然后再交给MySQL执行。另一种使用参数符号$时,MyBatis直接用字符串拼接把参数和SQL语句拼接在一起,然后执行。这种操作就是十分危险的了,很容易产生sql注入
- 所以对于mybatis进行sql操作的,我们可以直接搜索${来判断
mybatis拼接sql有下面两种方式:
- 直接搜索关键字${
- 所以我们在代码审计阶段进行SQL注入漏洞挖掘时,应关注 xxxMapper.xml 中使用 ${} 凭借SQL的地方。推荐使用搜索关键字符,win快捷键 CTRL+SHIFT+F (PS.设计xml的目的是用作数据交换,当然也可以用作保存数据。xml保存数据具有平台无关,规范化。通过提供方提供的读取程序就可以读取出xml数据。)
- 调出 Find in path ,file mask选择文件夹类型为*.xml,输入关键字符${}(在文件中查找)
- 点击进⼊DictMapper.xml向上找调⽤src/main/resources/mybatis-mappers/DictMapper.xml
- 先双击DictMapper.xml文件定位到关键字,然后跟id=getFuzzyDictByPage到声明处DictDao.java,然后再转到函数引用文件到DictServicelmpl.java,在通过跟踪调用到DictController.java文件
注入点一:/api/dict
注入点二:/api/user
越权漏洞
越权删用户
- 漏洞代码
- 观察这段代码可以发现会先对输入的可控userid进行check,然后会先删除role再删除用户,其中没有任何的其他鉴权
- 跟一下checkUserAllowed()函数到UserServiceImpl.java文件
- 这里可以发现只要userid不为空或者不是管理员就可以删除,中间也未做其他鉴权判断,这样就导致会产生越权删除其他用户风险
__EOF__

本文作者:Konmu
本文链接:https://www.cnblogs.com/Konmu/p/18460109.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/Konmu/p/18460109.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)