Wapiti — kontrola webu na zranitelnosti vlastními silami

Wapiti — kontrola webu na zranitelnosti vlastními silami
V minulosti článku jsme hovořili o Nemesida WAF Free — bezplatném nástroji pro ochranu webů a API před hackerskými útoky, a v tomto článku se zaměříme na přehled populárního skeneru zranitelností Wapiti.

Skenování webové stránky na zranitelnosti je nezbytné opatření, které spolu s analýzou zdrojového kódu umožňuje posoudit úroveň její ochrany před hrozbami kompromitace. Skenerování webového zdroje lze provést pomocí specializovaných nástrojů.

Nikto, W3af (napsaný v Pythonu 2.7, který již není podporován) nebo Arachni (od února více není podporován) — to jsou nejpopulárnější řešení nabízená v bezplatném segmentu. Samozřejmě existují i další, například Wapiti, na kterém se rozhodujeme zaměřit.

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

  • odhalení souboru (lokální a vzdálené, fopen, readfile);
  • injekce (PHP / JSP / ASP / SQL injekce a XPath injekce);
  • XSS (meziwebové skriptování) (odrážené a trvalé);
  • odhalení a provádění příkazů (eval (), system (), passtru ());
  • CRLF injekce (odděluje HTTP odpovědi, uchovávání relace);
  • XXE (vkládání externí XML entity);
  • SSRF (falsifikace žádosti na straně serveru);
  • využ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ů odhalujících důvěrné informace (odhalení zdrojového kódu);
  • Shellshock;
  • otevřené přesměrování;
  • nestandardní HTTP metody, které mohou být povoleny (PUT).

Možnosti:

  • podpora proxy HTTP, HTTPS a SOCKS5;
  • autentizace prostřednictvím více 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 cyklům skenování (příklad: ifor, omezení hodnot pro parametr);
  • možnost nastavení priority pro prozkoumání URL (i když nejsou v oblasti skenování);
  • možnost vyloučit některé URL z skenování a útoků (například: URL odhlášení);
  • import souborů cookie (získání pomocí nástroje wapiti-getcookie);
  • možnost aktivovat / deaktivovat kontrolu SSL certifikátů;
  • možnost extrakce URL z JavaScriptu (velmi jednoduchý JS interpret);
  • interakce s HTML5;
  • několik možností správy chování a omezení crawleru;
  • nastavení maximální doby skenování;
  • přidání některých přizpůsobitelných HTTP hlaviček nebo úprava uživatelského agentu.

Další možnosti:

  • vytváření zpráv o zranitelnostech v různých formátech (HTML, XML, JSON, TXT);
  • pozastavení a obnovování skenování nebo útoku (mechanismus relace s využitím SQLite3 databází);
  • zvýraznění v terminálu pro označení zranitelnosti;
  • různé úrovně protokolování;
  • rychlý a snadný způsob aktivace / deaktivace útokových modulů.

Instalace

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

  • stáhnout zdrojový kód z oficiálního webu a spustit instalační skript, poté co nainstalujete Python3;
  • pomocí příkazu pip3 install wapiti3.

Po tom bude Wapiti připraven k práci.

Práce s nástrojem

Pro demonstraci práce Wapiti budeme používat speciálně připravenou platformu sites.vulns.pentestit.ru (interní zdroj), která obsahuje různé zranitelnosti (Injection, XSS, LFI/RFI) a další nedostatky webových aplikací.

Informace jsou poskytovány pouze k informačním účelům. Nerespektujte zákony!

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

# wapiti -u <target> <options>

Přitom je k dispozici poměrně podrobná nápověda s obrovským množstvím spouštěcích možností, například:

—scope — rozsah
Pokud je spolu s URL pro skenování uveden parametr scope, lze regulovat oblast skenování webu tím, že uvedete buď jednotlivou stránku, nebo všechny stránky, které lze na webu najít.

-s a -x — parametry pro přidání nebo odstranění konkrétních URL adres. Tyto parametry jsou užitečné, pokud je třeba přidat nebo odstranit konkrétní URL adresu v procesu skenování.

—skip — zadaný parametr s tímto klíčem bude skenován, ale nebude napaden. Užitečné, pokud existují nějaké nebezpečné parametry, které je lepší při skenování vyloučit.

—verify-ssl — zapnutí nebo vypnutí kontroly certifikátu.
Skener Wapiti je modulární. Pro spuštění konkrétních modulů z těch, které se automaticky připojují během práce skeneru, je třeba použít klíč -m a vyjmenovat požadované odděleně čárkou. Pokud klíč nepoužijete, budou ve výchozím nastavení aktivní všechny moduly. V nejjednodušší variantě to bude vypadat takto:

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

Tento příklad použití znamená, že budeme používat pouze moduly SQL, XSS a XXE při skenování cíle. Kromě toho lze filtrovat práci modulů podle požadované metody. Například -m “xss: get, blindsql: post, xxe: post”. V takovém případě modul xss bude aplikován na požadavky odesílané metodou GET, zatímco modul blibdsql bude použit pro POST požadavky atd. Mimochodem, pokud některý modul, který byl zařazen do seznamu, nebyl během skenování potřebný nebo běží velmi dlouho, stisknutím kombinace Ctrl+C můžete přeskočit použití aktuálního modulu a vybrat odpovídající položku v interaktivním menu.

Wapiti podporuje zasílání požadavků přes proxy server pomocí klíče -p a autentizaci na cílovém webu přes parametr -a. Také je možné určit typ autentizace: Basič, Digest, Kerberos a NTLM. Pro poslední dva může být nutné nainstalovat další moduly. Kromě toho je možné vkládat do požadavků jakékoliv hlavičky (včetně libovolné User-Agent) a mnoho dalšího.

Pro použití autentizace můžete použít nástroj wapiti-getcookie. S jeho pomocí vytvoříme cookie, které Wapiti použije při skenování. Vytváření cookie se provádí pomocí příkazu:

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

Během práce v interaktivním režimu odpovídáme na otázky a uvádíme potřebné informace typu: uživatelské jméno, heslo a další:

Wapiti — kontrola webu na zranitelnosti vlastními silami

Na výstupu obdržíme soubor ve formátu JSON. Jinou 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 — kontrola webu na zranitelnosti vlastními silami

Při přezkoumání základní funkčnosti skeneru se konečným požadavkem pro testování webové aplikace v našem případě stal:

# 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 mezi dalšími parametry:

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

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

—color — zvýraznění nalezených zranitelností podle jejich závažnosti podle verze samotného Wapiti;

-c — použití souboru s cookie, vygenerovaného pomocí wapiti-getcookie;

—scope — výběr cíle pro útok. Vybráním varianty folder bude skenován a útok proběhne na každý URL počínaje základním. Základní URL musí mít lomítko (bez názvu souboru);

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

-A — vlastní User-Agent;

-p — adresa proxy serveru, pokud je potřeba.

Něco o zprávě

Výsledek skenování je prezentován ve formě podrobné zprávy o všech nalezených zranitelnostech v HTML formátu, srozumitelným a pohodlným pro čtení. Ve zprávě budou uvedeny kategorie a počet nalezených zranitelností, jejich popis, dotazy, příkazy pro curl a rady, jak je uzavřít. Pro usnadnění navigace budou přidány odkazy do názvů kategorií, na které můžete kliknout a přejít k nim:

Wapiti — kontrola webu na zranitelnosti vlastními silami

Podstatnou nevýhodou zprávy je absence mapy webové aplikace, bez které není jasné, zda byly analyzovány všechny adresy a parametry. Také existuje pravděpodobnost falešných pozitiv. V našem případě se ve zprávě objevují "záložní soubory" a "potenciálně nebezpečné soubory". Jejich počet neodpovídá skutečnosti, protože takové soubory na serveru nebyly:

Wapiti — kontrola webu na zranitelnosti vlastními silami

Možná, že nefunkční moduly budou časem opraveny. Další nevýhodou zprávy je absence označení nalezených zranitelností (v závislosti na jejich závažnosti), nebo alespoň jejich rozdělení podle kategorií. Jediný způsob, jak se nepřímo dozvědět o závažnosti nalezené zranitelnosti, je použít parametr —color při skenování a tehdy budou nalezené zranitelnosti zaškrtnuté různými barvami:

Wapiti — kontrola webu na zranitelnosti vlastními silami

Ale ve samotné zprávě takové označení není zahrnuto.

Zranitelnosti

SQLi

Scanner se částečně zhostil hledání SQLi. Při hledání SQL zranitelností na stránkách, kde není vyžadováno ověření, nevznikají žádné problémy:

Wapiti — kontrola webu na zranitelnosti vlastními silami

Nepodařilo se najít zranitelnost na stránkách, které jsou přístupné pouze po ověření, ani s použitím platných cookie, protože pravděpodobně po úspěšném ověření dojde k "ukončení jejich relace" a cookie se stanou neplatnými. Kdyby byla funkce deautentizace provedena jako samostatný skript odpovídající za zpracování tohoto postupu, mohlo by to být plně vyloučeno pomocí parametru -x, a tak by se předešlo jeho spuštění. Jinak se jeho zpracování vyloučit nepodaří. Toto je problém konkrétního modulu, ale díky tomu nuance se nepodařilo odhalit několik injekcí v uzavřené oblasti zdroje.

XSS

Se zadaným úkolem se skener skvěle popral a našel všechny připravené zranitelnosti:

Wapiti — kontrola webu na zranitelnosti vlastními silami

LFI/RFI

Skener našel všechny vložené zranitelnosti:

Wapiti — kontrola webu na zranitelnosti vlastními silami

Celkově, i přes falešné pozitivní výsledky a vynechané zranitelnosti, Wapiti, jako bezplatný nástroj, vykazuje docela dobré výsledky. V každém případě je třeba uznat, že skener je poměrně silný, flexibilní a multifunkční, a co je nejdůležitější — je zdarma, takže si zaslouží vaši pozornost, pomáhá administrátorům a vývojářům získat základní informace o stavu zabezpečení webové aplikace.

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

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster