SNMP RCE
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 :
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 :
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:
Ou un shell inversé :
Références
Last updated