Wapiti – samostatná kontrola zraniteľnosti stránky

Wapiti – samostatná kontrola zraniteľnosti stránky
V poslednom článok hovorili sme o Nemesida WAF zadarmo - bezplatný nástroj na ochranu webových stránok a rozhraní API pred útokmi hackerov a v tomto sme sa rozhodli preskúmať populárny skener zraniteľnosti wapiti.

Skenovanie webových stránok z hľadiska zraniteľností je nevyhnutným opatrením, ktoré spolu s analýzou zdrojového kódu umožňuje posúdiť úroveň jeho zabezpečenia proti hrozbám kompromitácie. Webový zdroj môžete skenovať pomocou špecializovaných nástrojov.

Nikto, W3af (napísaný v Pythone 2.7, ktorý už nie je podporovaný) alebo Arachni (od februára už nie je podporovaný) sú najobľúbenejšie riešenia prezentované v segmente zadarmo. Samozrejme, existujú aj iné, napríklad Wapiti, na ktoré sme sa rozhodli zamerať.

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

  • rozšírenie súboru (lokálne a vzdialené, fopen, readfile);
  • injekcie (injekcia PHP / JSP / ASP / SQL a injekcia XPath);
  • XSS (Cross Site Scripting) (reflexné a trvalé);
  • detekcia a vykonávanie príkazov (eval(), system(), passtru());
  • injekcie CRLF (rozdelenie odpovede HTTP, fixácia relácie);
  • vkladanie XXE (externá entita XML);
  • SSRF (falšovanie požiadaviek na strane servera);
  • 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áložných súborov, ktoré odhaľujú dôverné informácie (sprístupnenie zdrojového kódu);
  • Shellshock;
  • otvorené presmerovania;
  • neštandardné metódy HTTP, ktoré možno vyriešiť (PUT).

vlastnosti:

  • podpora proxy HTTP, HTTPS a SOCKS5;
  • autentifikácia pomocou niekoľkých metód: Basic, Digest, Kerberos alebo NTLM;
  • možnosť obmedziť oblasť skenovania (doména, priečinok, stránka, URL);
  • automatické odstránenie jedného z parametrov v adrese URL;
  • viaceré opatrenia proti nekonečným slučkám skenovania (príklad: ifor, limitné hodnoty pre parameter);
  • možnosť nastaviť prioritu pre skúmanie adries URL (aj keď nie sú v oblasti skenovania);
  • schopnosť vylúčiť niektoré adresy URL z kontroly a útokov (napríklad: odhlásenie z adresy URL);
  • importovať súbory cookie (získať ich pomocou nástroja wapiti-getcookie);
  • možnosť aktivácie/deaktivácie overenia certifikátu SSL;
  • schopnosť extrahovať adresy URL z JavaScriptu (veľmi jednoduchý JS interpreter);
  • interakcia s HTML5;
  • niekoľko možností na správu správania a obmedzení prehľadávača;
  • nastavenie maximálneho času pre proces skenovania;
  • pridanie niektorých vlastných HTTP hlavičiek alebo nastavenie vlastného User-Agenta.

Pridané vlastnosti:

  • vytváranie správ o zraniteľnosti v rôznych formátoch (HTML, XML, JSON, TXT);
  • pozastavenie a obnovenie skenovania alebo útoku (mechanizmus relácie využívajúci databázy SQLite3);
  • podsvietenie v termináli na zvýraznenie slabých miest;
  • rôzne úrovne ťažby dreva;
  • Rýchly a jednoduchý spôsob aktivácie/deaktivácie útočných modulov.

Inštalácia

Aktuálna verzia Wapiti sa dá nainštalovať 2 spôsobmi:

  • stiahnite si zdroj od oficialu site a spustite inštalačný skript po nainštalovaní Pythonu3;
  • pomocou príkazu pip3 install wapiti3.

Potom bude Wapiti pripravený ísť.

Práca s nástrojom

Na demonštráciu práce Wapiti použijeme špeciálne pripravený stánok sites.vulns.pentestit.ru (interný zdroj), obsahujúci rôzne zraniteľnosti (Injection, XSS, LFI/RFI) a ďalšie nedostatky webových aplikácií.

Informácie sú poskytované len na informačné účely. Neporušujte zákon!

Základný príkaz na spustenie skenera:

# wapiti -u <target> <options>

Zároveň existuje pomerne podrobná pomoc s veľkým množstvom možností spustenia, napríklad:

—scope - oblasť použitia
Ak zadáte parameter rozsahu spolu s adresou URL indexového prehľadávania, môžete upraviť oblasť prehľadávania lokality zadaním jednej stránky a všetkých stránok, ktoré možno na lokalite nájsť.

-s и -x — možnosti na pridanie alebo odstránenie konkrétnych adries URL. Tieto možnosti sú užitočné, keď potrebujete pridať alebo odstrániť konkrétnu adresu URL počas procesu indexového prehľadávania.

--preskočiť — zadaný parameter s týmto kľúčom bude kontrolovaný, ale nebude napadnutý. Užitočné, ak existujú nebezpečné parametre, ktoré je najlepšie vylúčiť počas kontroly.

--verify-ssl — zapnutie alebo vypnutie overovania certifikátu.
Skener Wapiti je modulárny. Ak však chcete spustiť špecifické moduly, vrátane tých, ktoré sa automaticky pripájajú počas spustenia skenera, musíte použiť prepínač -m a uviesť potrebné moduly oddelené čiarkami. Ak sa kľúč nepoužije, všetky moduly budú štandardne fungovať. V najjednoduchšej verzii to bude vyzerať takto:

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

Tento príklad použitia znamená, že pri skenovaní cieľa použijeme iba moduly SQL, XSS a XXE. Okrem toho môžete filtrovať prevádzku modulov v závislosti od požadovanej metódy. Napríklad -m „xss: get, blindsql: post, xxe: post“. V tomto prípade modul xss sa bude vzťahovať na požiadavky odoslané pomocou metódy GET a modulu blibdsql - na POST požiadavky atď. Mimochodom, ak niektorý modul, ktorý bol zahrnutý v zozname, nebol počas skenovania potrebný alebo trvá veľmi dlho, stlačením kombinácie Ctrl+C môžete preskočiť používanie aktuálneho modulu výberom príslušnej položky v interaktívnej ponuke.

Wapiti podporuje odovzdávanie požiadaviek cez proxy pomocou kľúča -p a autentifikáciu na cieľovom mieste prostredníctvom parametra -a. Môžete tiež zadať typ overenia: Základné, výťah, Kerberos и NTLM. Posledné dva môžu vyžadovať inštaláciu ďalších modulov. Okrem toho môžete do požiadaviek vložiť ľubovoľné hlavičky (vrátane ľubovoľných User-Agent) a oveľa viac.

Ak chcete použiť autentifikáciu, môžete použiť nástroj wapiti-getcookie. S jeho pomocou tvoríme sušienka, ktorý Wapiti použije pri skenovaní. Tvorenie sušienka hotovo príkazom:

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

Pri interaktívnej práci odpovedáme na otázky a uvádzame potrebné informácie, ako je prihlasovacie meno, heslo atď.:

Wapiti – samostatná kontrola zraniteľnosti stránky

Výstupom je súbor vo formáte JSON. Ďalšou možnosťou je doplnenie všetkých potrebných informácií 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 podobný:

Wapiti – samostatná kontrola zraniteľnosti stránky

Pri zvažovaní hlavnej funkcionality skenera bola konečná požiadavka na testovanie webovej aplikácie v našom prípade:

# 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 okrem iných parametrov:

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

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

--farba — zvýraznenie nájdených zraniteľností v závislosti od ich kritickosti podľa samotného Wapiti;

-c - pomocou súboru s sušienka, generované pomocou wapiti-getcookie;

—scope — výber cieľa pre útok. Výber možnosti zložka Každá adresa URL bude prehľadaná a napadnutá, počnúc základnou adresou. Základná adresa URL musí mať lomku (bez názvu súboru);

--flush-session — umožňuje opakované skenovanie, pri ktorom sa nebudú brať do úvahy predchádzajúce výsledky;

-A - vlastný User-Agent;

-p — adresa proxy servera, ak je to potrebné.

Trochu o správe

Výsledok skenovania je prezentovaný vo forme podrobnej správy o všetkých nájdených zraniteľnostiach vo formáte HTML stránky, v prehľadnej a ľahko čitateľnej forme. V správe budú uvedené kategórie a počet nájdených zraniteľností, ich popisy, požiadavky, príkazy curl a tipy, ako ich uzavrieť. Pre uľahčenie navigácie sa k názvom kategórií pridá odkaz, na ktorý môžete prejsť kliknutím:

Wapiti – samostatná kontrola zraniteľnosti stránky

Významnou nevýhodou reportu je absencia mapy webovej aplikácie ako takej, bez ktorej nebude jasné, či sú analyzované všetky adresy a parametre. Existuje aj možnosť falošných poplachov. V našom prípade správa obsahuje „záložné súbory“ a „potenciálne nebezpečné súbory“. Ich počet nezodpovedá skutočnosti, pretože na serveri neboli žiadne takéto súbory:

Wapiti – samostatná kontrola zraniteľnosti stránky

Možno, že nesprávne fungujúce moduly budú časom opravené. Ďalším nedostatkom správy je chýbajúce zafarbenie nájdených zraniteľností (v závislosti od ich kritickosti), alebo aspoň ich rozdelenie do kategórií. Jediný spôsob, ako môžeme nepriamo pochopiť kritickosť nájdenej zraniteľnosti, je použiť parameter --farba počas skenovania a potom budú nájdené zraniteľnosti zafarbené rôznymi farbami:

Wapiti – samostatná kontrola zraniteľnosti stránky

Ale samotná správa takéto sfarbenie neposkytuje.

Zraniteľnosť

SQLi

Skener si čiastočne poradil s SQLi vyhľadávaním. Pri vyhľadávaní zraniteľností SQL na stránkach, kde sa nevyžaduje autentifikácia, nevznikajú žiadne problémy:

Wapiti – samostatná kontrola zraniteľnosti stránky

Na stránkach prístupných až po overení nebolo možné nájsť zraniteľnosť, a to ani pri použití valid sušienka, pretože s najväčšou pravdepodobnosťou po úspešnej autentifikácii bude ich relácia „odhlásená“ a sušienka stane neplatným. Ak by bola funkcia zrušenia autorizácie implementovaná ako samostatný skript zodpovedný za spracovanie tejto procedúry, potom by ju bolo možné úplne vylúčiť cez parameter -x, a tým zabrániť jej spusteniu. V opačnom prípade nebude možné vylúčiť jeho spracovanie. Nejde o problém s konkrétnym modulom, ale s nástrojom ako celkom, ale kvôli tejto nuancii nebolo možné zistiť niekoľko injekcií v uzavretej oblasti zdrojov.

XSS

Skener sa s danou úlohou dokonale vyrovnal a našiel všetky pripravené zraniteľnosti:

Wapiti – samostatná kontrola zraniteľnosti stránky

LFI/RFI

Skener našiel všetky základné zraniteľnosti:

Wapiti – samostatná kontrola zraniteľnosti stránky

Vo všeobecnosti, napriek falošným pozitívam a chýbajúcim zraniteľnostiam, Wapiti ako bezplatný nástroj vykazuje celkom dobré výsledky. V každom prípade stojí za to uznať, že skener je pomerne výkonný, flexibilný a multifunkčný, a čo je najdôležitejšie, je bezplatný, takže má právo na to, aby pomohol správcom a vývojárom získať základné informácie o stave zabezpečenia webu. aplikácie.

Zostaňte zdraví a chránení!

Zdroj: hab.com

Pridať komentár