Trouver un serveur Web vulnérable, une capture de bannière en Python

Table des matières

Dans ce tutoriel, nous allons parler de Saisie de bannières, ongle technique utilisée pour obtenir des informations sur les services présents sur le réseau. Grâce à cela, nous pouvons découvrir des machines sur le réseau qui ont des services fonctionnant avec des vulnérabilités connues, si nous voulons vérifier les vulnérabilités, nous pouvons aller à la page suivante : CVE.

Pour comprendre son utilisation, nous allons procéder à un exemple, il va essayer de vérifier si un serveur web est vulnérable (nous allons nous concentrer uniquement sur le web dans ce tutoriel). Imaginons que nous recherchions 2 types de vulnérabilités, nous ajoutons donc les 2 lignes suivantes à un fichier texte (mon fichier s'appellera vulnérable.txt):

 Apache / 2.4.18 CVE-2016-4979 Apache / 2.3.20 CVE-2016-4438
Ensuite, je mets le code dans Python, pour la version 3.X, et une explication est donnée ci-dessous.
 import http.client host = "localhost" http = http.client.HTTPConnection (host, timeout = 2) http.request ("HEAD", "/") server = http.getresponse (). getheader ('server') vulnérable = open ("vulnerable.txt", "r") isVulnerable = False pour le service dans vulnérable : s = service.split ("") if (s [0] dans le serveur): print (host, "a service", s [0], "avec vulnérabilité possible", s [1]) isVulnerable = True if (pas isVulnerable): print (host, "apparemment aucun serveur n'est vulnérable à ce que vous recherchez")
Nous allons voir maintenant une explication par parties du code, d'abord nous importons la bibliothèque http.client que nous allons en avoir besoin :
 importer http.client
Ensuite, nous définissons le héberger et nous établissons la connexion, avec un temps libre 2 secondes.
 host = "localhost" http = http.client.HTTPConnection (hôte, timeout = 2)
Notre prochaine étape consiste à faire un Demande de type de TÊTE, qui ne retournera pas le corps (les données, mais nous n'en avons pas besoin pour cela). Et puis nous obtenons la réponse.
 http.request ("HEAD", "/") server = http.getresponse (). getheader ('server')
Nous allons maintenant ouvrir notre fichier texte en mode lecture (r) avec les vulnérabilités à rechercher, et nous créons une variable booléenne qui nous aide à savoir si la vulnérabilité a été trouvée (elle nous aidera à afficher un message ou non à la fin).
 vulnérable = ouvert ("vulnerable.txt", "r") esVulnerable = False
A ce moment nous allons faire une boucle, qui va parcourir chaque serveur vulnérable que nous avons mis dans le fichier pour vérifier si un est utilisé dans la page consultée. La méthode est utilisée diviser pour rompre la ligne dans le serveur et la vulnérabilité, comme vous avez pu le voir ci-dessus, le fichier est séparé par un espace vide.
 pour le service dans vulnérable : s = service.split ("") if (s [0] dans le serveur): print (hôte, "a un service", s [0], "avec une vulnérabilité possible", s [1]) isVulnerable = Vrai
Enfin, nous fermons le fichier que nous avons ouvert et vérifions si nous avons trouvé une vulnérabilité, sinon, nous montrons un message à l'utilisateur pour qu'il soit informé.
 vulnérable.close () if (pas isVulnerable): print (hôte, "apparemment aucun serveur n'est vulnérable à ce que vous recherchez") 
Eh bien, exécutons-le contre 2 cibles, la première est solvetic.com :

Et la deuxième et dernière cible est ma machine, j'ai un serveur Apache en cours d'exécution qui pourrait être vulnérable, en raison de la version d'Apache qu'il utilise.

Si nous voulons savoir quelque chose sur la vulnérabilité, dans la page que j'ai laissée au début, vous pouvez rechercher le CVE que vous pouvez voir dans le terminal : CVE-2016-4979. Vous cliquerez sur Recherche et téléchargements et insérez l'identifiant dans Rechercher une copie principale de CVE, dans la case sous le texte par identifiant CVE puis cliquez sur Soumettre.

La vulnérabilité sortira, et vous pourrez voir une explication, des références, des dates, etc.

Ici se termine le tutoriel, cette technique peut être appliquée pour rechercher des services vulnérables non seulement pour les serveurs web, vous pouvez également vérifier plusieurs hôtes en même temps, afin de ne pas avoir à le lancer plusieurs fois, ici pour plus de simplicité il a été orienté à un serveur Web et à un hôte unique. Vous pouvez également faire du Banner Grabbing à l'aide de Telnet ou Netcat, voici une image de l'utilisation de Telnet pour supprimer le serveur de mon hôte local :

NoterDans Windows Telnet est désactivé par défaut, si vous souhaitez l'activer vous pouvez suivre le tutoriel suivant.

Avez-vous aimé et aidé ce tutoriel ?Vous pouvez récompenser l'auteur en appuyant sur ce bouton pour lui donner un point positif

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave