# 8086 - Pentesting InfluxDB {{#include ../banners/hacktricks-training.md}} ## Basic Information **InfluxDB** είναι μια ανοιχτού κώδικα **βάση δεδομένων χρονικών σειρών (TSDB)** που αναπτύχθηκε από την InfluxData. Οι TSDB είναι βελτιστοποιημένες για την αποθήκευση και την εξυπηρέτηση δεδομένων χρονικών σειρών, τα οποία αποτελούνται από ζεύγη χρονικής σήμανσης-τιμής. Σε σύγκριση με τις βάσεις δεδομένων γενικής χρήσης, οι TSDB παρέχουν σημαντικές βελτιώσεις στον **χώρο αποθήκευσης** και στην **απόδοση** για σύνολα δεδομένων χρονικών σειρών. Χρησιμοποιούν εξειδικευμένους αλγόριθμους συμπίεσης και μπορούν να ρυθμιστούν ώστε να αφαιρούν αυτόματα παλιά δεδομένα. Οι εξειδικευμένοι δείκτες βάσεων δεδομένων βελτιώνουν επίσης την απόδοση των ερωτημάτων. **Προεπιλεγμένη θύρα**: 8086 ``` PORT STATE SERVICE VERSION 8086/tcp open http InfluxDB http admin 1.7.5 ``` ## Enumeration Από την οπτική γωνία ενός pentester, αυτή είναι μια άλλη βάση δεδομένων που θα μπορούσε να αποθηκεύει ευαίσθητες πληροφορίες, οπότε είναι ενδιαφέρον να γνωρίζουμε πώς να εξάγουμε όλες τις πληροφορίες. ### Authentication Το InfluxDB μπορεί να απαιτεί αυθεντικοποίηση ή όχι. ```bash # 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**](https://github.com/LorenzoTullini/InfluxDB-Exploit-CVE-2019-20933) ### Χειροκίνητη Αρίθμηση Οι πληροφορίες αυτού του παραδείγματος ελήφθησαν από [**εδώ**](https://oznetnerd.com/2017/06/11/getting-know-influxdb/). #### Εμφάνιση βάσεων δεδομένων Οι βρέθηκαν βάσεις δεδομένων είναι `telegraf` και `internal` (θα βρείτε αυτήν παντού) ```bash > show databases name: databases name ---- telegraf _internal ``` #### Εμφάνιση πινάκων/μετρήσεων Η [**τεκμηρίωση InfluxDB**](https://docs.influxdata.com/influxdb/v1.2/introduction/getting_started/) εξηγεί ότι οι **μετρήσεις** στο InfluxDB μπορούν να παραλληλιστούν με τους πίνακες SQL. Η ονοματολογία αυτών των **μετρήσεων** είναι ενδεικτική του αντίστοιχου περιεχομένου τους, κάθε μία φιλοξενεί δεδομένα σχετικά με μια συγκεκριμένη οντότητα. ```bash > show measurements name: measurements name ---- cpu disk diskio kernel mem processes swap system ``` #### Εμφάνιση κλειδιών πεδίων Τα κλειδιά πεδίων είναι σαν τις **στήλες** της βάσης δεδομένων ```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 ...] ``` #### Dump Table Και τελικά μπορείτε να **dump the table** κάνοντας κάτι σαν ```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 ``` > [!WARNING] > Σε κάποιες δοκιμές με την παράκαμψη αυθεντικοποίησης παρατηρήθηκε ότι το όνομα του πίνακα έπρεπε να είναι μέσα σε διπλά εισαγωγικά όπως: `select * from "cpu"` ### Αυτοματοποιημένη Αυθεντικοποίηση ```bash msf6 > use auxiliary/scanner/http/influxdb_enum ``` {{#include ../banners/hacktricks-training.md}}