U posljednjih članak razgovarali smo o Nemesida WAF Besplatno - besplatni alat za zaštitu web stranica i API-ja od hakerskih napada, au ovom smo odlučili recenzirati popularni skener ranjivosti Sjevernoamerički jelen.
Skeniranje web stranice u potrazi za ranjivostima nužna je mjera koja vam, zajedno s analizom izvornog koda, omogućuje procjenu razine njezine sigurnosti od prijetnji ugrožavanja. Možete skenirati web izvor pomoću specijaliziranih alata.
Nikto, W3af (napisano u Python 2.7, koji više nije podržan) ili Arachni (više nije podržan od veljače) najpopularnija su rješenja predstavljena u besplatnom segmentu. Naravno, tu su i drugi, na primjer, Wapiti, na koji smo se odlučili fokusirati.
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) (reflektirajuće i postojano);
otkrivanje i izvršavanje naredbi (eval(), system(), passtru());
SSRF (Krivotvorenje zahtjeva na strani poslužitelja);
korištenje poznatih potencijalno opasnih datoteka (zahvaljujući Nikto bazi podataka);
slabe .htaccess konfiguracije koje se mogu zaobići;
prisutnost sigurnosnih kopija datoteka koje otkrivaju povjerljive informacije (otkrivanje izvornog koda);
Kontuzija;
otvorena preusmjeravanja;
nestandardne HTTP metode koje se mogu razriješiti (PUT).
Značajke:
HTTP, HTTPS i SOCKS5 proxy podrška;
provjera autentičnosti 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 beskonačnih petlji skeniranja (primjer: ifor, ograničavajuće vrijednosti za parametar);
mogućnost postavljanja prioriteta za ispitivanje URL-ova (čak i ako nisu u području skeniranja);
mogućnost isključivanja nekih URL-ova iz skeniranja i napada (na primjer: odjava URL-a);
uvesti kolačiće (dobiti ih pomoću alata wapiti-getcookie);
mogućnost aktiviranja/deaktiviranja provjere SSL certifikata;
mogućnost izvlačenja URL-ova iz JavaScripta (vrlo jednostavan JS interpreter);
interakcija s HTML5;
nekoliko opcija za upravljanje ponašanjem indeksiranja i ograničenjima;
postavljanje maksimalnog vremena za proces skeniranja;
dodavanjem nekih prilagođenih HTTP zaglavlja ili postavljanjem prilagođenog korisničkog agenta.
Dodatne mogućnosti:
izrada izvješća o ranjivostima u različitim formatima (HTML, XML, JSON, TXT);
pauziranje i nastavak skeniranja ili napada (mehanizam sesije koji koristi SQLite3 baze podataka);
pozadinsko osvjetljenje u terminalu za isticanje ranjivosti;
različite razine sječe;
Brz i jednostavan način aktiviranja/deaktiviranja modula napada.
Instalacija
Trenutna verzija Wapitija može se instalirati na 2 načina:
preuzmite izvor sa službenog сайта i pokrenite instalacijsku skriptu, nakon što ste prethodno instalirali Python3;
pomoću naredbe pip3 install wapiti3.
Nakon ovoga, Wapiti će biti spreman za polazak.
Rad s alatom
Da bismo demonstrirali rad Wapitija, koristit ćemo se posebno pripremljenim štandom sites.vulns.pentestit.ru (interni resurs), koji sadrži razne ranjivosti (Injection, XSS, LFI/RFI) i druge nedostatke web aplikacija.
Informacije su dane samo u informativne svrhe. Ne kršite zakon!
Osnovna naredba za pokretanje skenera:
# wapiti -u <target> <options>
Istodobno, postoji prilično detaljna pomoć s velikim brojem opcija pokretanja, na primjer:
-- opseg - područje primjene
Ako navedete parametar opsega zajedno s URL-om indeksiranja, možete prilagoditi područje skeniranja web-mjesta tako da navedete jednu stranicu i sve stranice koje se mogu pronaći na web-mjestu.
-s и -x — opcije za dodavanje ili uklanjanje određenih URL-ova. Ove opcije su korisne kada trebate dodati ili ukloniti određeni URL tijekom procesa indeksiranja.
--preskočiti — navedeni parametar s ovim ključem bit će skeniran, ali neće biti napadnut. Korisno ako postoje opasni parametri koje je najbolje isključiti tijekom skeniranja.
--provjeri-ssl — omogućite ili onemogućite provjeru certifikata.
Wapiti skener je modularan. Međutim, za pokretanje određenih modula, uključujući one koji se automatski povezuju dok skener radi, morate upotrijebiti prekidač -m i navesti one koji su vam potrebni, odvojene zarezima. Ako se ključ ne koristi, tada će svi moduli raditi prema zadanim postavkama. U najjednostavnijoj verziji izgledat će ovako:
Ovaj primjer upotrebe znači da ćemo koristiti samo SQL, XSS i XXE module prilikom skeniranja cilja. 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 modul blibdsql - za POST zahtjeve, itd. Usput, ako neki modul koji je bio uključen na popis nije bio potreban tijekom skeniranja ili je potrebno jako dugo, tada 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 provjera autentičnosti na ciljnom mjestu putem parametra -a. Također možete odrediti vrstu provjere autentičnosti: Osnovni, temeljni, probaviti, Kerberos и NTLM. Posljednja dva mogu zahtijevati ugradnju dodatnih modula. Osim toga, u zahtjeve možete umetnuti bilo koja zaglavlja (uključujući proizvoljna User-agent) i mnogo više.
Za korištenje autentifikacije možete koristiti alat wapiti-getcookie. Uz njegovu pomoć oblikujemo kolačić, koje će Wapiti koristiti prilikom skeniranja. Formiranje kolačić učinjeno naredbom:
Kada se uzme u obzir glavna funkcionalnost skenera, konačni zahtjev za testiranje web aplikacije u našem slučaju bio je:
# 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 je između ostalih parametara:
-f и -o — format i put za spremanje izvješća;
-m — ne preporučuje se povezivanje svih modula, jer utjecat će na vrijeme testiranja i veličinu izvješća;
--boja — istaknuti pronađene ranjivosti ovisno o njihovoj kritičnosti prema samom Wapitiju;
-c - koristeći datoteku sa kolačić, generiran korištenjem wapiti-getcookie;
-- opseg — odabir cilja za napad. Odabir opcije mapa Svaki će URL biti indeksiran i napadnut, počevši od osnovnog. Osnovni URL mora imati kosu crtu (bez naziva datoteke);
--sesija ispiranja — omogućuje ponovljeno skeniranje, pri čemu prethodni rezultati neće biti uzeti u obzir;
-A - vlastiti User-agent;
-p — adresu proxy poslužitelja, ako je potrebno.
Malo o izvještaju
Rezultat skeniranja prikazuje se u obliku detaljnog izvješća o svim pronađenim propustima u HTML formatu stranice, u jasnom i lako čitljivom obliku. Izvješće će navesti kategorije i broj pronađenih ranjivosti, njihove opise, zahtjeve, naredbe za sklupčati i savjete kako ih zatvoriti. Radi lakšeg snalaženja, nazivima kategorija bit će dodana poveznica, klikom na koju možete otići na nju:
Značajan nedostatak izvješća je nepostojanje mape web aplikacije kao takve, bez koje neće biti jasno jesu li sve adrese i parametri analizirani. Također postoji mogućnost lažno pozitivnih rezultata. U našem slučaju izvješće uključuje "sigurnosne kopije datoteka" i "potencijalno opasne datoteke". Njihov broj ne odgovara stvarnosti, jer na poslužitelju nije bilo takvih datoteka:
Možda će moduli koji ne rade ispravno biti popravljeni s vremenom. Drugi nedostatak izvješća je nedostatak bojanja pronađenih ranjivosti (ovisno o njihovoj kritičnosti), ili barem njihove podjele u kategorije. Jedini način na koji neizravno možemo razumjeti kritičnost pronađene ranjivosti jest korištenje parametra --boja tijekom skeniranja, a zatim će pronađene ranjivosti biti obojene različitim bojama:
Ali samo izvješće ne daje takve boje.
Ranjivosti
SQLi
Skener se djelomično nosio s SQLi pretraživanjem. Prilikom traženja SQL ranjivosti na stranicama gdje nije potrebna provjera autentičnosti, nema problema:
Nije bilo moguće pronaći ranjivost na stranicama kojima se pristupa samo nakon autentifikacije, čak ni korištenjem valjane kolačić, budući da će najvjerojatnije nakon uspješne autentifikacije njihova sesija biti "odjavljena" i kolačić postat će 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 putem parametra -x i time spriječiti njezino pokretanje. U suprotnom, neće biti moguće isključiti njegovu obradu. To nije problem s određenim modulom, već s 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 zadanim zadatkom i pronašao sve pripremljene ranjivosti:
LFI/RFI
Skener je pronašao sve temeljne ranjivosti:
Općenito, unatoč lažnim pozitivnim rezultatima i nedostajućim ranjivostima, Wapiti, kao besplatni alat, pokazuje prilično dobre rezultate performansi. U svakom slučaju, vrijedi priznati da je skener prilično moćan, fleksibilan i višenamjenski, a što je najvažnije, besplatan je, pa se s pravom može koristiti kao pomoć administratorima i programerima u dobivanju osnovnih informacija o sigurnosnom statusu weba. primjena.