hacktricks/network-services-pentesting/8086-pentesting-influxdb.md

150 lines
7.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 8086 - Pentesting InfluxDB
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir e **automatizar fluxos de trabalho** com as ferramentas comunitárias **mais avançadas** do mundo.\
Obtenha Acesso Hoje:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
<details>
<summary><strong>Aprenda AWS hacking do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga**-me no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios do GitHub** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
## Informações Básicas
**InfluxDB** é um **banco de dados de séries temporais** (TSDB) de código aberto desenvolvido pela empresa InfluxData.
Um **banco de dados de séries temporais (TSDB)** é um sistema de software otimizado para armazenar e **servir séries temporais** através de pares associados de tempo(s) e valor(es).
Conjuntos de dados de séries temporais são **relativamente grandes e uniformes comparados a outros conjuntos de dados**―geralmente compostos por um carimbo de data/hora e dados associados. Conjuntos de dados de séries temporais também podem ter menos relações entre entradas de dados em diferentes tabelas e não requerem armazenamento indefinido de entradas. As propriedades únicas de conjuntos de dados de séries temporais significam que bancos de dados de séries temporais podem oferecer **melhorias significativas em espaço de armazenamento e desempenho em comparação com bancos de dados de propósito geral**. Por exemplo, devido à uniformidade dos dados de séries temporais, **algoritmos de compressão especializados** podem oferecer melhorias em relação a algoritmos de compressão regulares projetados para trabalhar com dados menos uniformes. Bancos de dados de séries temporais também podem ser **configurados para deletar regularmente dados antigos**, ao contrário de bancos de dados regulares que são projetados para armazenar dados indefinidamente. Índices de banco de dados especiais também podem fornecer aumentos no desempenho de consultas. (De [aqui](https://en.wikipedia.org/wiki/Time\_series\_database)).
**Porta padrão**: 8086
```
PORT STATE SERVICE VERSION
8086/tcp open http InfluxDB http admin 1.7.5
```
## Enumeração
Do ponto de vista de um pentester, este é outro banco de dados que pode estar armazenando informações sensíveis, então é interessante saber como extrair todas as informações.
### Autenticação
InfluxDB pode exigir autenticação ou não
```bash
# Try unauthenticated
influx -host 'host name' -port 'port #'
> use _internal
```
Se você **receber um erro como** este: `ERR: unable to parse authentication credentials`, significa que ele está **esperando algumas credenciais**.
```
influx username influx password influx_pass
```
Havia uma vulnerabilidade no influxdb que permitia contornar a autenticação: [**CVE-2019-20933**](https://github.com/LorenzoTullini/InfluxDB-Exploit-CVE-2019-20933)
### Enumeração Manual
As informações deste exemplo foram retiradas [**aqui**](https://oznetnerd.com/2017/06/11/getting-know-influxdb/).
#### Exibir bancos de dados
Os bancos de dados encontrados são _telegraf_ e _\_internal_ (este último você encontrará em todos os lugares)
```bash
> show databases
name: databases
name
----
telegraf
_internal
```
#### Exibir tabelas/medições
Como a [**documentação do InfluxDB**](https://docs.influxdata.com/influxdb/v1.2/introduction/getting_started/) explica, as **medições** SQL podem ser consideradas como tabelas SQL. Como os nomes das **medições** acima sugerem, cada uma contém informações que se referem a uma entidade específica
```bash
> show measurements
name: measurements
name
----
cpu
disk
diskio
kernel
mem
processes
swap
system
```
#### Exibir colunas/field keys
Os field keys são como as **colunas** do banco de dados
```bash
> show field keys
name: cpu
fieldKey fieldType
-------- ---------
usage_guest float
usage_guest_nice float
usage_idle float
usage_iowait float
name: disk
fieldKey fieldType
-------- ---------
free integer
inodes_free integer
inodes_total integer
inodes_used integer
[ ... more keys ...]
```
#### Despejar Tabela
E finalmente você pode **despejar a tabela** fazendo algo como
```bash
select * from cpu
name: cpu
time cpu host usage_guest usage_guest_nice usage_idle usage_iowait usage_irq usage_nice usage_softirq usage_steal usage_system usage_user
---- --- ---- ----------- ---------------- ---------- ------------ --------- ---------- ------------- ----------- ------------ ----------
1497018760000000000 cpu-total ubuntu 0 0 99.297893681046 0 0 0 0 0 0.35105315947842414 0.35105315947842414
1497018760000000000 cpu1 ubuntu 0 0 99.69909729188728 0 0 0 0 0 0.20060180541622202 0.10030090270811101
```
{% hint style="warning" %}
Em alguns testes com o bypass de autenticação, foi observado que o nome da tabela precisava estar entre aspas duplas, como: `select * from "cpu"`
{% endhint %}
### Autenticação Automatizada
```bash
msf6 > use auxiliary/scanner/http/influxdb_enum
```
<details>
<summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Outras formas de apoiar o HackTricks:
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
<figure><img src="../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir e **automatizar workflows** facilmente, com ferramentas da comunidade **mais avançadas** do mundo.\
Obtenha Acesso Hoje:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}