Linux|某大型CMS后台注入从分析到利用





【Linux|某大型CMS后台注入从分析到利用】

搭建环境Github找一下若依4.6.1版本下载到本地 , 丢到IDEA里面 , 数据库文件导入 , druid连接池配置文件中修改username和password
在application.yml文件中可更改服务默认端口 , 80端口被占用修改成其他空闲端口
完成数据库导入和配置文件一些必要信息的修改之后就可以运行整个项目了
漏洞分析若依cms这个后台SQL注入貌似还没有公开漏洞细节 , 相关的分析内容很难找 , Google到了其中一篇文章 , 获取到了关键的污点传播路径 , 整理如下:
RuoYi/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java:56\\`role\\`为污点源->RuoYi/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysRole.java:37污点源从\\`role\\`传递至\\`dataScope\\`->RuoYi/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java:19污点传入selectRoleList方法->RuoYi/ruoyi-system/src/main/resources/mapper/system/SysRoleMappper.xml:36'SQLI'类型触发注入
初看比较疑惑 , 顺着污点传播路径跟进不太明白poc是怎么整出来的 , 看到最后的xml文件也就是漏洞触发点也就清楚是怎么一回事了 , 先从污点源开始看RuoYi/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRoleController.java
查看代码可以确定利用的漏洞路径为/system/role/list , 以POST的方式进行传参 , 可以看到初始的污点源为传递给TableDataInfo的参数role , 跟进方法中调用的startPage()方法Ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java
函数体打断点处 , 调用了TableSupport类的buildPAgeRequest()如果pageNum和PageSize两个参数值不为空的话就会进行分页处理 , 调用的是pagehelper这个第三方插件 , 跟进buildPAgeRequest()方法分析是如何进行赋值处理的Ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/core/page/TableSupport.java
实例化一个PageDomain类 , 并通过ServletUtils类从post传递的数据中获取对应的参数值所以这几个参数值对漏洞利用并没有太大的影响 , 让其获取到的都为空就可以 , 第一部分poc
pageSize=&pageNum=&orderByColumn=&isAsc=
顺着污点传播链 , 跟进RuoYi/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysRole.java文件
对dataScope参数的一个拼接 , 并且进行了类型的转换 , 继续跟传播链 , RuoYi/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java
- Linux|无利可图?又一家电子大厂解散团队退出苹果供应链,库克行动了!
- 大型蔬菜大棚b型工业光排管
- PHP|PHP到底适不适合做大型网站?
- Linux|没想到闲鱼pro版本功能那么强大,你升级成功了吗
- Netflix|B站又搞事情?上线付费短视频,某百万UP主直接当场掉粉过万!
- Linux|一步到位 低到6799!酷睿i9笔记本推荐:超级多面手
- Linux|为发烧而生,红米K30S至尊纪念版,带来更流畅的使用体验
- Linux|Apple 提出了取代密码的「通行密匙」方案
- 算法|为什么你只是说了某样东西,手机就会给你推送相关商品?几步教你轻松解决!
- Linux 超 macOS、最讨厌 Angular.js 框架,调查了 7 万名开发者的最新发现!
