Linux|某大型CMS后台注入从分析到利用( 二 )
注释已经写明此处根据分页查询角色数据 , 暂时不知道污点为何会传入selectRoleList()方法 , 继续跟传播链RuoYi/ruoyi-system/src/main/resources/mapper/system/SysRoleMappper.xml
可以看到这里是SQL查询语句 , 具体为什么这么写可以去自行百度一下 , 可以看到这里直接将${params.dataScope拼接入了SQL语句中 , 因此构造SQL注入语句就能够查询我们想要获取的数据 , 到这里也就不难理解为什么污点源会变成dataScope现在根据公开的poc来捋一捋整个链
role为初始污点源->调用RuoYi/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysRoleService.java#selectRoleList方法->selectRoleList方法调用RuoYi/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysRole.java中的SysRole类 , 该类会对dataScope参数进行处理->dataScope传入了RuoYi/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysRoleMapper.java#selectRoleList方法->调用SQL查询时拼接dataScope参数值进行了注入
可能并不是很准确 , 但是自己是这么理解的 , 有师傅理解更到位的话请多多指教
第二部分poc
roleName=&roleKey=&status=&params\\[beginTime\\
=&params\\[endTime\\
=&params\\[dataScope\\
=and extractvalue(1concat(0x7esubstring((select database())132)0x7e))
将两部分poc结合也就得到了公开的poc , 其实从poc入手 , 再直接看到最后的漏洞注入点能够更好理解poc为什么是这么构造的 , 其他参数的值皆为空默认就会为null , 只传入dataScope这个参数值也是可以的
url/system/role/listPOST:pageSize=&pageNum=&orderByColumn=&isAsc=&roleName=&roleKey=&status=&params\\[beginTime\\
=&params\\[endTime\\
=&params\\[dataScope\\
=and extractvalue(1concat(0x7e(select database())0x7e))
本地复现
可以看到通过报错注入获取到了数据库的名字 , 后面更改SQL语句就能够获取到详细的数据库信息了
项目测试打开给定的地址 , 看到这个界面就觉得很熟悉 , 之前审报告的就是就看到很多回 , 若依没跑了 , 站点应该只是更改了一些静态资源 。
登录还是常规手段尝试弱口令 , admin/admin123 , 直接进去了后台
burp抓个包 , poc打过去 , 获取到了数据库名
得到如下部分数据库中的信息 , 详细的就不公开了
exam\\_bannerexam\\_collectexam\\_p 表名idtitlebanner\\_imgis\\_putcont #exam\\_banner表中的列名 , 不完整 , 长度限制 , 可以分长度读出
总结整个到这里就差不多结束了 , 漏洞分析的可能不是特别到位 , 师傅们轻喷 , 只是想知道poc的参数是怎么构造的才去扒拉源码分析的 , 跟着poc去分析会更好理解 , 也就有了这篇文章 。
- Linux|无利可图?又一家电子大厂解散团队退出苹果供应链,库克行动了!
- 大型蔬菜大棚b型工业光排管
- PHP|PHP到底适不适合做大型网站?
- Linux|没想到闲鱼pro版本功能那么强大,你升级成功了吗
- Netflix|B站又搞事情?上线付费短视频,某百万UP主直接当场掉粉过万!
- Linux|一步到位 低到6799!酷睿i9笔记本推荐:超级多面手
- Linux|为发烧而生,红米K30S至尊纪念版,带来更流畅的使用体验
- Linux|Apple 提出了取代密码的「通行密匙」方案
- 算法|为什么你只是说了某样东西,手机就会给你推送相关商品?几步教你轻松解决!
- Linux 超 macOS、最讨厌 Angular.js 框架,调查了 7 万名开发者的最新发现!
