
Un script Ruby qui recherche des applications web tierces vulnérables et exploitables sur un réseau.
Yasuo est un script ruby qui recherche les applications web tierces vulnérables.
Lors d’une évaluation de sécurité réseau (interne, externe, missions redteam, etc.), nous rencontrons souvent des applications web tierces vulnérables ou des interfaces web frontales qui nous permettent de compromettre le serveur distant en exploitant des vulnérabilités publiquement connues. Parmi les applications les plus courantes et appréciées figurent l'interface d'administration Apache Tomcat, jmx-console de JBoss, Hudson Jenkins, etc.
Si l'on parcourt Exploit-db, il existe plus de 10 000 vulnérabilités exploitables à distance dans des tonnes d'applications/interfaces web qui pourraient permettre à un attaquant de compromettre totalement le serveur back-end. Ces vulnérabilités vont de l'exécution de code à distance (RCE) au téléchargement malveillant de fichiers, en passant par l'injection SQL, l'inclusion de fichiers distants/locaux (RFI/LFI), etc.
Yasuo a été conçu pour scanner rapidement le réseau à la recherche de telles applications vulnérables, offrant ainsi des cibles exploitables sur un plateau d'argent.
Vous devez installer les gems suivants :
bundle install --path vendor
bundler exec ./yasuo.rb -f [myfile]
Yasuo propose les options en ligne de commande suivantes :
-r :: Si vous souhaitez que Yasuo effectue un scan de ports, utilisez cette option pour fournir une adresse IP ou une plage IP.
-l :: Si vous souhaitez que Yasuo effectue un scan de ports, utilisez cette option pour fournir un fichier d'entrée avec des adresses IP séparées par des sauts de ligne, similaire à l'option -iL de nmap.
-s :: Fournir un fichier de signatures personnalisé. [./yasuo.rb -s mysignatures.yaml -f nmap.xml] [Par défaut - signatures.yaml]
-f :: Si vous ne voulez pas que Yasuo effectue un scan de ports et que vous possédez déjà une sortie nmap au format xml, utilisez cette option pour fournir la sortie nmap.
-u :: Prend un fichier d'URLs séparées par des sauts de ligne, sauvegardées lors d'une exécution précédente de Yasuo. Voir ci-dessous pour plus de détails.
-n :: Indique à Yasuo de ne pas pinger l'hôte lors du scan de ports. Option standard nmap.
-p :: Utilisez cette option pour fournir le(s) numéro(s) de port / plage.
-A :: Utilisez cette option pour scanner tous les 65535 ports. Option standard nmap.
-b [all/form/basic] :: Si l'application découverte implémente une authentification, utilisez cette option pour forcer l'authentification. "all" force à la fois l'authentification par formulaire et HTTP basic. "form" force uniquement l'authentification par formulaire. "basic" force uniquement l'authentification HTTP basic.
-t :: Spécifier le nombre maximum de threads.
-h :: Eh bien, devinez.
Lorsque Yasuo s'exécute, il effectue plusieurs étapes avant de commencer à énumérer les applications vulnérables. Si vous fournissez une adresse IP ou une plage, il effectuera un scan de ports sur les cibles fournies. Si vous fournissez à Yasuo un fichier de sortie nmap au format xml, il analysera ce fichier et énumérera les hôtes avec des ports web ouverts. Il envoie ensuite une requête pour un fichier et un répertoire factices (inexistants) à chaque hôte:port énuméré. Pour réduire les faux positifs, il écarte toutes les ip:port qui répondent avec un code HTTP 200 Ok pour les requêtes de fichier et répertoire factices. À la fin de ce processus, nous obtenons une liste de ce que l'on appelle de "bonnes URLs". Ces bonnes URLs sont ensuite utilisées pour énumérer les applications vulnérables.
Si pour une raison quelconque, vous devez relancer Yasuo sur le même ensemble de cibles, les versions précédentes de Yasuo recommenceraient tout ce processus. Ce n'est pas du tout efficace. Je sais, je suis plutôt lent d'esprit et j'apprends lentement, mais j'évolue constamment. Bref, une bonne raison de relancer Yasuo sur les mêmes cibles pourrait être d'utiliser un fichier de signatures différent (ou personnalisé).
Cette dernière version de Yasuo sauvegardera automatiquement un fichier, savedURLstateXXXXX.out, dans le même dossier à partir duquel il est exécuté. Ce fichier contiendra toutes les "bonnes URLs". Si vous prévoyez de relancer Yasuo sur les mêmes cibles, il suffit de fournir ce fichier à Yasuo sans les options -f ou -r.
Exemple : ruby yasuo.rb -s my_custom_signatures.yaml -u savedURLstateXXXXX.out
Yasuo analysera ce fichier et commencera à énumérer les applications vulnérables sur les "bonnes URLs" listées. Et le tour est joué.
./yasuo -r 127.0.0.1 -p 80,8080,443,8443 -b form
La commande ci-dessus effectuera un scan de ports contre 127.0.0.1 sur les ports 80, 8080, 443 et 8443 et forcera la connexion pour toutes les applications qui implémentent une authentification par formulaire.
./yasuo -l /project/hosts -p 80,8080,443,8443
La commande ci-dessus effectuera un scan de ports contre les hôtes du fichier /projetcs/hosts sur les ports 80, 8080, 443 et 8443 et n'effectuera aucune action de force brute sur les applications découvertes.
./yasuo -f my_nmap_output.xml -b all
La commande ci-dessus analysera le fichier de sortie nmap "my_nmap_output.xml" et forcera la connexion pour toutes les applications qui implémentent une authentification par formulaire et HTTP basic.
