Najděte zranitelný webový server, chytání bannerů v Pythonu

Obsah

V tomto tutoriálu budeme mluvit o Uchopení banneru, a technika používaná k získávání informací o službách nacházejících se v síti. Díky tomu můžeme v síti objevit stroje, které mají spuštěné služby se známými zranitelnostmi, pokud chceme zranitelnosti zkontrolovat, můžeme přejít na následující stránku: CVE.

Abychom porozuměli jeho použití, přistoupíme k vytvoření příkladu, který se pokusí zkontrolovat, zda je webový server zranitelný (v tomto tutoriálu se zaměříme pouze na web). Představme si, že hledáme 2 typy zranitelností, takže do textového souboru přidáme následující 2 řádky (můj soubor se bude jmenovat zranitelný.txt):

 Apache / 2.4.18 CVE-2016-4979 Apache / 2.3.20 CVE-2016-4438
Dále jsem vložil kód Krajta, pro verze 3.X, a vysvětlení je uvedeno níže.
 import http.client host = "localhost" http = http.client.HTTPConnection (hostitel, časový limit = 2) http.request ("HEAD", "/") server = http.getresponse (). getheader ('server') zranitelný = open ("vulnerable.txt", "r") isVulnerable = False for service in vulnerable: s = service.split ("") if (s [0] na serveru): print (host, "has service", s [0], "s možnou zranitelností", s [1]) isVulnerable = True if (not isVulnerable): print (host, "zřejmě nemá server zranitelný vůči tomu, co hledáte")
Nyní uvidíme vysvětlení po částech kódu, nejprve importujeme knihovnu http.client že to budeme potřebovat:
 importujte http.client
Dále definujeme hostitel a navážeme spojení pomocí a Časový limit 2 sekundy.
 host = "localhost" http = http.client.HTTPConnection (hostitel, časový limit = 2)
Naším dalším krokem je vytvořit a Požadavek typu HEAD, které nevrátí tělo (data, ale my to k tomu nepotřebujeme). A pak dostaneme odpověď.
 http.request ("HEAD", "/") server = http.getresponse (). getheader ('server')
Nyní otevřeme náš textový soubor v režimu čtení (r) s hledanými zranitelnostmi a vytvoříme booleovskou proměnnou, která nám pomůže vědět, zda byla chyba nalezena (pomůže nám ukázat zprávu nebo ne na konci).
 vulnerable = open ("vulnerable.txt", "r") esVulnerable = False
V tuto chvíli vytvoříme smyčku, která projde každým zranitelným serverem, který jsme vložili do souboru, a zkontrolujeme, zda je na stránce s konzultacemi použit. Metoda se používá rozdělit jak jste mohli vidět výše, soubor je oddělen mezerou.
 pro službu zranitelné: s = service.split ("") if (s [0] na serveru): print (host, "has service", s [0], "with possible vulnerability", s [1]) isVulnerable = Pravda
Nakonec zavřeme soubor, který máme otevřený, a zkontrolujeme, zda jsme našli zranitelnost, pokud ne, ukážeme uživateli zprávu, aby byl informován.
 vulnerable.close () if (not isVulnerable): print (host, "zřejmě nemá server zranitelný vůči tomu, co hledáte") 
Pojďme to spustit proti 2 cílům, první je solvetic.com:

A druhým a posledním cílem je můj počítač, mám spuštěný server Apache, který by mohl být zranitelný kvůli verzi Apache, kterou používá.

Pokud chceme vědět něco o zranitelnosti, na stránce, kterou jsem nechal na začátku, můžete vyhledat CVE, které můžete vidět v terminálu: CVE-2016-4979. Kliknete na Hledat a stáhnout a vložte identifikátor do Hledat hlavní kopii CVE, v poli pod textem podle identifikátoru CVE a potom klikněte na Odeslat.

Zranitelnost vyjde najevo a budete moci vidět vysvětlení, reference, data atd.

Zde tutoriál dospěl k závěru, že tuto techniku ​​lze použít k vyhledávání zranitelných služeb nejen pro webové servery, můžete také zkontrolovat několik hostitelů současně, abyste je nemuseli spouštět několikrát, zde byla pro jednoduchost nasměrována na webový server a jednoho hostitele. Banner Grabbing můžete také provádět pomocí Telnetu nebo Netcatu, zde je obrázek použití Telnetu k odebrání serveru z mého localhostu:

PoznámkaVe Windows je Telnet ve výchozím nastavení zakázán, pokud jej chcete aktivovat, můžete postupovat podle následujícího tutoriálu.

Líbil se vám tento návod a pomohl mu?Autora můžete odměnit stisknutím tohoto tlačítka, čímž mu dáte kladný bod
wave wave wave wave wave