Hitta sårbar webbserver, Banner Grabbing i Python

Innehållsförteckning

I den här handledningen ska vi prata om Bannergrepp, a teknik som används för att få information om de tjänster som finns i nätverket. Tack vare detta kan vi upptäcka maskiner i nätverket som har tjänster som körs med kända sårbarheter, om vi vill kontrollera sårbarheter kan vi gå till följande sida: CVE.

För att förstå dess användning kommer vi att fortsätta med att ta ett exempel, det kommer att försöka kontrollera om en webbserver är sårbar (vi kommer bara att fokusera på webben i den här självstudien). Låt oss föreställa oss att vi letar efter 2 typer av sårbarheter, så vi lägger till följande 2 rader i en textfil (min fil kommer att kallas sårbar.txt):

 Apache / 2.4.18 CVE-2016-4979 Apache / 2.3.20 CVE-2016-4438
Sedan lägger jag in koden Pytonorm, för version 3.X, och en förklaring ges nedan.
 importera http.client host = "localhost" http = http.client.HTTPConnection (host, timeout = 2) http.request ("HEAD", "/") server = http.getresponse (). getheader ('server') sårbar = open ("vulner.txt", "r") isVulnerable = Falskt för service i sårbara: s = service.split ("") if (s [0] i servern): print (host, "has service", s [0], "med möjlig sårbarhet", s [1]) isVulnerable = True if (not isVulnerable): print (host, "har tydligen ingen server sårbar för det du letar efter")
Vi kommer nu att se en förklaring av delar av koden, först importerar vi biblioteket http.client att vi kommer att behöva det:
 importera http.client
Därefter definierar vi värd och vi upprättar anslutningen med en Paus 2 sekunder.
 host = "localhost" http = http.client.HTTPConnection (värd, timeout = 2)
Vårt nästa steg är att göra en HEAD typ begäran, som inte kommer att returnera kroppen (data, men vi behöver det inte för detta). Och då får vi svaret.
 http.request ("HEAD", "/") server = http.getresponse (). getheader ('server')
Nu öppnar vi vår textfil i läsläge (r) med sårbarheterna att leta efter, och vi skapar en boolsk variabel som hjälper oss att veta om sårbarheten hittades (det hjälper oss att visa ett meddelande eller inte i slutet).
 sårbart = öppet ("sårbart.txt", "r") esVulnerable = Falskt
För närvarande gör vi en loop, som går igenom varje sårbar server som vi har lagt i filen för att kontrollera om en används på den konsulterade sidan. Metoden används dela för att bryta linjen i servern och sårbarheten, som du kunde se ovan, separeras filen med ett tomt utrymme.
 för service i sårbara: s = service.split ("") if (s [0] på servern): print (host, "has service", s [0], "with possible vulnerability", s [1]) isVulnerable = Sant
Slutligen stänger vi filen som vi har öppen och kontrollerar om vi har hittat en sårbarhet, om inte, visar vi ett meddelande för användaren så att de informeras.
 sårbar.slut () om (inte ärVulnerable): print (host, "har tydligen ingen server sårbar för det du letar efter") 
Låt oss köra det mot 2 mål, det första är solvetic.com:

Och det andra och sista målet är min maskin, jag har en Apache -server igång som kan vara sårbar på grund av den version av Apache den använder.

Om vi ​​vill veta något om sårbarheten kan du på sidan som jag lämnade i början söka efter CVE som du kan se i terminalen: CVE-2016-4979. Du kommer att klicka på Sök och ladda ner och sätt in identifieraren i Sök huvudkopia av CVE, i rutan under texten av CVE Identifier och klicka sedan på Skicka.

Sårbarheten kommer ut och du kommer att kunna se en förklaring, referenser, datum etc.

Här avslutas handledningen, den här tekniken kan tillämpas för att söka efter sårbara tjänster, inte bara efter webbservrar, du kan också kontrollera flera värdar samtidigt, för att inte behöva starta den flera gånger, här för enkelhetens skull har den riktats till en webbserver och en enda värd. Du kan också göra Banner Grabbing med hjälp av Telnet eller Netcat, här är en bild av användningen av Telnet för att ta bort servern från min localhost:

NoteraI Windows är Telnet inaktiverat som standard, om du vill aktivera det kan du följa följande handledning.

Gillade du och hjälpte denna handledning?Du kan belöna författaren genom att trycka på den här knappen för att ge honom en positiv poäng
wave wave wave wave wave