8089 - Pentesting Splunkd
Información Básica
Splunk es una herramienta de análisis de registros que desempeña 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 de SIEM (Seguridad de la Información y Gestión de Eventos), ha ganado popularidad en el ámbito del monitoreo de seguridad y analítica empresarial.
Las implementaciones de Splunk se utilizan con frecuencia para almacenar datos sensibles y pueden servir como una fuente valiosa de información para posibles atacantes si logran comprometer el sistema. Puerto predeterminado: 8089
El servidor web de Splunk se ejecuta de forma predeterminada en el puerto 8000.
Enumeración
Versión Gratuita
La prueba de Splunk Enterprise se convierte en una versión gratuita después de 60 días, la cual no requiere autenticación. No es raro que los administradores de sistemas instalen una prueba de Splunk para probarlo, la cual es posteriormente olvidada. Esto se convertirá automáticamente en la versión gratuita que no tiene ningún tipo 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 antiguas de Splunk, las credenciales predeterminadas son admin:changeme
, las cuales 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 iniciada la sesión en Splunk, podemos navegar por datos, ejecutar informes, crear paneles de control, 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 del lado del servidor, puntos finales REST, entradas script y scripts de alerta. Un método común para obtener ejecución de código remoto en un servidor Splunk es a través del uso de una entrada script.
Además, como Splunk se puede instalar en hosts Windows o Linux, se pueden crear entradas script 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. Ten en cuenta que Splunk viene con Python instalado, por lo que incluso en sistemas Windows podrás ejecutar código python.
Puedes usar esto paquete de Splunk para ayudarnos. El directorio bin
en este repositorio tiene ejemplos para Python y PowerShell. Vamos a seguir esto paso a paso.
Para lograr esto, primero necesitamos crear una aplicación personalizada de Splunk utilizando la siguiente estructura de directorio:
El directorio bin
contendrá cualquier script que tengamos la intención de ejecutar (en este caso, un shell inverso de PowerShell), y el directorio predeterminado tendrá nuestro archivo inputs.conf
. Nuestro shell inverso será un comando de una sola línea de PowerShell:
El archivo inputs.conf indica a Splunk qué script ejecutar y cualquier otra condición. Aquí establecemos la aplicación como habilitada y le indicamos a Splunk que ejecute el script cada 10 segundos. El intervalo siempre se establece en segundos, y la entrada (script) solo se ejecutará si esta configuración está presente.
Necesitamos el archivo .bat
, que se ejecutará cuando se implemente la aplicación y ejecutará la línea de comandos 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.
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 ya que el estado de la aplicación cambiará automáticamente a Habilitado
.
Linux
Si estuviéramos tratando con un anfitrión Linux, necesitaríamos editar el script Python rev.py
antes de crear el archivo 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 escuchador de Netcat y estaríamos listos para empezar.
RCE & Escalada 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:
pageSplunk LPE and PersistenceReferencias
Última actualización