Wapiti — kontrola webovej stránky na zraniteľnosti vlastnými silami

Wapiti — kontrola webovej stránky na zraniteľnosti vlastnými silami
V minulosti článku povedali sme o Nemesida WAF Free — bezplatný nástroj na ochranu webových stránok a API pred hackerskými útokmi, a v tomto článku sme sa rozhodli spraviť prehľad populárneho skenera zraniteľností Wapiti.

Skúmanie webovej stránky na zraniteľnosti je nevyhnutným krokom, ktorý v kombinácii s analýzou zdrojového kódu umožňuje zhodnotiť úroveň jej ochrany pred hrozbami. Skúmanie webového zdroja je možné vykonať pomocou špecializovaného nástroja.

Nikto, W3af (napísaný v Pythone 2.7, ktorému skončila podpora) alebo Arachni (od februára už nie je podporovaný) — najpopulárnejšie riešenia v bezplatnej sfére. Samozrejme, existujú aj iné, napríklad Wapiti, na ktorom sme sa rozhodli zastaviť.

Wapiti pracuje s nasledujúcimi typmi zraniteľností:

  • zverejnenie súboru (miestne a vzdialené, fopen, readfile);
  • injekcie (PHP / JSP / ASP / SQL injekcie a XPath injekcie);
  • XSS (cross-site scripting) (odrazene a trvalé);
  • objavovanie a vykonávanie príkazov (eval(), system(), passtru());
  • CRLF injekcie (rozdelenie HTTP odpovedí, fixácia relácie);
  • XXE (XML external entity) injekcia;
  • SSRF (server-side request forgery);
  • používanie známych potenciálne nebezpečných súborov (vďaka databáze Nikto);
  • slabé konfigurácie .htaccess, ktoré možno obísť;
  • prítomnosť zálohovacích súborov, ktoré odhaľujú dôverné informácie (zverejnenie zdrojového kódu);
  • Shellshock;
  • otvorené presmerovania;
  • nestandardné HTTP metódy, ktoré môžu byť povolené (PUT).

Možnosti:

  • podpora HTTP, HTTPS a SOCKS5 proxy;
  • autentifikácia pomocou viacerých metód: Basic, Digest, Kerberos alebo NTLM;
  • možnosť obmedziť rozsah skenovania (doména, priečinok, stránka, URL adresa);
  • automatické odstránenie jedného z parametrov v URL;
  • viacero opatrení proti nekonečným cyklom skenovania (príklad: ifor, obmedzenie hodnôt pre parameter);
  • možnosť nastaviť prioritu pre skúmanie URL adries (aj keď nie sú v rozsahu skenovania);
  • možnosť vylúčiť niektoré URL adresy zo skenovania a útokov (napríklad: URL logout);
  • import súborov cookie (získanie ich pomocou nástroja wapiti-getcookie);
  • možnosť aktivovať/deaktívovať kontrolu SSL certifikátov;
  • možnosť extrahovať URL z JavaScriptu (veľmi jednoduchý JS interpretor);
  • interakcia s HTML5;
  • niekoľko variánt riadenia správania a obmedzení crawlera;
  • nastavenie maximálneho času pre proces skenovania;
  • pridanie niektorých prispôsobiteľných HTTP hlavičiek alebo nastavenie vlastného User-Agent.

Ďalšie možnosti:

  • vytváranie správ o zraniteľnostiach v rôznych formátoch (HTML, XML, JSON, TXT);
  • pozastavenie a obnovenie skenovania alebo útoku (mechanizmus relácie pomocou databáz SQLite3);
  • zvýraznenie v termináli pre upozornenie na zraniteľnosť;
  • rôzne úrovne logovania;
  • rýchly a jednoduchý spôsob aktivácie / deaktivácie útokových modulov.

Inštalácia

Aktuálnu verziu Wapiti je možné nainštalovať dvoma spôsobmi:

  • stiahnite si zdrojový kód z oficiálneho webu a spustite inštalačný skript, predtým nainštalujte Python3;
  • pomocou príkazu pip3 install wapiti3.

Po tomto bude Wapiti pripravený na prácu.

Práca s nástrojom

Na demonštráciu práce Wapiti budeme používať špeciálne pripravený testovací server sites.vulns.pentestit.ru (interný zdroj), obsahujúci rôzne zraniteľnosti (Injection, XSS, LFI/RFI) a iné nedostatky webových aplikácií.

Informácie sú poskytované výlučne na informačné účely. Nedodržiavajte zákony!

Základný príkaz na spustenie skeneru:

# wapiti -u <target> <options>

Zároveň je k dispozícii dosť podrobná pomoc s množstvom volieb spustenia, napríklad:

—scope — oblasť aplikácie
Ak sa spolu s URL pre skenovanie uvedie parameter scope, je možné regulovať oblasť skenovania stránky, určiť ako samostatnú stránku, tak aj všetky stránky, ktoré sa na stránke nájdu.

-s a -x — parametre pridania alebo odstránenia konkrétnych URL adries. Tieto parametre sú užitočné, keď je potrebné pridať alebo odstrániť konkrétnu URL adresu v procese skenovania.

—skip — uvedený parameter s týmto kľúčom bude skenovaný, ale nebude napadnutý. Užitečné, ak existujú nejaké nebezpečné parametre, ktoré je lepšie vynechať pri skenovaní.

—verify-ssl — zapnutie alebo vypnutie overovania certifikátu.
Modulárny skener Wapiti. Avšak na spustenie konkrétnych modulov, ktoré sú automaticky pripojené počas práce skeneru, je potrebné použiť kľúč -m a vymenovať požadované moduly oddelené čiarkou. Ak sa kľúč nepoužije, budú predvolene fungovať všetky moduly. V najjednoduchšej forme to bude vyzerať takto:

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

Tento príklad použitia znamená, že budeme používať iba moduly SQL, XSS a XXE pri skenovaní cieľa. Okrem toho je možné filtrovať prácu modulov v závislosti od požadovanej metódy. Napríklad -m "xss: get, blindsql: post, xxe: post". V takom prípade sa modul xss použije na požiadavky zaslané metódou GET, zatiaľ čo modul blibdsql — na POST požiadavky atď. Mimochodom, ak niektorý modul, ktorý bol zahrnutý do zoznamu, nebol potrebný počas skenovania alebo trvá veľmi dlho, môžete stlačením kombinácie Ctrl+C preskočiť aktuálne používanie modulu a vybrať si príslušnú možnosť v interaktívnom menu.

Wapiti podporuje prenos požiadaviek cez proxy server pomocou kľúča -p a autentifikáciu na cieľovej stránke prostredníctvom parametra -a. Taktiež je možné zadať typ autentifikácie: Basic, Digest, Kerberos a NTLM. Pre posledné dva môže byť potrebné nainštalovať ďalšie moduly. Okrem toho je možné vkladať do požiadaviek akékoľvek hlavičky (vrátane vlastného User-Agent) a mnoho ďalšieho.

Na použitie autentifikácie môžete využiť nástroj wapiti-getcookie. S jeho pomocou formujeme cookie, ktoré Wapiti bude používať pri skenovaní. Formovanie cookie sa vykonáva pomocou príkazu:

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

Počas práce v interaktívnom režime odpovedáme na otázky a uvádzame potrebné informácie, ako sú: užívateľské meno, heslo a iné:

Wapiti — kontrola webovej stránky na zraniteľnosti vlastnými silami

Na výstupe dostaneme súbor vo formáte JSON. Ďalšou možnosťou — pridať všetky potrebné informácie cez parameter -d:

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

Výsledok bude rovnaký:

Wapiti — kontrola webovej stránky na zraniteľnosti vlastnými silami

Pri pohľade na základnú funkcionalitu skeneru sa konečným požiadavkom na vykonanie testovania webovej aplikácie v našom prípade 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 medzi ostatnými parametrami:

-f a -o — formát a cesta na uloženie správy;

-m — pripojenie všetkých modulov — neodporúča sa, pretože to ovplyvní čas testovania a veľkosť správy;

—color — zvýrazniť nájdené zraniteľnosti podľa ich závažnosti podľa verzie samotného Wapiti;

-c — použitie súboru s cookie, generované pomocou wapiti-getcookie;

—scope — výber cieľa útoku. Po zvolení variantu folder sa bude skenovať a útočiť na každú URL adresu, začínajúc od základnej. Základná URL musí mať lomku (bez názvu súboru);

—flush-session — umožňuje uskutočniť opätovné skenovanie, pri ktorom sa neberú do úvahy predchádzajúce výsledky;

-A — vlastný User-Agent;

-p — adresa proxy servera, ak je potrebná.

Trochu o správe

Výsledok skenovania je prezentovaný vo forme podrobnej správy o všetkých zistených zraniteľnostiach vo formáte HTML stránky, v prehľadnej a pochopiteľnej podobe. V správe budú uvedené kategórie a počet zistených zraniteľností, ich opis, požiadavky, príkazy na curl a rady, ako ich opraviť. Pre pohodlie navigácie budú do názvov kategórií pridané odkazy, po kliknutí na ktoré sa na ňu prejdete:

Wapiti — kontrola webovej stránky na zraniteľnosti vlastnými silami

Podstatná nevýhoda správy — absencia takej mapy webovej aplikácie, bez ktorej nebude jasné, či boli všetky adresy a parametre analyzované. Tiež existuje pravdepodobnosť falošných pozitív. V našom prípade v správe figurujú „záložné súbory“ a „potenciálne nebezpečné súbory“. Ich počet nezodpovedá skutočnosti, pretože takéto súbory na serveri neboli:

Wapiti — kontrola webovej stránky na zraniteľnosti vlastnými silami

Možno, že nefunkčné moduly to v budúcnosti opraví. Takisto sa dá za nevýhodu správy považovať absencia zafarbenia zistených zraniteľností (v závislosti od ich závažnosti), alebo aspoň ich rozdelenie do kategórií. Jediný spôsob, ako môžeme nepriamo pochopiť závažnosť nájdenej zraniteľnosti, je aplikovať parameter —color pri skenovaní a potom budú zistené zraniteľnosti zafarbené rôznymi farbami:

Wapiti — kontrola webovej stránky na zraniteľnosti vlastnými silami

Ale v samotnej správe takéto zafarbenie nie je predpokladané.

Zraniteľnosti

SQLi

Skenér si s čiastočným úspechom poradil s hľadaním SQLi. Pri vyhľadávaní SQL zraniteľností na stránkach, kde nie je potrebná autentizácia, nie sú žiadne problémy:

Wapiti — kontrola webovej stránky na zraniteľnosti vlastnými silami

Nepodarilo sa nájsť zraniteľnosť na stránkach, ktoré sú prístupné iba po autentizácii, ani s použitím platných cookie, pretože pravdepodobne po úspešnej autentizácii dôjde k 'odhláseniu z relácie' a cookie stanú neplatnými. Keby bola funkcia deautorizácie vykonaná ako samostatný skript zodpovedajúci za spracovanie tohto postupu, bolo by možné ju úplne vylúčiť prostredníctvom parametra -x a tým zabrániť jej spusteniu. V opačnom prípade nie je možné vylúčiť jej spracovanie. Tento problém nie je konkrétneho modulu, ale nástroja ako celku, ale kvôli tomuto nuancu sa nepodarilo odhaliť niekoľko injekcií v uzavretom priestore zdroja.

XSS

S danou úlohou si skener skvelo poradil a našiel všetky pripravené zraniteľnosti:

Wapiti — kontrola webovej stránky na zraniteľnosti vlastnými silami

LFI/RFI

Skener našiel všetky vložené zraniteľnosti:

Wapiti — kontrola webovej stránky na zraniteľnosti vlastnými silami

Celkovo, napriek falošným pozitívom a vynechaným zraniteľnostiam, Wapiti, ako bezplatný nástroj, ukazuje celkom solídne výsledky. V každom prípade je potrebné uznať, že skener je pomerne silný, flexibilný a multifunkčný, a čo je najdôležitejšie — bezplatný, a preto má právo na použitie, pomáhajúc administrátorom a vývojárom získať základné informácie o stave zabezpečenia webovej aplikácie.

Zostaňte zdraví a chránení!

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster