# 8086 - Pentesting InfluxDB {{#include ../banners/hacktricks-training.md}} ## Basic Information **InfluxDB** एक ओपन-सोर्स **टाइम सीरीज डेटाबेस (TSDB)** है जिसे InfluxData द्वारा विकसित किया गया है। TSDBs को टाइम सीरीज डेटा को स्टोर और सर्व करने के लिए ऑप्टिमाइज़ किया गया है, जिसमें टाइमस्टैम्प-मान जोड़े होते हैं। सामान्य प्रयोजन के डेटाबेस की तुलना में, TSDBs टाइम सीरीज डेटासेट्स के लिए **स्टोरेज स्पेस** और **परफॉर्मेंस** में महत्वपूर्ण सुधार प्रदान करते हैं। वे विशेषीकृत संकुचन एल्गोरिदम का उपयोग करते हैं और पुराने डेटा को स्वचालित रूप से हटाने के लिए कॉन्फ़िगर किए जा सकते हैं। विशेषीकृत डेटाबेस इंडेक्स भी क्वेरी प्रदर्शन को बढ़ाते हैं। **डिफ़ॉल्ट पोर्ट**: 8086 ``` PORT STATE SERVICE VERSION 8086/tcp open http InfluxDB http admin 1.7.5 ``` ## Enumeration एक पेंटेस्टर के दृष्टिकोण से, यह एक और डेटाबेस है जो संवेदनशील जानकारी संग्रहीत कर सकता है, इसलिए यह जानना दिलचस्प है कि सभी जानकारी को कैसे डंप किया जाए। ### 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 ``` #### Show tables/measurements The [**InfluxDB documentation**](https://docs.influxdata.com/influxdb/v1.2/introduction/getting_started/) यह बताता है कि InfluxDB में **measurements** को SQL तालिकाओं के साथ समानांतर किया जा सकता है। इन **measurements** की नामकरण उनकी संबंधित सामग्री का संकेत देता है, प्रत्येक एक विशेष इकाई से संबंधित डेटा को समाहित करता है। ```bash > show measurements name: measurements name ---- cpu disk diskio kernel mem processes swap system ``` #### Show columns/field keys फील्ड कीज़ डेटाबेस के **कॉलम** की तरह होती हैं ```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}}