
Eelmises osas oleme rääkinud Nemesida WAF Free — tasuta tööriist, mis kaitseb veebisaite ja API-sid häkkerite rünnakute eest, ning seekord teeme ülevaate populaarsest haavatavuste skannerist .
Veebisaidi haavatavuste skaneerimine on hädavajalik tegevus, mis koos lähtekoodi analüüsiga võimaldab hinnata selle kaitset ohte eest. Veebiresurssi saab skaneerida spetsialiseeritud tööriistade abil.
Nikto, W3af (kirjutatud Python 2.7-s, mille toetamine on lõppenud) või Arachni (pole enam toetatud alates veebruarist) — need on kõige populaarsemad lahendused tasuta segmentis. Loomulikult on ka teisi, näiteks Wapiti, millele me keskendume.
Wapiti töötab järgmiste haavatavus liikidega:
- failide avamine (kohalikud ja eemalolevad, fopen, readfile);
- sisestused (PHP / JSP / ASP / SQL-sisestused ja XPath-sisestused);
- XSS (rist-saitide skripteerimine) (peegeldunud ja püsiv);
- käskude avastamine ja täitmine (eval(), system(), passtru());
- CRLF-sisestused (HTTP vastuste eraldamine, sessiooni fikseerimine);
- XXE (XML väline entiteet) sisestamine;
- SSRF (serveri poolel päringu vale esitamine);
- kuulsate potentsiaalselt ohtlike failide kasutamine (tänu Nikto andmebaasile);
- .htaccess nõrkade konfiguratsioonide võimalus, mida saab ületada;
- tagatseid faile, mis paljastavad konfidentsiaalset teavet (allika kood);
- Shellshock;
- avatud suunamised;
- ebastandardsete HTTP meetodite lubamine (PUT).
Võimalused:
- HTTP, HTTPS ja SOCKS5 proxy tugi;
- mitme autentimismeetodi tugi: Basic, Digest, Kerberos või NTLM;
- võime piirata skaneerimisala (domeen, kaust, leht, URL);
- ühe URL parameetri automaatne eemaldamine;
- mitmed ettevaatusabinõud lõpmatute skaneerimise tsüklite vastu (näide: ifor, parameetri väärtuste piiramise abil);
- võime seada prioriteedi URL-ide uurimiseks (isegi kui need ei ole skaneerimisalas);
- võime teatud URL-e skaneerimisest ja rünnakutest välja jätta (nt: URL logout);
- küpsiste importimine (neid saamine tööriista wapiti-getcookie abil);
- võime aktiveerida / deaktiveerida SSL-sertifikaatide kontrolli;
- võime JavaScriptist URL-e väljavõtta (väga lihtne JS tõlgendan);
- interaktsioon HTML5-ga;
- mitmesuguseid crawler'i käitumise ja piirangute juhtimise võimalusi;
- skaneerimisprotsessi maksimaalse aja seadmine;
- mõnede kohandatavate HTTP-pealkirjade lisamine või kasutajakonto User-Agent seadistamine.
Lisafunktsioonid:
- haavatavuste aruannete genereerimine erinevates formaatides (HTML, XML, JSON, TXT);
- skaneerimise või rünnakute peatamine ja taastamine (seansimehhanism SQLite3 andmebaasiga);
- terminali silendamine haavatavuse esitlemiseks;
- erinevad logimise tasemed;
- kiire ja lihtne viis rünnakumoodulite aktiveerimiseks / deaktiveerimiseks.
Installimine
Wapiti uusimat versiooni saab installida 2 viisil:
- laadige alla allikas ametlikult ja käivitage installiskript, eelnevalt installides Python3;
- kasutades käsku pip3 install wapiti3.
Pärast seda on Wapiti kasutamiseks valmis.
Tööriista kasutamine
Wapiti töö demonstreerimiseks kasutame spetsiaalselt ette valmistatud seisu sites.vulns.pentestit.ru (siseressurss), mis sisaldab erinevaid haavatavusi (Injection, XSS, LFI/RFI) ja muid veebirakenduste puudusi.
Teave antakse ainult tutvumiseks. Ära riku seadusandlust!
Põhikäsk skanneri käivitamiseks:
# wapiti -u <target> <options>Sellel on üsna põhjalik juhend, kus on suur hulk käivitamisvõimalusi, näiteks:
—scope — rakendusalad
Kui koos URL-iga skaneerimiseks määrata parameter scope, saab reguleerida saidi skaneerimist, määrates nii eraldi lehekülge kui ka kõik lehed, mida on võimalik saidilt leida.
-s ja -x — spetsiifiliste URL-ide lisamise või eemaldamise parameetrid. Need parameetrid on kasulikud, kui on vaja lisada või eemaldada konkreetne URL skaneerimise protsessis.
—skip — märgitud parameeter koos selle võtmega skaneeritakse, kuid rünnatakse mitte. Kasulik, kui on mingeid ohtlikke parameetreid, mida on parem skaneerimise ajal vältida.
—verify-ssl — sertifikaadi kontrollimise sisselülitamine või väljalülitamine.
Wapiti skanner on modulaarselt seadistatud. Siiski, et käivitada konkreetseid mooduleid, mis automaatselt ühendatakse skanneri töö ajal, tuleb kasutada võtmeid -m ja loetleda vajalikud komadega. Kui võtme kasutamist ei toimu, siis töötavad vaikimisi kõik moodulid. Kõige lihtsam variant näeb välja järgmiselt:
# wapiti -u http://sites.vulns.pentestit.ru/ -m sql,xss,xxeSee näide tähendab, et kasutame skaneerimisel ainult SQL, XSS ja XXE mooduleid. Lisaks saab moodulite tööd filtreerida vastavalt soovitud meetodile. Näiteks -m “xss: get, blindsql: post, xxe: post”. Sellisel juhul moodul xss rakendatakse GET meetodiga edastatavatele päringutele, samas kui moodul blibdsql rakendatakse POST-päringutele jne. Muide, kui mõni loetellu kuuluv moodul ei osutunud skaneerimise ajal vajalikuks või töötab liiga kaua, siis kombinatsiooni Ctrl+C vajutamine võimaldab mööda pääseda praegusest moodulist, valides vastava punkti interaktiivses menüüs.
Wapiti toetab päringute edastamist läbi proksi-serveri, kasutades võtit -p ja autentimist sihtveebisaidil läbi parameetri -a. Samuti on võimalik määrata autentimise tüüp: Basiс, Digest, Kerberos ja NTLM. Viimaste kahe jaoks võib osutuda vajalikuks täiendavate moodulite installimine. Samuti on võimalik päringutesse lisada igasuguseid päiseid (sh vabalt valitud User-Agent) ja palju muud.
Autentimise kasutamiseks saab kasutada tööriista wapiti-getcookie. Selle abiga vormindame küpsiseid, mida Wapiti skaneerimisel kasutab. Formeerimine küpsiseid toimub käsu abil:
# wapiti-getcookie -u http://sites.vulns.pentestit.ru/login.php -c cookie.jsonTöötamise käigus interaktiivses režiimis vastame küsimustele ja anname vajalikku teavet, nagu: kasutajanimi, parool ja muud:

Saame välja faili JSON-formaadis. Teine variant on kogu vajalik teave lisada parameetri kaudu -d:
# wapiti-getcookie - http://sites.vulns.pentestit.ru/login.php -c cookie.json -d "username=admin&password=admin&enter=submit"Tulemus on analoogne:

Skanneri põhifunktsiooni arvesse võttes oli meie juhtumi lõpp-päring veebirakenduse testimiseks järgmine:
# 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:3128kus teiste parameetrite seas:
-f ja -o — aruande salvestamise formaat ja tee;
-m — kõigi moodulite ühendamine — ei soovitata, kuna see mõjutab testimise aega ja aruande suurust;
—color — rõhutada leitud haavatavusi vastavalt nende kriitilisusele Wapiti enda versiooni järgi;
-c — kasutada faili küpsiseid, genereeritud kasutades wapiti-getcookie;
—scope — ründeesmärgi valik. Valides variandi kaust skaneeritakse ja rünnatakse iga URL-i alates baasist. Baas-URL peab lõppema kaldkriipsuga (ilma failinime);
—flush-session — võimaldab uuesti skaneerida, arvestamata varasemaid tulemusi;
-A — kohandatud User-Agent;
-p — vahepealse serveri aadress, kui see on vajalik.
Veidi aruandest
Skaneerimistulemus esitatakse detailse aruandena kõigi leitud haavatavuste kohta HTML-lehe vormingus, selge ja arusaadava esitusega. Aruandes on märgitud kategooriad ja leitud haavatavuste arv, nende kirjeldus, päringud, käsud curl ja soovitused nende sulgemiseks. Lihtsustatud navigeerimise huvides lisatakse kategooriate pealkirjadele link, millele klikkides saab neid vaadata:

Oluline puudus raportis on, et seal puudub veebirakenduse kaart, mille abil ei ole selge, kas kõik aadressid ja parameetrid on analüüsitud. Samuti on valehäirete tõenäosus. Meie puhul on raportis mainitud 'varukoopia faile' ja 'potentsiaalselt ohtlikke faile'. Nende arv ei vasta tõele, kuna selliseid faile serveris ei olnud:

Võimalik, et vale tööga moodulid parandatakse aja jooksul. Samuti võib raporti puuduseks pidada leitud haavatavuste värvilise tuvastamise puudumist (vastavalt nende kriitilisusele) või vähemalt nende jagamist kategooriatesse. Ainsana saame me kaudselt mõista leitud haavatavuse kriitilisust, kui rakendada parameetrit —color skaneerimise ajal ja siis värvilise kodeerimisega tuvastatud haavatavused:

Kuid raportis sarnast värvikoodimist ei ole ette nähtud.
Haavatavused
SQLi
Skanner suutis osaliselt leida SQL-i haavatavusi. Halduse nõudmist mitte vajavatel lehtedel SQL haavatavuste otsimisel ei esine mingeid probleeme:

Viga leidmine lehtedel, mis on saadaval ainult autentimise järel, ei õnnestunud isegi valideeritud andmeid kasutades, küpsiseid, kuna tõenäoliselt toimub pärast edukat autentimist "istungi lahkumine" ja küpsiseid need muutuvad kehtetuks. Kui deautoriseerimise funktsioon oleks teostatud eraldi skriptina, mis vastutab selle protseduuri töötlemise eest, oleks seda võimalik täielikult välistada -x parameetri abil, vältides sellega selle aktiveerimist. Vastasel juhul ei saa seda töötlemist vältida. See ei ole konkreetse mooduli probleem, vaid tööriista üldine küsimus, kuid selle nüansi tõttu ei õnnestunud leida mitmeid süstimise katseid ressurssi suletud alal.
XSS
Antud ülesandega skaneerija tegeles suurepäraselt ja leidis kõik ettevalmistatud haavatavused:

LFI/RFI
Skaneerija leidis kõik peidetud haavatavused:

Kokkuvõttes näitab Wapiti, tasuta tööriist, vaatamata valehäiretele ja haavatavuste vahelejätmistele, üsna häid tulemusi. Igal juhul tuleb tunnistada, et skanner on tundlik, paindlik ja mitmekesine ning mis kõige tähtsam — tasuta, seega on seda õigust kasutada, aidates administraatoreil ja arendajatel saada põhiteavet veebirakenduse turvalisuse seisukorrast.
Püsige terved ja kaitstud!
Allikas: habr.com
