8086 - Pentesting InfluxDB

Використовуйте Trickest для легкого створення та автоматизації робочих процесів, підтримуваних найсучаснішими інструментами спільноти. Отримайте доступ сьогодні:

Вчіться та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Вчіться та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Підтримайте HackTricks

Основна інформація

InfluxDB — це відкритий база даних часових рядів (TSDB), розроблена компанією InfluxData. TSDB оптимізовані для зберігання та обслуговування даних часових рядів, які складаються з пар мітка часу-значення. У порівнянні з базами даних загального призначення, TSDB забезпечують значні покращення в обсязі зберігання та продуктивності для наборів даних часових рядів. Вони використовують спеціалізовані алгоритми стиснення та можуть бути налаштовані для автоматичного видалення старих даних. Спеціалізовані індекси бази даних також покращують продуктивність запитів.

Порт за замовчуванням: 8086

PORT     STATE SERVICE VERSION
8086/tcp open  http    InfluxDB http admin 1.7.5

Enumeration

З точки зору пентестера, це ще одна база даних, яка може зберігати чутливу інформацію, тому цікаво знати, як вивантажити всю інформацію.

Authentication

InfluxDB може вимагати автентифікацію або ні

# Try unauthenticated
influx -host 'host name' -port 'port #'
> use _internal

Якщо ви отримуєте помилку, подібну до цієї: ERR: unable to parse authentication credentials, це означає, що очікуються деякі облікові дані.

influx –username influx –password influx_pass

Було виявлено вразливість influxdb, яка дозволяла обійти аутентифікацію: CVE-2019-20933

Ручна енумерація

Інформація цього прикладу була взята з тут.

Показати бази даних

Знайдені бази даних - telegraf та internal (ви знайдете цю всюди)

> show databases
name: databases
name
----
telegraf
_internal

Show tables/measurements

The InfluxDB documentation пояснює, що вимірювання в InfluxDB можна порівняти з таблицями SQL. Номенклатура цих вимірювань вказує на їх відповідний вміст, кожне з яких містить дані, що стосуються певної сутності.

> show measurements
name: measurements
name
----
cpu
disk
diskio
kernel
mem
processes
swap
system

Показати ключі полів

Ключі полів подібні до стовпців бази даних

> 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 ...]

Dump Table

І нарешті ви можете вивантажити таблицю, виконавши щось на зразок

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

У деяких тестах з обхідною аутентифікацією було зазначено, що ім'я таблиці повинно бути в подвійних лапках, наприклад: select * from "cpu"

Автоматизована аутентифікація

msf6 > use auxiliary/scanner/http/influxdb_enum

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Підтримайте HackTricks

Використовуйте Trickest для легкого створення та автоматизації робочих процесів, підтримуваних найсучаснішими інструментами спільноти. Отримайте доступ сьогодні:

Last updated