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

106 lines
5.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
{{#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}}