Wapiti - samostojno preverjanje ranljivosti spletnega mesta

Wapiti - samostojno preverjanje ranljivosti spletnega mesta
V preteklosti članek smo govorili o Nemesida WAF Brezplačno - brezplačno orodje za zaščito spletnih strani in API-jev pred hekerskimi napadi, v tem smo se odločili pregledati priljubljen pregledovalnik ranljivosti Wapiti.

Iskanje ranljivosti spletnega mesta je nujen ukrep, ki skupaj z analizo izvorne kode omogoča oceno stopnje njegove varnosti pred grožnjami ogrožanja. Spletni vir lahko skenirate s posebnimi orodji.

Nikto, W3af (napisan v Pythonu 2.7, ki ni več podprt) ali Arachni (ne podpira več od februarja) so najbolj priljubljene rešitve, predstavljene v brezplačnem segmentu. Seveda obstajajo tudi drugi, na primer Wapiti, na katerega smo se odločili osredotočiti.

Wapiti deluje z naslednjimi vrstami ranljivosti:

  • razširitev datotek (lokalna in oddaljena, fopen, readfile);
  • injekcije (PHP / JSP / ASP / SQL injekcija in XPath injekcija);
  • XSS (Cross Site Scripting) (odsevno in trajno);
  • odkrivanje in izvajanje ukazov (eval(), system(), passtru());
  • Injekcije CRLF (delitev odziva HTTP, fiksacija seje);
  • vdelava XXE (zunanja entiteta XML);
  • SSRF (Server Side Request Forgery);
  • uporaba znanih potencialno nevarnih datotek (zahvaljujoč podatkovni bazi Nikto);
  • šibke konfiguracije .htaccess, ki jih je mogoče zaobiti;
  • prisotnost varnostnih kopij datotek, ki razkrivajo zaupne informacije (razkritje izvorne kode);
  • Shellshock;
  • odprte preusmeritve;
  • nestandardne metode HTTP, ki jih je mogoče razrešiti (PUT).

Značilnosti:

  • podpora za proxy HTTP, HTTPS in SOCKS5;
  • avtentikacija z več metodami: Basic, Digest, Kerberos ali NTLM;
  • možnost omejitve območja skeniranja (domena, mapa, stran, URL);
  • samodejno odstranjevanje enega od parametrov v URL-ju;
  • več previdnostnih ukrepov proti neskončnim zankam skeniranja (primer: ifor, mejne vrednosti za parameter);
  • možnost nastavitve prioritete za pregled URL-jev (tudi če niso v območju skeniranja);
  • možnost izključitve nekaterih URL-jev iz skeniranja in napadov (na primer: odjava URL-ja);
  • uvozite piškotke (pridobite jih z orodjem wapiti-getcookie);
  • možnost aktiviranja/deaktiviranja preverjanja SSL certifikata;
  • možnost ekstrahiranja URL-jev iz JavaScripta (zelo preprost tolmač JS);
  • interakcija s HTML5;
  • več možnosti za upravljanje vedenja pajka in omejitev;
  • nastavitev najdaljšega časa za postopek skeniranja;
  • dodajanje nekaterih glav HTTP po meri ali nastavitev uporabniškega agenta po meri.

Dodatne funkcije:

  • izdelava poročil o ranljivosti v različnih formatih (HTML, XML, JSON, TXT);
  • zaustavitev in nadaljevanje skeniranja ali napada (mehanizem seje z uporabo baz podatkov SQLite3);
  • osvetlitev ozadja v terminalu za poudarjanje ranljivosti;
  • različne stopnje beleženja;
  • Hiter in enostaven način za aktiviranje/deaktiviranje napadalnih modulov.

Namestitev

Trenutno različico Wapiti je mogoče namestiti na dva načina:

  • prenesite vir iz uradnega strani in zaženite namestitveni skript, potem ko ste predhodno namestili Python3;
  • z uporabo ukaza pip3 install wapiti3.

Po tem bo Wapiti pripravljen za uporabo.

Delo z orodjem

Za prikaz dela Wapiti bomo uporabili posebej pripravljeno stojalo sites.vulns.pentestit.ru (notranji vir), ki vsebuje različne ranljivosti (Injection, XSS, LFI/RFI) in druge pomanjkljivosti spletnih aplikacij.

Informacije so zgolj informativne narave. Ne kršite zakona!

Osnovni ukaz za zagon skenerja:

# wapiti -u <target> <options>

Hkrati je na voljo precej podrobna pomoč z ogromnim številom možnosti zagona, na primer:

--Obseg - področje uporabe
Če določite parameter obsega skupaj z URL-jem za pajkanje, lahko prilagodite območje za pajkanje spletnega mesta tako, da podate posamezno stran in vse strani, ki jih je mogoče najti na spletnem mestu.

-s и -x — možnosti za dodajanje ali odstranjevanje določenih URL-jev. Te možnosti so uporabne, ko morate med postopkom pajkanja dodati ali odstraniti določen URL.

--preskoči — podani parameter s tem ključem bo pregledan, vendar ne bo napaden. Uporabno, če obstajajo nevarni parametri, ki jih je med skeniranjem najbolje izključiti.

--verify-ssl — omogočite ali onemogočite preverjanje potrdila.
Skener Wapiti je modularen. Vendar pa morate za zagon določenih modulov, vključno s tistimi, ki so samodejno povezani med delovanjem optičnega bralnika, uporabiti stikalo -m in navesti tiste, ki jih potrebujete, ločene z vejicami. Če ključa ne uporabite, bodo vsi moduli privzeto delovali. V najpreprostejši različici bo videti takole:

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

Ta primer uporabe pomeni, da bomo pri skeniranju cilja uporabljali le module SQL, XSS in XXE. Poleg tega lahko filtrirate delovanje modulov glede na želeno metodo. Na primer -m “xss: get, blindsql: post, xxe: post”. V tem primeru modul xss velja za zahteve, poslane z metodo GET, in modul blibdsql - za POST zahteve itd. Mimogrede, če kakšen modul, ki je bil vključen na seznam, med skeniranjem ni bil potreben ali traja zelo dolgo, lahko s pritiskom na kombinacijo Ctrl+C preskočite uporabo trenutnega modula tako, da izberete ustrezen element v interaktivnem meniju.

Wapiti podpira posredovanje zahtev prek posrednika z uporabo ključa -p in avtentikacijo na ciljnem mestu prek parametra -a. Določite lahko tudi vrsto avtentikacije: Osnovno, prebaviti, Kerberos и NTLM. Zadnja dva lahko zahtevata namestitev dodatnih modulov. Poleg tega lahko v zahteve vstavite poljubne glave (vključno s poljubnimi User-Agent) in veliko več.

Za uporabo avtentikacije lahko uporabite orodje wapiti-getcookie. Z njeno pomočjo oblikujemo piškotek, ki ga bo Wapiti uporabil pri skeniranju. Nastanek piškotek končano z ukazom:

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

Med interaktivnim delom odgovarjamo na vprašanja in navajamo potrebne podatke, kot so prijava, geslo itd.:

Wapiti - samostojno preverjanje ranljivosti spletnega mesta

Izhod je datoteka v formatu JSON. Druga možnost je, da dodate vse potrebne informacije prek parametra -d:

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

Rezultat bo podoben:

Wapiti - samostojno preverjanje ranljivosti spletnega mesta

Če upoštevamo glavno funkcionalnost optičnega bralnika, je bila zadnja zahteva za testiranje spletne aplikacije v našem primeru:

# 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

kjer med drugimi parametri:

-f и -o — format in pot za shranjevanje poročila;

-m — povezovanje vseh modulov ni priporočljivo, ker bo vplivalo na čas testiranja in velikost poročila;

--barva — poudarite najdene ranljivosti glede na njihovo kritičnost glede na sam Wapiti;

-c - z uporabo datoteke z piškotek, ustvarjeno z uporabo wapiti-getcookie;

--Obseg — izbira tarče za napad. Izbira možnosti mapa Vsak URL bo preiskan in napaden, začenši z osnovnim. Osnovni URL mora imeti poševnico (brez imena datoteke);

--seja izpiranja — omogoča večkratno skeniranje, pri katerem predhodni rezultati ne bodo upoštevani;

-A - lasten User-Agent;

-p — naslov strežnika proxy, če je potrebno.

Nekaj ​​o poročilu

Rezultat skeniranja je predstavljen v obliki podrobnega poročila o vseh najdenih ranljivostih v obliki strani HTML, v jasni in lahko berljivi obliki. Poročilo bo vsebovalo kategorije in število najdenih ranljivosti, njihove opise, zahteve, ukaze za curl in nasvete, kako jih zapreti. Za lažjo navigacijo bo imenom kategorij dodana povezava, s klikom na katero se lahko pomaknete do nje:

Wapiti - samostojno preverjanje ranljivosti spletnega mesta

Bistvena pomanjkljivost poročila je odsotnost zemljevida spletne aplikacije kot takega, brez katerega ne bo jasno, ali so analizirani vsi naslovi in ​​parametri. Obstaja tudi možnost lažno pozitivnih rezultatov. V našem primeru poročilo vključuje "varnostne kopije datotek" in "potencialno nevarne datoteke." Njihovo število ne ustreza resničnosti, saj na strežniku ni bilo takih datotek:

Wapiti - samostojno preverjanje ranljivosti spletnega mesta

Morda bodo nepravilno delujoči moduli sčasoma popravljeni. Druga pomanjkljivost poročila je pomanjkanje barvanja najdenih ranljivosti (glede na njihovo kritičnost) ali vsaj razdelitve v kategorije. Edini način, s katerim lahko posredno razumemo kritičnost najdene ranljivosti, je uporaba parametra --barva med skeniranjem, nato pa bodo najdene ranljivosti obarvane v različnih barvah:

Wapiti - samostojno preverjanje ranljivosti spletnega mesta

Toda samo poročilo ne zagotavlja takšne barve.

Ranljivosti

SQLi

Optični bralnik se je delno spopadel z iskanjem SQLi. Pri iskanju ranljivosti SQL na straneh, kjer avtentikacija ni potrebna, ne nastanejo nobene težave:

Wapiti - samostojno preverjanje ranljivosti spletnega mesta

Ni bilo mogoče najti ranljivosti na straneh, ki so dostopne samo po preverjanju pristnosti, tudi z uporabo valid piškotek, saj bo najverjetneje po uspešni avtentikaciji njihova seja "odjavljena" in piškotek bo postal neveljaven. Če bi bila funkcija deavtorizacije implementirana kot ločen skript, odgovoren za obdelavo tega postopka, bi jo bilo mogoče popolnoma izključiti s parametrom -x in s tem preprečiti njeno sprožitev. V nasprotnem primeru ne bo mogoče izključiti njegove obdelave. To ni težava s posebnim modulom, ampak z orodjem kot celoto, vendar zaradi tega odtenka ni bilo mogoče zaznati več injekcij v zaprtem območju vira.

XSS

Skener se je odlično spopadel z zadano nalogo in našel vse pripravljene ranljivosti:

Wapiti - samostojno preverjanje ranljivosti spletnega mesta

LFI/RFI

Skener je našel vse osnovne ranljivosti:

Wapiti - samostojno preverjanje ranljivosti spletnega mesta

Na splošno kljub lažnim pozitivnim rezultatom in manjkajočim ranljivostim Wapiti kot brezplačno orodje kaže precej dobre rezultate delovanja. Vsekakor velja priznati, da je skener precej zmogljiv, prilagodljiv in večnamenski, predvsem pa je brezplačen, zato ima pravico, da se uporablja za pomoč skrbnikom in razvijalcem pri pridobivanju osnovnih informacij o varnostnem statusu spleta. aplikacija.

Ostanite zdravi in ​​zaščiteni!

Vir: www.habr.com

Dodaj komentar