I denne tutorial vil vi tale om Bannergreb, a teknik, der bruges til at indhente oplysninger om de tjenester, der findes på netværket. Takket være dette kan vi opdage maskiner på netværket, der har tjenester, der kører med kendte sårbarheder, hvis vi vil kontrollere sårbarheder, kan vi gå til følgende side: CVE.
For at forstå dets anvendelse vil vi fortsætte med at lave et eksempel, det vil forsøge at kontrollere, om en webserver er sårbar (vi vil kun fokusere på internettet i denne vejledning). Lad os forestille os, at vi leder efter 2 typer sårbarheder, så vi tilføjer de følgende 2 linjer til en tekstfil (min fil vil blive kaldt sårbar.txt):
Apache / 2.4.18 CVE-2016-4979 Apache / 2.3.20 CVE-2016-4438Dernæst satte jeg koden ind Python, for version 3.X, og en forklaring er givet nedenfor.
import http.client host = "localhost" http = http.client.HTTPConnection (host, timeout = 2) http.request ("HEAD", "/") server = http.getresponse (). getheader ('server') sårbar = open ("sårbar.txt", "r") isVulnerable = Falsk for service i sårbare: s = service.split ("") hvis (s [0] i server): print (host, "har service", s [0], "med mulig sårbarhed", s [1]) isVulnerable = True if (not isVulnerable): print (host, "har tilsyneladende ingen server sårbar over for det du leder efter")Vi vil nu se en forklaring ved dele af koden, først importerer vi biblioteket http.klient at vi får brug for det:
importer http.clientDernæst definerer vi vært og vi etablerer forbindelsen med en tiden er gået 2 sekunder.
host = "localhost" http = http.client.HTTPConnection (vært, timeout = 2)Vores næste trin er at lave en HEAD type anmodning, som ikke returnerer kroppen (dataene, men vi har ikke brug for det til dette). Og så får vi svaret.
http.request ("HEAD", "/") server = http.getresponse (). getheader ('server')Nu åbner vi vores tekstfil i læsetilstand (r) med sårbarhederne at kigge efter, og vi opretter en boolsk variabel, der hjælper os med at vide, om sårbarheden blev fundet (det vil hjælpe os med at vise en besked eller ikke i slutningen).
sårbar = åben ("sårbar.txt", "r") esVulnerable = FalskI øjeblikket laver vi et loop, som vil gå igennem hver sårbar server, som vi har lagt i filen for at kontrollere, om der bruges en på den konsulterede side. Metoden bruges dele for at bryde linjen i server og sårbarhed, som du kunne se ovenfor, er filen adskilt med et tomt mellemrum.
for service i sårbare: s = service.split ("") hvis (s [0] på serveren): print (host, "har service", s [0], "med mulig sårbarhed", s [1]) erVulnerable = SandtEndelig lukker vi den fil, vi har åben, og kontrollerer, om vi har fundet sårbarhed, hvis ikke, viser vi en besked til brugeren, så de bliver informeret.
sårbar.close () hvis (ikke erVulnerable): print (host, "har tilsyneladende ingen server sårbar over for det, du leder efter")Lad os køre det mod 2 mål, det første er solvetic.com:
Og det andet og sidste mål er min maskine, jeg har en Apache -server kørende, der kan være sårbar på grund af den version af Apache, den bruger.
Hvis vi vil vide noget om sårbarheden, kan du på siden, jeg forlod i begyndelsen, søge efter den CVE, som du kan se i terminalen: CVE-2016-4979. Du klikker på Søg og download og indsæt identifikatoren i Søg hovedkopi af CVE, i boksen under teksten af CVE Identifier og klik derefter på Send.
Sårbarheden kommer frem, og du vil kunne se en forklaring, referencer, datoer osv.
Her afsluttes vejledningen, denne teknik kan anvendes til at søge efter sårbare tjenester, ikke kun efter webservere, du kan også tjekke flere værter på samme tid, for ikke at skulle starte den flere gange, her er det for nemheds skyld blevet rettet til en webserver og en enkelt vært. Du kan også lave Banner Grabbing ved hjælp af Telnet eller Netcat, her er et billede af brugen af Telnet til at fjerne serveren fra min localhost:
BemærkI Windows er Telnet deaktiveret som standard, hvis du vil aktivere det, kan du følge følgende vejledning.
Kan du lide og hjælpe denne vejledning?Du kan belønne forfatteren ved at trykke på denne knap for at give ham et positivt punkt