Wapiti - samostalno provjerava ranjivosti na web lokaciji
U poslednjem članak razgovarali smo o tome Nemesida WAF Besplatno - besplatni alat za zaštitu web stranica i API-ja od hakerskih napada, a u ovom smo odlučili pregledati popularni skener ranjivosti Elk.
Skeniranje web stranice u potrazi za ranjivostima je neophodna mjera, koja, zajedno s analizom izvornog koda, omogućava procjenu nivoa njegove sigurnosti od prijetnji kompromitacije. Možete skenirati web resurs pomoću specijaliziranih alata.
Nikto, W3af (napisan u Python 2.7, koji više nije podržan) ili Arachni (više nije podržan od februara) su najpopularnija rješenja predstavljena u besplatnom segmentu. Naravno, postoje i drugi, na primjer Wapiti, na koje smo odlučili da se fokusiramo.
Wapiti radi sa sljedećim vrstama ranjivosti:
proširenje datoteka (lokalno i udaljeno, fopen, readfile);
injekcije (PHP / JSP / ASP / SQL injekcija i XPath injekcija);
XSS (Cross Site Scripting) (refleksivan i postojan);
otkrivanje i izvršavanje komandi (eval(), system(), passtru());
korištenje poznatih potencijalno opasnih datoteka (zahvaljujući Nikto bazi podataka);
slabe .htaccess konfiguracije koje se mogu zaobići;
prisustvo rezervnih datoteka koje otkrivaju povjerljive informacije (otkrivanje izvornog koda);
Shellshock;
otvorena preusmjeravanja;
nestandardne HTTP metode koje se mogu riješiti (PUT).
Karakteristike:
HTTP, HTTPS i SOCKS5 proxy podrška;
autentikacija korištenjem nekoliko metoda: Basic, Digest, Kerberos ili NTLM;
mogućnost ograničavanja područja skeniranja (domena, mapa, stranica, URL);
automatsko uklanjanje jednog od parametara u URL-u;
višestruke mjere opreza protiv beskrajnih petlji skeniranja (primjer: ifor, granične vrijednosti za parametar);
mogućnost postavljanja prioriteta za ispitivanje URL-ova (čak i ako se ne nalaze u području skeniranja);
mogućnost isključivanja nekih URL-ova iz skeniranja i napada (na primjer: URL odjava);
uvoz kolačića (dobite ih pomoću alata wapiti-getcookie);
mogućnost aktiviranja/deaktiviranja verifikacije SSL sertifikata;
mogućnost izdvajanja URL-ova iz JavaScripta (veoma jednostavan JS interpreter);
interakcija sa HTML5;
nekoliko opcija za upravljanje ponašanjem i ograničenjima puzača;
postavljanje maksimalnog vremena za proces skeniranja;
dodavanje nekih prilagođenih HTTP zaglavlja ili postavljanje prilagođenog korisničkog agenta.
Dodatne karakteristike:
kreiranje izvještaja o ranjivosti u različitim formatima (HTML, XML, JSON, TXT);
pauziranje i nastavak skeniranja ili napada (mehanizam sesije koji koristi SQLite3 baze podataka);
pozadinsko osvjetljenje terminala za isticanje ranjivosti;
različiti nivoi sječe;
Brz i lak način za aktiviranje/deaktiviranje napadačkih modula.
postavljanje
Trenutna verzija Wapitija može se instalirati na 2 načina:
preuzmite izvor sa službenog stranice i pokrenite instalacijsku skriptu, nakon što ste prethodno instalirali Python3;
koristeći naredbu pip3 install wapiti3.
Nakon ovoga, Wapiti će biti spreman za polazak.
Rad sa alatom
Da bismo demonstrirali rad Wapiti-ja, koristićemo posebno pripremljen štand sites.vulns.pentestit.ru (interni resurs), koji sadrži različite ranjivosti (Injection, XSS, LFI/RFI) i druge nedostatke web aplikacija.
Informacije su date samo u informativne svrhe. Ne kršite zakon!
Osnovna naredba za pokretanje skenera:
# wapiti -u <target> <options>
Istovremeno, postoji prilično detaljna pomoć s velikim brojem opcija pokretanja, na primjer:
--scope - područje primjene
Ako navedete parametar opsega zajedno sa URL-om indeksiranja, možete podesiti područje indeksiranja web lokacije tako što ćete navesti i jednu stranicu i sve stranice koje se mogu naći na web lokaciji.
-s и -x — opcije za dodavanje ili uklanjanje određenih URL-ova. Ove opcije su korisne kada trebate dodati ili ukloniti određeni URL tokom procesa indeksiranja.
--skip — navedeni parametar sa ovim ključem će biti skeniran, ali neće biti napadnut. Korisno ako postoje opasni parametri koje je najbolje isključiti tokom skeniranja.
--verify-ssl — omogućite ili onemogućite verifikaciju sertifikata.
Wapiti skener je modularan. Međutim, da biste pokrenuli određene module, uključujući one koji se automatski povezuju dok skener radi, trebate koristiti prekidač -m i navesti one koje su vam potrebne, odvojene zarezima. Ako se ključ ne koristi, svi moduli će raditi prema zadanim postavkama. U najjednostavnijoj verziji to će izgledati ovako:
Ovaj primjer upotrebe znači da ćemo koristiti samo SQL, XSS i XXE module kada skeniramo cilj. Osim toga, možete filtrirati rad modula ovisno o željenoj metodi. Na primjer -m “xss: get, blindsql: post, xxe: post”. U ovom slučaju, modul xss primjenjivat će se na zahtjeve poslane metodom GET i modulom blibdsql - na POST zahtjeve, itd. Inače, ako neki modul koji je uvršten na listu nije bio potreban tokom skeniranja ili traje jako dugo, onda pritiskom na kombinaciju Ctrl+C možete preskočiti korištenje trenutnog modula odabirom odgovarajuće stavke u interaktivnom izborniku.
Wapiti podržava prosljeđivanje zahtjeva kroz proxy pomoću ključa -p i autentifikaciju na ciljnom mjestu preko parametra -a. Također možete odrediti vrstu provjere autentičnosti: Basic, Digest, Kerberos и NTLM. Posljednja dva mogu zahtijevati instalaciju dodatnih modula. Osim toga, možete umetnuti bilo koja zaglavlja u zahtjeve (uključujući proizvoljna Korisnički agent) i mnogo više.
Da biste koristili autentifikaciju, možete koristiti alat wapiti-getcookie. Uz njegovu pomoć formiramo kolačić, koji će Wapiti koristiti prilikom skeniranja. Formacija kolačić uradjeno sa komandom:
Kada se uzme u obzir glavna funkcionalnost skenera, konačni zahtjev za testiranje web aplikacije u našem slučaju je bio:
# 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
gdje između ostalih parametara:
-f и -o — format i putanju za pohranjivanje izvještaja;
-m — povezivanje svih modula se ne preporučuje, jer će uticati na vrijeme testiranja i veličinu izvještaja;
--boja — istaći pronađene ranjivosti u zavisnosti od njihove kritičnosti prema samom Wapitiju;
-c - koristeći datoteku sa kolačić, generirano korištenjem wapiti-getcookie;
--scope — odabir mete za napad. Odabir opcije folder Svaki URL će biti indeksiran i napadnut, počevši od osnovnog. Osnovni URL mora imati kosu crtu (bez imena datoteke);
--flush-session — omogućava ponovljeno skeniranje, pri čemu se prethodni rezultati neće uzeti u obzir;
-A - sopstveni Korisnički agent;
-p — adresa proxy servera, ako je potrebno.
Malo o izveštaju
Rezultat skeniranja je predstavljen u obliku detaljnog izvještaja o svim pronađenim ranjivostima u HTML formatu stranice, u jasnom i lako čitljivom obliku. U izvještaju će biti navedene kategorije i broj pronađenih ranjivosti, njihovi opisi, zahtjevi, naredbe za curl i savjete kako ih zatvoriti. Radi lakše navigacije, nazivima kategorija će biti dodan link, klikom na koji možete ići na nju:
Značajan nedostatak izvještaja je nepostojanje mape web aplikacije kao takve, bez koje neće biti jasno da li su analizirane sve adrese i parametri. Postoji i mogućnost lažnih pozitivnih rezultata. U našem slučaju, izvještaj uključuje "fajlove sigurnosne kopije" i "potencijalno opasne datoteke". Njihov broj ne odgovara stvarnosti, jer na serveru nije bilo takvih datoteka:
Možda će se moduli koji nepravilno rade vremenom popraviti. Još jedan nedostatak izvještaja je nedostatak bojenja pronađenih ranjivosti (u zavisnosti od njihove kritičnosti), ili barem podjele u kategorije. Jedini način na koji možemo indirektno razumjeti kritičnost pronađene ranjivosti je korištenje parametra --boja tokom skeniranja, a zatim će pronađene ranjivosti biti obojene u različite boje:
Ali sam izvještaj ne daje takvu boju.
Ranjivosti
SQLi
Skener se djelomično nosi sa SQLi pretraživanjem. Prilikom traženja SQL ranjivosti na stranicama na kojima autentifikacija nije potrebna, ne nastaju problemi:
Nije bilo moguće pronaći ranjivost na stranicama dostupnim tek nakon provjere autentičnosti, čak ni koristeći valid kolačić, budući da će najvjerovatnije nakon uspješne autentifikacije njihova sesija biti “odjavljena” i kolačić će postati nevažeći. Kada bi se funkcija deautorizacije implementirala kao zasebna skripta odgovorna za obradu ove procedure, tada bi je bilo moguće potpuno isključiti preko -x parametra i na taj način spriječiti njeno pokretanje. U suprotnom, neće biti moguće isključiti njegovu obradu. Ovo nije problem sa određenim modulom, već sa alatom u cjelini, ali zbog ove nijanse nije bilo moguće otkriti nekoliko injekcija u zatvorenom području resursa.
XSS
Skener se savršeno nosio sa zadatim zadatkom i pronašao sve pripremljene ranjivosti:
LFI/RFI
Skener je pronašao sve temeljne ranjivosti:
Generalno, uprkos lažnim pozitivnim rezultatima i nedostajućim ranjivostima, Wapiti, kao besplatan alat, pokazuje prilično dobre rezultate. U svakom slučaju, valja priznati da je skener prilično moćan, fleksibilan i multifunkcionalan, a što je najvažnije, besplatan je, pa ima pravo da se koristi u pomaganju administratorima i programerima da dobiju osnovne informacije o sigurnosnom statusu weba. aplikacija.