首页 > 其他分享 >RBAC管理系统审计记录

RBAC管理系统审计记录

时间:2024-10-12 11:00:24浏览次数:1  
标签:审计 xml 管理系统 sql RBAC 语句 SQL mybatis Maven

RBAC管理系统审计记录

环境搭建

环境依赖

  • 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

系统审计

  • 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有下面两种方式:


#{} 告诉mybatis创建一个预编译语句(PreparedStatement)参数,在JDBC中,这样的一个参数

在SQL中会由一个"?"来标识,并被传递到一个新的预处理语句中

${} 仅仅是纯粹的string替换,在动态SQL解析阶段将会进行变量替换,类似于直接替换字符串,会

导致SQL注入产生。

一些不能使用#{}的场景:

表名/字段名 如果预编译了,就没法查了

order by/group by

like模糊查询

in
  • 直接搜索关键字${
  • 所以我们在代码审计阶段进行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

 http://127.0.0.1:8088/api/dict?page=1&limit=10&dictName=if(1=1,1,exp(710))

dictName参数为注⼊点

注入点二:/api/user

http://127.0.0.1:8088/api/user?

page=1&limit=10&userName=if(2=2,1,exp(710))&nickName=if(1=1,1,exp(710))
userName和nickname处均存在注入

越权漏洞

越权删用户

  • 漏洞代码
@Override  
public int deleteUser(Integer userId) {  
    checkUserAllowed(new MyUser(userId));  
    roleUserDao.deleteRoleUserByUserId(userId);  
    userJobDao.deleteUserJobByUserId(userId);  
    return userDao.deleteUserById(userId);  
}
  • 观察这段代码可以发现会先对输入的可控userid进行check,然后会先删除role再删除用户,其中没有任何的其他鉴权
  • 跟一下checkUserAllowed()函数到UserServiceImpl.java文件
public void checkUserAllowed(MyUser user) {  
    if (!StringUtils.isEmpty(user.getUserId()) && user.isAdmin())  
    {  
        throw new MyException(ResultCode.ERROR,"不允许操作超级管理员用户");  
    }  
}
  • 这里可以发现只要userid不为空或者不是管理员就可以删除,中间也未做其他鉴权判断,这样就导致会产生越权删除其他用户风险

标签:审计,xml,管理系统,sql,RBAC,语句,SQL,mybatis,Maven
From: https://www.cnblogs.com/Konmu/p/18460109

相关文章

  • springboot空巢老人健康管理系统小程序-计算机毕业设计源码29889
    摘 要随着社会老龄化程度不断加剧,空巢老人群体的健康管理问题日益引起人们的关注。为了更好地满足空巢老人群体的健康管理需求,本研究致力于设计并实现一款基于SpringBoot框架的空巢老人健康管理系统。该系统旨在为管理员用户、老人用户和医生用户提供全方位的健康管理服务,......
  • java计算机毕业设计管易tms运输智能监控管理系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在现代物流行业中,运输管理系统的智能化与高效化已成为提升企业竞争力的关键因素之一。随着电子商务和快递业务的迅猛发展,货物运输量急剧增加,传统的人......
  • java计算机毕业设计M站内容管理系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,各类在线服务平台应运而生,为用户提供便捷、高效的服务体验。M站内容管理系统作为一种专门为管理网站内容设计的系统,其重要......
  • java+vue计算机毕设个人事务管理系统【源码+程序+论文+开题】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着信息技术的迅猛发展和个人生活节奏的加快,个人事务管理变得越来越复杂和繁琐。传统的纸质记录或简单的电子文档管理方式已难以满足现代人对于高效......
  • java+vue计算机毕设高校教师科研文献管理系统【源码+程序+论文+开题】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着高等教育的快速发展,高校教师科研活动日益频繁,产生的科研文献数量急剧增加。传统的文献管理方式,如纸质存档、简单的电子文档存储等,已难以满足当前......
  • 基于django+vue+Vue汉服文化管理系统【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景汉服,作为中华民族传统文化的重要组成部分,承载着深厚的历史底蕴与民族情感。近年来,随着国潮文化的兴起,汉服逐渐从历史的尘封中走出,成为现代......
  • 基于django+vue+Vue海州影院管理系统【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着信息技术的迅猛发展和人们对文化娱乐需求的日益增长,影院管理逐渐从传统的人工模式向智能化、信息化方向转变。海州影院作为当地知名的......
  • 基于django+vue+Vue哈尔滨市彼岸速溶咖啡厂管理系统【开题报告+程序+论文】-计算机毕
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景哈尔滨市彼岸速溶咖啡厂作为当地知名的咖啡生产企业,随着市场需求的不断扩大和企业管理要求的日益提高,传统的手工管理模式已难以满足其高效......
  • 基于django+vue+Vue哈尔滨海关进出口食品安全信息管理系统【开题报告+程序+论文】-计
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着全球经济一体化的加速推进,国际贸易日益频繁,食品安全问题已成为全球关注的焦点。哈尔滨作为东北地区的重要口岸城市,其海关在保障进出口......
  • python+flask计算机毕业设计长护险管理系统的设计与实现(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着人口老龄化的加剧,长期护理保险(简称“长护险”)逐渐成为社会保障体系中的重要组成部分。长护险旨在为失能、失智等需要长期护理服务的老......