[CVE-2024-54160]-Opensearch-HTML注入 + 存储型XSS
经发现,Opensearch 中名为 "reports" 的插件在 2.18.0 版本中存在 HTML 注入漏洞。
该报告功能允许用户在创建新报告定义时,在页眉和页脚中存储 HTML。
以下是一个快速的概念验证(PoC):我在页眉功能中存储了一个 iframe,它会从我的本地机器加载一个 JavaScript 键盘记录器,用以记录用户输入的按键。
PoC
- 编辑 keylogger.html 文件,并添加运行 python3 http.server 的本地 IP。
- 保存 keylogger.html。
- 在与 keylogger.html 相同的路径下,使用 "python3 -m http.server" 启动 python3 服务器。
- 转到 Reports。
- 填写必填字段。
- 选择 PDF。
- 启用页眉或页脚。
- 输入 iframe 载荷 ->
:8000/keylogger.html">
- 点击 "Preview" —— 键盘记录器应从 python 服务器加载。
- 在键盘上输入内容,并在 python 服务器中观察响应。
PoC 实际运行截图
- iframe 内容渲染在左侧(我知道它简单且简陋,但作为 PoC 已经够用了 :))。
- 记录的按键显示在右侧。(不过该键盘记录器 PoC 并不理想,因为它漏掉了一些按键!)

修复措施
该问题已在 Opensearch 2.19 版本中得到修复,该版本会使用 DOMpurify 对页脚/页眉功能中传递的数据进行净化。
发布说明
https://github.com/opensearch-project/opensearch-build/blob/main/release-notes/opensearch-release-notes-2.19.0.md
Opensearch 的 PR
https://github.com/opensearch-project/dashboards-reporting/pull/476
存储型 XSS
版本 2.17.9 在同一功能(页脚/页眉)中也被发现存在存储型跨站脚本(Cross-Site Scripting)漏洞。
该问题同样已在 2.19.0 版本中修复。
CVE
https://www.cve.org/CVERecord?id=CVE-2024-54160