最近大家一直都在分析log4j,但是好像都将在log4j前几天爆出的Grafana 任意文件读取漏洞(CVE-2021-43798 )忘记了,这个漏洞危害也不算太小,可以造成任意文件读取,配合其它漏洞打组合拳,也能造成不小的危害
Grafana
使用 Grafana,可以通过美观、灵活的仪表板创建、探索和共享您的所有数据,将数据美观化、可视化。
高严重性的受影响版本
Grafana 8.0.0-beta1 到 8.3.0
漏洞分析
https://github.com/grafana/grafana/compare/v8.3.0...v8.3.1
我们看到v8.3.0->v8.3.1只修改了pkg/api/plugins.go中的代码
我们这个边使用v8.3.0的源码进行分析,下载地址:https://github.com/grafana/grafana/releases/tag/v8.3.0
根据代码的更改,直接跟进到pkg/api/plugins.go
的结构体getPluginAssets
中,会先查找插件是否存在,如果插件不存在,则返回"Plugin not found"
,如果存在这个插件名,则会匹配 /public/plugins/:pluginId/*
中的*
,最后打开上述的pluginFilePath
并输出相关内容。我们可以构造如下payload,/public/plugins/插件名/想要访问文件的相对路径
造成任意文件读取漏洞
我们可以遍历插件名,对目标网站进行攻击
grafana默认安装的插件有:
alertlist
annolist
grafana-azure-monitor-datasource
barchart
bargauge
cloudwatch
dashlist
elasticsearch
gauge
geomap
gettingstarted
stackdriver
graph
graphite
heatmap
histogram
influxdb
jaeger
logs
loki
mssql
mysql
news
nodeGraph
opentsdb
piechart
pluginlist
postgres
prometheus
stat
state-timeline
status-history
table
table-old
tempo
testdata
text
timeseries
welcome
zipkin
漏洞利用
已有安全设备捕获到漏洞
利用具体exp可参考https://github.com/ambitiousleader/some-automated-script/tree/main/grafana%E4%BB%BB%E6%84%8F%E6%96%87%E4%BB%B6%E8%AF%BB%E5%8F%96((CVE-2021-43798)
利用成功如下
Bypass Nginx
修复如果使用目标站点是存在漏洞版本但是无法利用成功,那么可能是使用了Nginx代理转发进行了漏洞的修复,可以构造如下/public/plugins/:pluginId/#/../..%2f..%2f
来绕过修复,只需要在插件名后加上/#/
就可以了。
总结
- 本文作者: 苏苏的五彩棒
- 本文来源: 奇安信攻防社区
- 原文链接: https://forum.butian.net/share/1003
- 版权声明: 除特别声明外,本文各项权利归原文作者和发表平台所有。转载请注明出处!