In deze tutorial gaan we het hebben over Banner grijpen, een techniek die wordt gebruikt om informatie te verkrijgen over de services die op het netwerk worden gevonden. Hierdoor kunnen we machines op het netwerk ontdekken waarop services draaien met bekende kwetsbaarheden. Als we kwetsbaarheden willen controleren, kunnen we naar de volgende pagina gaan: CVE.
Om het gebruik ervan te begrijpen, gaan we verder met het maken van een voorbeeld, het zal proberen te controleren of een webserver kwetsbaar is (we gaan ons in deze tutorial alleen concentreren op het web). Stel dat we op zoek zijn naar 2 soorten kwetsbaarheden, dus we voegen de volgende 2 regels toe aan een tekstbestand (mijn bestand heet kwetsbare.txt):
Apache / 2.4.18 CVE-2016-4979 Apache / 2.3.20 CVE-2016-4438Vervolgens plaats ik de code in Python, voor de versie 3.X, en hieronder wordt een toelichting gegeven.
import http.client host = "localhost" http = http.client.HTTPConnection (host, time-out = 2) http.request ("HEAD", "/") server = http.getresponse (). getheader ('server') kwetsbaar = open ("vulnerable.txt", "r") isKwetsbaar = False voor service in kwetsbaar: s = service.split ("") if (s [0] in server): print (host, "heeft service", s [0], "met mogelijke kwetsbaarheid", s [1]) isKwetsbaar = True if (niet isKwetsbaar): print (host, "heeft blijkbaar geen server die kwetsbaar is voor wat u zoekt")We gaan nu een uitleg zien door delen van de code, eerst importeren we de bibliotheek http.client dat we het nodig hebben:
importeer http.clientVervolgens definiëren we de gastheer en we leggen de verbinding, met a time-out 2 seconden.
host = "localhost" http = http.client.HTTPConnection (host, time-out = 2)Onze volgende stap is om een HEAD-type verzoek:, die de body niet teruggeeft (de gegevens, maar we hebben deze hiervoor niet nodig). En dan krijgen we het antwoord.
http.request ("HEAD", "/") server = http.getresponse (). getheader ('server')Nu openen we ons tekstbestand in leesmodus (R) met de kwetsbaarheden waarnaar we moeten zoeken, en we creëren een Booleaanse variabele die ons helpt te weten of de kwetsbaarheid is gevonden (het zal ons helpen om een bericht te tonen of niet aan het einde).
kwetsbaar = open ("vulnerable.txt", "r") esKwetsbaar = FalseOp dit moment zullen we een lus maken, die door elke kwetsbare server die we in het bestand hebben geplaatst, zal gaan om te controleren of er een wordt gebruikt op de geraadpleegde pagina. De methode wordt gebruikt splitsen om de lijn in server en kwetsbaarheid te doorbreken, zoals je hierboven kon zien, wordt het bestand gescheiden door een spatie.
voor service in kwetsbaar: s = service.split ("") if (s [0] in server): print (host, "heeft service", s [0], "met mogelijke kwetsbaarheid", s [1]) isKwetsbaar = WaarTen slotte sluiten we het bestand dat we open hebben staan en controleren we of we een kwetsbaarheid hebben gevonden, zo niet, dan tonen we een bericht aan de gebruiker zodat deze op de hoogte is.
kwetsbaar.close () if (not isKulnerable): print (host, "heeft blijkbaar geen server die kwetsbaar is voor wat u zoekt")Laten we het tegen 2 doelen stellen, de eerste is solvetic.com:
En het tweede en laatste doel is mijn machine, ik heb een Apache-server die kwetsbaar kan zijn vanwege de versie van Apache die wordt gebruikt.
Als we iets willen weten over de kwetsbaarheid, kun je op de pagina die ik aan het begin heb achtergelaten zoeken naar de CVE die je in de terminal kunt zien: CVE-2016-4979. U klikt op Zoeken en downloaden en plaats de identifier in Zoek hoofdkopie van CVE, in het vak onder de tekst door CVE-identificatie en klik vervolgens op Verzenden.
De kwetsbaarheid komt naar buiten en u krijgt uitleg, referenties, data, etc.
Hier concludeert de tutorial, deze techniek kan worden toegepast om te zoeken naar kwetsbare services, niet alleen voor webservers, je kunt ook meerdere hosts tegelijkertijd controleren, om het niet meerdere keren te hoeven starten, hier is het voor de eenvoud bedoeld naar een webserver en een enkele host. Je kunt Banner Grabbing ook doen met behulp van Telnet of Netcat, hier is een afbeelding van het gebruik van Telnet om de server van mijn localhost te verwijderen:
OpmerkingIn Windows is Telnet standaard uitgeschakeld, als je het wilt activeren kun je de volgende tutorial volgen.
Vond je deze Tutorial leuk en heb je eraan geholpen?Je kunt de auteur belonen door op deze knop te drukken om hem een positief punt te geven