Wapiti – vlastní kontrola zranitelností webu

Wapiti – vlastní kontrola zranitelností webu
V minulosti článek mluvili jsme o Nemesida WAF zdarma - bezplatný nástroj na ochranu webových stránek a rozhraní API před útoky hackerů a v tomto jsme se rozhodli zkontrolovat oblíbený skener zranitelnosti Elk.

Skenování webových stránek na zranitelnosti je nezbytným opatřením, které ve spojení s analýzou zdrojového kódu umožňuje posoudit úroveň jeho zabezpečení proti hrozbám kompromitace. Webový zdroj můžete skenovat pomocí specializovaných nástrojů.

Nikto, W3af (napsaný v Pythonu 2.7, který již není podporován) nebo Arachni (od února již není podporován) jsou nejoblíbenější řešení prezentovaná v segmentu zdarma. Samozřejmě existují i ​​další, například Wapiti, na které jsme se rozhodli zaměřit.

Wapiti pracuje s následujícími typy zranitelností:

  • rozšiřování souborů (lokální a vzdálené, fopen, readfile);
  • injekce (PHP / JSP / ASP / SQL injection a XPath injection);
  • XSS (Cross Site Scripting) (reflexní a trvalé);
  • detekce a provádění příkazů (eval(), system(), passtru());
  • Injekce CRLF (rozdělení odpovědi HTTP, fixace relace);
  • vložení XXE (externí entita XML);
  • SSRF (Server Side Request Forgery);
  • použití známých potenciálně nebezpečných souborů (díky databázi Nikto);
  • slabé konfigurace .htaccess, které lze obejít;
  • přítomnost záložních souborů, které odhalují důvěrné informace (zveřejnění zdrojového kódu);
  • Shellshock;
  • otevřená přesměrování;
  • nestandardní metody HTTP, které lze vyřešit (PUT).

Vlastnosti:

  • podpora proxy HTTP, HTTPS a SOCKS5;
  • ověřování pomocí několika metod: Basic, Digest, Kerberos nebo NTLM;
  • možnost omezit oblast skenování (doména, složka, stránka, URL);
  • automatické odstranění jednoho z parametrů v URL;
  • vícenásobná opatření proti nekonečným smyčkám skenování (příklad: ifor, omezující hodnoty pro parametr);
  • možnost nastavit prioritu pro zkoumání URL (i když nejsou v oblasti skenování);
  • schopnost vyloučit některá URL z kontroly a útoků (například: odhlášení z URL);
  • importovat soubory cookie (získat je pomocí nástroje wapiti-getcookie);
  • možnost aktivace/deaktivace ověření certifikátu SSL;
  • schopnost extrahovat URL z JavaScriptu (velmi jednoduchý JS interpret);
  • interakce s HTML5;
  • několik možností pro správu chování a omezení prolézacího modulu;
  • nastavení maximální doby pro proces skenování;
  • přidání některých vlastních HTTP hlaviček nebo nastavení vlastního User-Agenta.

Další vlastnosti:

  • vytváření zpráv o zranitelnosti v různých formátech (HTML, XML, JSON, TXT);
  • pozastavení a obnovení skenování nebo útoku (mechanismus relace využívající databáze SQLite3);
  • podsvícení v terminálu pro zvýraznění zranitelností;
  • různé úrovně těžby dřeva;
  • Rychlý a snadný způsob, jak aktivovat/deaktivovat útočné moduly.

Instalace

Aktuální verzi Wapiti lze nainstalovat dvěma způsoby:

  • stáhněte si zdroj z oficiálního webu сайта a spusťte instalační skript po předchozí instalaci Pythonu3;
  • pomocí příkazu pip3 install wapiti3.

Poté bude Wapiti připraveno vyrazit.

Práce s nástrojem

K demonstraci práce Wapiti použijeme speciálně připravený stojan sites.vulns.pentestit.ru (interní zdroj), obsahující různé zranitelnosti (Injection, XSS, LFI/RFI) a další nedostatky webových aplikací.

Informace jsou poskytovány pouze pro informační účely. Neporušujte zákon!

Základní příkaz pro spuštění skeneru:

# wapiti -u <target> <options>

Zároveň je zde poměrně podrobná nápověda s velkým množstvím možností spuštění, například:

--rozsah - oblast použití
Pokud zadáte parametr rozsahu spolu s adresou URL procházení, můžete upravit oblast skenování webu zadáním jedné stránky a všech stránek, které lze na webu najít.

-s и -x — možnosti přidání nebo odebrání konkrétních adres URL. Tyto možnosti jsou užitečné, když potřebujete během procesu procházení přidat nebo odebrat konkrétní adresu URL.

--přeskočit — zadaný parametr s tímto klíčem bude testován, ale nebude napaden. Užitečné, pokud existují nějaké nebezpečné parametry, které je nejlepší vyloučit během kontroly.

--verify-ssl — povolení nebo zakázání ověřování certifikátů.
Skener Wapiti je modulární. Chcete-li však spustit specifické moduly, včetně těch, které jsou automaticky připojeny za běhu skeneru, musíte použít přepínač -m a uvést ty, které potřebujete, oddělené čárkami. Pokud klíč není použit, budou všechny moduly standardně fungovat. V nejjednodušší verzi to bude vypadat takto:

# wapiti -u http://sites.vulns.pentestit.ru/ -m sql,xss,xxe

Tento příklad použití znamená, že při skenování cíle použijeme pouze moduly SQL, XSS a XXE. Kromě toho můžete filtrovat provoz modulů v závislosti na požadované metodě. Například -m „xss: get, blindsql: post, xxe: post“. V tomto případě modul xss se bude vztahovat na požadavky odeslané pomocí metody GET a modulu blibdsql - na požadavky POST atd. Mimochodem, pokud některý modul, který byl zařazen do seznamu, nebyl při skenování potřeba nebo trvá velmi dlouho, můžete stisknutím kombinace Ctrl+C přeskočit použití aktuálního modulu výběrem příslušné položky v interaktivní nabídce.

Wapiti podporuje předávání požadavků přes proxy pomocí klíče -p a autentizace na cílovém místě prostřednictvím parametru -a. Můžete také zadat typ ověření: Základní, Strávit, Kerberos и NTLM. Poslední dva mohou vyžadovat instalaci dalších modulů. Kromě toho můžete do požadavků vložit libovolné záhlaví (včetně libovolných User-Agent) a mnohem víc.

Chcete-li použít ověřování, můžete použít nástroj wapiti-getcookie. S jeho pomocí tvoříme sušenka, který Wapiti při skenování použije. Formace sušenka hotovo příkazem:

# wapiti-getcookie -u http://sites.vulns.pentestit.ru/login.php -c cookie.json

Při interaktivní práci odpovídáme na otázky a uvádíme potřebné informace, jako je přihlašovací jméno, heslo atd.:

Wapiti – vlastní kontrola zranitelností webu

Výstupem je soubor ve formátu JSON. Další možností je přidat všechny potřebné informace prostřednictvím parametru -d:

# wapiti-getcookie - http://sites.vulns.pentestit.ru/login.php -c cookie.json -d "username=admin&password=admin&enter=submit"

Výsledek bude podobný:

Wapiti – vlastní kontrola zranitelností webu

Při zvažování hlavní funkčnosti skeneru byl v našem případě konečný požadavek na testování webové aplikace:

# wapiti --level 1 -u http://sites.vulns.pentestit.ru/ -f html -o /tmp/vulns.html -m all --color -с cookie.json --scope folder --flush-session -A 'Pentestit Scans' -p http://proxy.office.pentestit.ru:3128

kde mimo jiné parametry:

-f и -o — formát a cesta pro uložení zprávy;

-m — připojení všech modulů se nedoporučuje, protože ovlivní dobu testování a velikost zprávy;

-barva — zvýraznění nalezených zranitelností v závislosti na jejich kritičnosti podle samotného Wapiti;

-c - pomocí souboru s sušenka, generované pomocí wapiti-getcookie;

--rozsah — výběr cíle pro útok. Výběr možnosti desky Každá adresa URL bude procházena a napadena, počínaje základní. Základní URL musí mít lomítko (bez názvu souboru);

--flush-session — umožňuje opakované skenování, při kterém nebudou brány v úvahu předchozí výsledky;

-A - vlastní User-Agent;

-p — adresa proxy serveru, je-li to nutné.

Něco málo o reportáži

Výsledek skenování je prezentován ve formě podrobné zprávy o všech nalezených zranitelnostech ve formátu HTML stránky, v přehledné a snadno čitelné formě. Ve zprávě budou uvedeny kategorie a počet nalezených zranitelností, jejich popisy, požadavky, příkazy pro kadeř a tipy, jak je zavřít. Pro usnadnění navigace bude k názvům kategorií přidán odkaz, na který můžete kliknutím přejít:

Wapiti – vlastní kontrola zranitelností webu

Významnou nevýhodou reportu je absence mapy webové aplikace jako takové, bez které nebude jasné, zda byly analyzovány všechny adresy a parametry. Existuje také možnost falešných poplachů. V našem případě zpráva obsahuje „záložní soubory“ a „potenciálně nebezpečné soubory“. Jejich počet neodpovídá skutečnosti, protože na serveru nebyly žádné takové soubory:

Wapiti – vlastní kontrola zranitelností webu

Možná budou nesprávně fungující moduly časem opraveny. Dalším nedostatkem zprávy je chybějící podbarvení nalezených zranitelností (v závislosti na jejich kritičnosti), nebo alespoň jejich rozdělení do kategorií. Jediný způsob, jak můžeme nepřímo pochopit kritičnost nalezené zranitelnosti, je použít parametr -barva během skenování a poté budou nalezené chyby zbarveny různými barvami:

Wapiti – vlastní kontrola zranitelností webu

Ale samotná zpráva takové zbarvení neposkytuje.

Zranitelnosti

SQLi

Skener si částečně poradil s SQLi vyhledáváním. Při hledání zranitelností SQL na stránkách, kde není vyžadována autentizace, nevznikají žádné problémy:

Wapiti – vlastní kontrola zranitelností webu

Nebylo možné najít zranitelnost na stránkách přístupných pouze po ověření, a to ani pomocí valid sušenka, protože s největší pravděpodobností po úspěšné autentizaci bude jejich relace „odhlášena“ a sušenka stane neplatným. Pokud by byla deautorizační funkce implementována jako samostatný skript zodpovědný za zpracování této procedury, pak by bylo možné ji zcela vyloučit pomocí parametru -x, a tím zabránit jejímu spuštění. V opačném případě nebude možné jeho zpracování vyloučit. To není problém s konkrétním modulem, ale s nástrojem jako celkem, ale kvůli této nuanci nebylo možné detekovat několik injekcí v uzavřené oblasti zdrojů.

XSS

Skener si se zadaným úkolem skvěle poradil a našel všechny připravené zranitelnosti:

Wapiti – vlastní kontrola zranitelností webu

LFI/RFI

Skener našel všechny základní chyby zabezpečení:

Wapiti – vlastní kontrola zranitelností webu

Obecně platí, že navzdory falešným pozitivům a chybějícím zranitelnostem Wapiti jako bezplatný nástroj vykazuje docela dobré výsledky. V každém případě stojí za to uznat, že skener je poměrně výkonný, flexibilní a multifunkční, a co je nejdůležitější, je zdarma, takže má právo být použit při pomoci administrátorům a vývojářům získat základní informace o stavu zabezpečení webu. aplikace.

Zůstaňte zdraví a chráněni!

Zdroj: www.habr.com

Přidat komentář