
Outil de scan pour tester les vulnérabilités SaltStack CVE-2020-11651 & CVE-2020-11652.
Qu'est-ce que c'est ?
Outil de scan pour tester les vulnérabilités SaltStack CVE-2020-11651 et CVE-2020-11652.
Ces vulnérabilités permettent à un attaquant connecté au port "request server" de contourner tous les contrôles d'authentification et d'autorisation, de publier des messages de contrôle arbitraires, de lire et d'écrire des fichiers n'importe où sur le système de fichiers du serveur "master" et de voler la clé secrète utilisée pour s'authentifier en tant que root auprès du master. L'impact est une exécution complète de commandes à distance en tant que root à la fois sur le master et sur tous les minions qui s'y connectent.
Comment l'installer.
L'outil nécessite Python 2.7 ou Python 3. Les dépendances externes peuvent être installées avec pip ou easy_install. Par exemple :
sudo pip install -r requirements.txt
Comment l'utiliser ?
Il y a 2 méthodes de détection incluses :
Divulgation de jeton (-t)
Cette méthode est invoquée avec l'option -t et tente de lire le jeton root de Salt en exploitant la faille. Bien que cette méthode soit autonome, elle ne fonctionne que sur les versions récentes, certaines versions plus anciennes ne sont pas prises en charge.
Exécution de code à distance vers sortie de bande (DNS) (-c)
Cette méthode exploite la faille en exécutant la commande nslookup pour déclencher une requête DNS vers le serveur Appcheck Sentinel. Le scanner consulte ensuite le serveur DNS AppCheck pour déterminer si elle a été exécutée. Pour y parvenir, l'outil doit se connecter vers https://ptst.io/
Remarque : Pour plus d'informations sur Sentinel, voir la section [4] ci-dessous
Ligne de commande recommandée : salt_rce_scanner.py -r plage_ip_cidr -t -c
[Options de ligne de commande]
/ _ \ / __ \ | | |
/ /\ _ __ _ __ | / / |__ ___ | | __
| _ | ' | ' | | | ' \ / _ / __| |/ /
| | | | |) | |) | _/\ | | | / (| <
_| |/ ./| ./ _/| ||_|___||_
| | | |
|| |_|
Scanner SaltStack (CVE-2020-11651 et CVE-2020-11652)
Auteur : Gary O'Leary-Steele
Version : 0.1 Alpha
Utilisez -h pour voir les options d'utilisation
arguments optionnels : -h, --help affiche ce message d'aide et quitte -r PLAGE_CIDR Hôte cible ou plage CIDR à scanner -p PORT Port cible (4506 par défaut) -c Active le test d'injection de commande à distance (DNS sortant de bande vers AppCheck Sentinel) -t Active la vérification de divulgation du jeton root -T THREADS Nombre maximum de threads (50 par défaut) -o FICHIER_SORTIE Fichier de sortie
[4] AppCheck Sentinel
= Contexte =
Traditionnellement, les failles de sécurité des applications web sont détectées en modifiant les données fournies par le client pour tenter de déclencher une réponse spécifique du serveur. Par exemple, les failles d'injection SQL sont souvent détectées en soumettant des charges utiles qui provoquent le retour d'une signature par le serveur de base de données ; dans d'autres cas, les charges utiles sont conçues pour déclencher un délai temporel spécifique qui peut être mesuré pour détecter la faille. Dans chaque cas, ces méthodes utilisent des techniques en bande où l'attaque et la réponse empruntent le même chemin que le trafic normal du site web et aboutissent à une confirmation immédiate de la vulnérabilité.
= Détection hors bande =
Il existe cependant des cas où les techniques en bande ne sont pas efficaces. Par exemple, considérons un site de commerce électronique qui collecte des commandes qui sont ensuite examinées ultérieurement via un système de traitement des commandes en back-end. Bien qu'AppCheck détecte les vulnérabilités (en bande) dans le site eCommerce lors d'un scan de routine, les vulnérabilités dans le système de traitement des commandes en back-end peuvent ne pas être déclenchées avant d'être consultées (par un autre utilisateur ou processus) plus tard.
D'autres cas courants surviennent lorsque le déclenchement de la vulnérabilité ne fournit pas un mécanisme en bande fiable pour confirmer la faille. Par exemple, la mesure des temps de réponse du serveur pourrait être peu fiable si les temps de réponse normaux du serveur sont irréguliers. Dans d'autres cas, la vulnérabilité peut ne pas affecter la manière dont le serveur répond, que l'exploitation réussisse ou non.
Afin de surmonter ces limitations, AppCheck implémente un système de détection hors bande nommé Sentinel.
Sentinel est un système de surveillance basé sur le cloud qui héberge des services DNS, SMTP, HTTP(s) et SMB spécialement conçus pour intercepter les connexions hors bande déclenchées par une charge utile d'attaque AppCheck.
Lors d'un scan, AppCheck soumet des charges utiles spécialement conçues pour déclencher des connexions hors bande lorsqu'elles sont exécutées avec succès. Sentinel détecte alors cette exécution et met à jour les résultats du scan en conséquence. L'une des techniques les plus courantes est l'utilisation de jetons DNS intégrés dans la charge utile. Par conception, les requêtes DNS sont transmises au serveur DNS faisant autorité pour un domaine donné afin d'être résolues. Par conséquent, même si le système vulnérable n'est pas autorisé à accéder à Internet, tant qu'il peut résoudre des noms DNS, il peut communiquer avec Sentinel.