8089 - Pentesting Splunkd
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
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
El servidor web de Splunk se ejecuta por defecto en el puerto 8000.
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.
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.
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.
Splunk build
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:
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:
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.
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.
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
.
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.
En la siguiente página puedes encontrar una explicación de cómo este servicio puede ser abusado para escalar privilegios y obtener persistencia:
Splunk LPE and PersistenceAprende 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)