当前位置: 首页 > news >正文

OpenWebui 富文本提示词 远程命令注入漏洞 | CVE-2025-64495 复现研究

0x0 背景介绍

Open WebUI 是一个自托管的人工智能平台,设计为完全离线运行。当启用以富文本形式插入提示功能时,将自定义提示插入聊天窗口的功能存在 DOM XSS 漏洞,任何拥有创建提示权限的用户都可以利用此漏洞植入有效载荷最终导致远程命令注入漏洞。

0x1 环境搭建(Ubuntu24+docker)

1.前置条件

  • 配置AI模型(模拟真实场景),有很多办法,我这里使用内置阿里云的KEY进行
  • 访问阿里云百炼进行密钥创建即可阿里云百炼-key
    创建key

2.项目搭建

  • 创建docker-compose.yml文件
  • 注意OPENAI_API_KEYS更新为申请的key
version: "3"
services:open-webui:image: ghcr.io/open-webui/open-webui:v0.6.34container_name: open-webui-vulnrestart: alwaysports:- "3000:8080"environment:- WEBUI_AUTH=False- OPENAI_API_BASE_URLS=https://dashscope.aliyuncs.com/compatible-mode/v1- OPENAI_API_KEYS=sk-xxx-你的keyvolumes:- open-webui-vuln:/app/backend/datavolumes:open-webui-vuln:
  • 启动环境
docker compose up -d

3.环境配置

  • 搭建完成后,大约2分钟就可以访问了,创建登录的账密即可
  • 登录后开启 以富文本的形式回填提示词
    开启富文本形式

0x2 漏洞复现

手动复现步骤

  • 创建提示词
    创建恶意提示词

  • 创建新对话,输入/ 引用刚刚的提示词就直接弹窗了
    XSS成功

Python检测

https://github.com/Kai-One001/cve-/blob/main/openui-shell-CVE-2025-64495.py
  • 特定反弹shell,因为 fetch('...') 含引号,被 marked 转义,导致语法错误。

python

nc

PCAP检测

  • 示例是更新接口,其实响应都一样,可以看到恶意语句
    pcap

  • 反弹也是同样的,通用检测都可以识别
    pacp-shell

0x3 漏洞原理分析

漏洞定位

  • 通过比对官方补丁变更记录(见下图),可快速锁定漏洞文件:
  • 漏洞文件:RichTextInput.svelte
  • 文件位置:src/lib/components/common/RichTextInput.svelte
    补丁截图
if (insertPromptAsRichText) {const htmlContent = marked.parse(text, {breaks: true,gfm: true}).trim();// Create a temporary div to parse HTMLconst tempDiv = document.createElement('div');tempDiv.innerHTML = htmlContent;
}
  • 简要说明:当用户启用了“以富文本形式插入提示时,将提示内容 text 渲染为 HTML 并插入编辑器。具体流程如下:

  • 使用 marked.parse() 将用户输入的 text(Markdown 格式)转换为 HTML 字符串;

  • 创建一个临时<div>元素,并通过 innerHTML 将生成的 HTML 注入其中,以便后续转换为 ProseMirror 节点;

  • Marked 库默认允许在 Markdown 中嵌入原始 HTML,这意味着攻击者可以在自定义提示的 content 字段中直接插入 HTML 标签这些标签会被 marked.parse() 原样保留,并通过 innerHTML 注入 DOM,从而触发 XSS 攻击。

修复对比

  • 在官方修复提交中,开发者移除了原有的直接使用 marked.parse() 生成HTML的方式,并引入了 DOMPurify 库对 HTML 内容进行安全净化:
import DOMPurify from 'dompurify';// ...const htmlContent = DOMPurify.sanitize(marked.parse(text, {breaks: true,gfm: true}).trim()
);
  • 引入dompurify库,用于清理HTML中恶意数据,防止XSS
  • 保留了marked.parse()Markdown 渲染能力,确保富文本格式正常显示;
  • 外层包裹 DOMPurify.sanitize(),对生成的 HTML 字符串进行深度清理;
  • DOMPurify.sanitize(htmlString) 返回安全的 HTML。

0x4 修复建议

修复方案

  1. 升级到安全版本:公告链接github-open-webui-0.6.36
  2. 临时缓解措施:
    临时禁用富文本: 临时禁用以富文本形式插入提示功能,避免输入未过滤的HTML内容
    安全监控:WAF配置规则,检测针对 /prompt、/rich-text 等接口的异常HTML/JS注入行为

免责声明:本文仅用于安全研究目的,未经授权不得用于非法渗透测试活动。

http://www.dtcms.com/a/610512.html

相关文章:

  • 黑马Python+AI大模型开发课程笔记(个人记录、仅供参考)
  • 安全的响应式网站建设半月报网站建设商务代表工作总结
  • 现在1做啥网站流量大上海网站制作网站制作公司
  • 如何做彩票网站域名查询入口
  • 学习react第四天
  • 宜宾百度网站建设武锡网站建设生购房政策
  • 领域驱动设计(DDD)与微服务架构的集成
  • windows中程序端口被占用解决步骤
  • DBeaver常用配置
  • 【ZeroRange WebRTC】Amazon Kinesis Video Streams WebRTC Control Plane API 深度解析
  • 网站域名续费多少钱珠海市企业网络推广
  • 电力系统暂态信号多尺度时频分析与卷积循环神经网络驱动的故障快速识别技术
  • 贵州建设公司网站868868域名查询
  • 建立网站链接结构的基本方式是模拟创建一个公司
  • 5-基于C5G 开发板的FPGA 串口通信设计 (FT232R, Altera UART IP和Nios II系统串口收发命令)
  • 手机视频网站怎么做宁夏石嘴山市城乡建设局提意见网站
  • 基于LLM 的 RAG 应用开发实战
  • 服务端开发案例(不定期更新)
  • 济宁网站建设培训班怎么提高网站加载速度慢
  • 简写单词
  • c2c模式的网站微网站在哪制作的
  • 双语版网站案例html中秋节网页制作代码
  • SSM快递代收系统00pay(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • occ中设置V3d_View视图方法
  • 顺德制作网站价格多少在线购物商城的设计与实现
  • Go语言编译器下载 | 完整安装教程与环境配置指南
  • 基于XTOM蓝光扫描的自由曲面微电路制造:一种增材制造的微尺寸几何重建与精度保障方法
  • 零陵区住房和城乡建设局网站首页哪里建设网站不需要备案
  • 网站建设软件排行两学一做网站是多少
  • 选商务手机需全面考量性能便携续航通信与办公功能