
Eelmisel rÀÀkisime Nemesida WAF Free â tasuta tööriist, mis kaitseb veebisaite ja API-sid hĂ€kkerirĂŒnnakute eest. Otsustasime teha ĂŒlevaate populaarsetest turvaaukude skaneerimise tööriistadest. .
Veebisaidi turvaaukude skaneerimine on hĂ€davajalik meetod, mis koos lĂ€htekoodi analĂŒĂŒsiga vĂ”imaldab hinnata saidi turvalisuse taset vĂ”imalike ohtude eest. Veebiteenuse skaneerimist saab teha spetsialiseeritud tööriistadega.
Nikto, W3af (kirjutatud Python 2.7, mille tugi on lÔppenud) vÔi Arachni (mis ei saa enam toetamist alates veebruarist) on tasuta valiku seas kÔige populaarsemad lahendused. Loomulikult on olemas ka teisi, nÀiteks Wapiti, millele me keskendume.
Wapiti tuvastab jÀrgmisi turvaauke:
- failide avalikustumine (kohalikud ja eemalolevad, fopen, readfile);
- sĂŒstid (PHP / JSP / ASP / SQL-sĂŒstid ja XPath-sĂŒstid);
- XSS (vÔÔraste skriptide rĂŒnnak) (peegelduvad ja pĂŒsivad);
- kÀskude tuvastamine ja tÀitmine (eval (), system (), passtru ());
- CRLF-sĂŒstid (HTTP vastuste jagamine, seansi fikseerimine);
- XXE (XML vĂ€line entiteet) sĂŒstimine;
- SSRF (serveripoolne pÀringute valeidentifitseerimine);
- tuntud potentsiaalselt ohtlike failide kasutamine (Nikto andmebaasi kaudu);
- nÔrgad .htaccess seadistused, mida saab mööda hiilida;
- varukoopiafailide olemasolu, mis avalikustavad konfidentsiaalset teavet (lÀhtekoodi avalikustamine);
- Shellshock;
- avatud ĂŒmbersuunamised;
- ebastandardsete HTTP meetodite lubamine (PUT).
VÔimalused:
- toetab HTTP, HTTPS ja SOCKS5 proksisid;
- autentimine mitmete meetoditega: Basic, Digest, Kerberos vÔi NTLM;
- vÔimalus piirata skaneerimise ulatust (domeen, kaust, leht, URL);
- automaatne ĂŒhe URL parameetri eemaldamine;
- mitmed ettevaatusabinÔud lÔputute skaneerimisringide vastu (nÀiteks: ifor, parameetri vÀÀrtuste piiramisega);
- vÔimalus mÀÀrata URL-ide prioriteetide uurimiseks (isegi kui need ei asu skaneerimise piirkonnas);
- vĂ”imalus vĂ€listada mĂ”ned URL-id skaneerimisest ja rĂŒnnakutest (nĂ€iteks: URL logout);
- kĂŒpsiste importimine (saamine tööriista wapiti-getcookie kaudu);
- vÔimalus aktiveerida/deaktiveerida SSL-sertifikaatide kontrollimine;
- vÔimalus ekstraheerida URL JavaScriptist (vÀga lihtne JS-interpretator);
- koostöö HTML5-ga;
- mÔned vÔimalused crawler'i kÀitumise ja piirangute haldamiseks;
- skaneerimisprotsessi maksimaalse aja seadmine;
- mÔnede kohandatavate HTTP-pealkirjade lisamine vÔi kohandatud User-Agent'i seadistamine.
Lisafunktsioonid:
- haavatavusraportite loomine erinevates formaatides (HTML, XML, JSON, TXT);
- skaneerimise vĂ”i rĂŒnnaku peatamine ja jĂ€tkamine (seansimehhanism SQLite3 andmebaasi kasutades);
- terminaalihaldus haavatavuste esitlemiseks;
- erinevad logimise tasemed;
- kiire ja lihtne viis rĂŒnnakumoodulite aktiveerimiseks/deaktiveerimiseks.
Paigaldamine
Praeguse Wapiti versiooni saab installida 2 viisil:
- alla laadida allika ametlikult ja kÀivitada installiskeem, eelnevalt paigaldades Python3;
- kasutades kÀsku pip3 install wapiti3.
PÀrast seda on Wapiti valmis tööks.
Tööriista kasutamine
Wapiti töö demonstreerimiseks kasutame spetsiaalselt ettevalmistatud seisti sites.vulns.pentestit.ru (siseressurss), mis sisaldab erinevaid haavatavusi (sisestus, XSS, LFI/RFI) ja muid veebirakenduste puudusi.
Teave on antud ainult tutvumiseks. Ărge rikkuda seadusi!
PÔhikomandad skanneri kÀivitamiseks:
# wapiti -u <target> <options>Samas on olemas ĂŒsna ĂŒksikasjalik abi, kus on palju kĂ€ivitamisvalikuid, nĂ€iteks:
âscope â skaneerimise ulatus
Kui lisada skaneerimise URL'ile scope parameeter, saab reguleerida saidi skaneerimise ulatust, mÀrkimiseks eraldi lehte vÔi kÔiki lehti, mida saidilt leida.
-s ja -x â parameetrid, mis lisavad vĂ”i eemaldavad konkreetsed URL-aadressid. Need parameetrid on kasulikud, kui on vaja lisada vĂ”i eemaldada konkreetne URL skaneerimisprotsessist.
âskip â mÀÀratud parameeter selle vĂ”tmega skaneeritakse, kuid ei rĂŒnnata. Kasulik, kui on mingeid ohtlikke parameetreid, mida oleks parem skaneerimisest vĂ€lja jĂ€tta.
âverify-ssl â sertifikaadi kontrollimise lubamine vĂ”i keelamine.
Wapiti skanner on modulaarne. K however, for running specific modules among those that are connected automatically when the scanner operates, the key -m should be used and the desired modules listed with a comma. If the key is not used, all modules will work by default. In the simplest variant, this will look as follows:
# wapiti -u http://sites.vulns.pentestit.ru/ -m sql,xss,xxeSee nĂ€idis tĂ€hendab, et me kasutame sihtmĂ€rkide skaneerimisel ainult SQL, XSS ja XXE mooduleid. Lisaks on vĂ”imalik filtreerida moodulite tööd sĂ”ltuvalt vajalikust meetodist. NĂ€iteks -m âxss: get, blindsql: post, xxe: postâ. Sellisel juhul rakendatakse moodulit xss GET meetodiga edastatavatele pĂ€ringutele, samas kui moodul blibdsql rakendatakse POST pĂ€ringutele jne. Ăhtlasi, kui mĂ”nda moodulit, mis on nimekirjas, ei vajata skaneerimise ajal vĂ”i see töötab vĂ€ga kaua, siis klahvikombinatsiooni Ctrl+C abil saab olemasoleva mooduli kasutamise vahele jĂ€tta, valides vastava punkti interaktiivses menĂŒĂŒs.
Wapiti toetab pĂ€ringute edastamist lĂ€bi proxy-serveri vĂ”tmega -p ja autentimist sihtmĂ€rgis oleva veebisaidi kaudu parameetriga -a. Samuti on vĂ”imalik mÀÀrata autentimise tĂŒĂŒp: BasiŃ, Digest, Kerberos ja NTLM. Kahte viimast vĂ”ib olla vaja tĂ€iendavate moodulite installimiseks. Lisaks on vĂ”imalik pĂ€ringutesse sisestada mis tahes pĂ€iseid (sealhulgas suvaline User-Agent) ja palju muud.
Autentimise kasutamiseks saab kasutada tööriista wapiti-getcookie. Selle abil koostame kĂŒpsised, mida Wapiti kasutab skaneerimisel. Koostamine kĂŒpsised teostatakse kĂ€suga:
# wapiti-getcookie -u http://sites.vulns.pentestit.ru/login.php -c cookie.jsonTöötamise kĂ€igus interaktiivses reĆŸiimis vastame kĂŒsimustele ja nĂ€itame vajalikku teavet, nagu: kasutajanimi, parool ja muu:

VÀljundina saame JSON formaadis faili. Teine vÔimalus on lisada kogu vajalik teave parameetri kaudu -d:
# wapiti-getcookie - http://sites.vulns.pentestit.ru/login.php -c cookie.json -d "username=admin&password=admin&enter=submit"Tulemus on sarnane:

Peamise funktsionaalsuse vaatamisel oli meie jaoks veebirakenduse testimiseks lÔpppÀring:
# 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 vorming ja tee salvestamiseks;
-m â kĂ”igi moodulite ĂŒhendamine â ei soovitata, kuna see mĂ”jutab testimise aega ja aruande suurust;
âcolor â toob esile leitud haavatavused vastavalt nende tĂ”sidusele Wapiti enda versiooni jĂ€rgi;
-c â faili kasutamine kĂŒpsised, mis on genereeritud kasutades wapiti-getcookie;
âscope â sihtmĂ€rgi valik rĂŒnnakuks. Valides variandi kaust skaneeritakse ja rĂŒnnatakse iga URL, alustades baasist. Baasu URL peab olema kaldkriipsuga (ilma failinime);
âflush-session â vĂ”imaldab teostada uuesti skaneerimist, kus eelnevaid tulemusi ei arvestata;
-A â kohandatud User-Agent;
-p â proxy serveri aadress, kui seda on vaja.
Veidi raportist
Skaneerimise tulemused esitatakse pÔhjaliku raportina kÔigist avastatud haavatavustest HTML-lehe formaadis, mis on arusaadavas ja mugavas vormingus. Raportis on mÀrgitud kategooriad ja avastatud haavatavuste arv, nende kirjeldus, pÀringud, kÀsud curl ja soovitused nende sulgemiseks. Navigatsiooni mugavuse huvides lisatakse kategooriate pealkirjadele link, millele klikkides saab liikuda sellele:

Oluline puudus raportis on, et selles puudub veebirakenduse kaart, ilma milleta ei ole selge, kas kĂ”ik aadressid ja parameetrid on analĂŒĂŒsitud. Samuti on olemas valehĂ€irete tĂ”enĂ€osus. Meie juhul on raportis kirjas "varufailid" ja "vĂ”imalikult ohtlikud failid". Nende arv ei vasta tegelikkusele, kuna selliseid faile serveris ei olnud:

VĂ”ib-olla ajaga parandavad vale töömodulid olukorda. Samuti on raporti puuduseks avastatud haavatavuste vĂ€rvumine (sĂ”ltuvalt nende kriitilisusest) vĂ”i vĂ€hemalt nende kategoriseerimise puudumine. Ainus, kuidas me saame kaudselt mĂ”ista avastatud haavatavuse kriitilisust, on kasutada parameetrit âcolor skaneerimise kĂ€igus ja siis vĂ€rvitakse leitud haavatavused erinevates vĂ€rvides:

Kuid raportis selline vÀrvimine ei ole ette nÀhtud.
Haavatavused
SQLi
Skanner suutis osaliselt avastada SQLi. SQL-haavatavuste otsimisel lehtedel, kus autentimine ei ole vajalik, mingeid probleeme ei esine:

Ei Ă”nnestunud leida haavatavust lehtedel, mis on ligipÀÀsetavad ainult pĂ€rast autentimist, isegi kasutades kehtivaid kĂŒpsised, kuna pĂ€rast edukat autentimist tĂ”enĂ€oliselt toimub "seansi lĂ”petamine" ja kĂŒpsised muutuvad kehtetuks. Kui deautentimise funktsioon oleks teostatud eraldi skripti kaudu, mis vastutab selle protseduuri töötlemise eest, oleks seda saanud tĂ€ielikult vĂ€listada parameetriga -x, takistades seelĂ€bi selle toimimist. Vastasel juhul ei Ă”nnestu selle töötlemist vĂ€listada. See ei ole konkreetse moduuli probleem, vaid kogu tööriista probleem, kuid selle nĂŒansi tĂ”ttu ei Ă”nnestunud avastada mitmeid sĂŒstimist suletud ressursi osas.
XSS
MÀÀratud ĂŒlesandega skanner sai suurepĂ€raselt hakkama ja leidis kĂ”ik ettevalmistatud haavatavused:

LFI/RFI
Skanner leidis kÔik vaktsineeritud haavatavused:

Ăldiselt, vaatamata valehĂ€iretele ja vaktsineerimise vahelejĂ€tmisele, nĂ€itab Wapiti kui tasuta tööriist ĂŒsna hĂ€id tulemusi. Igal juhul tuleb tunnistada, et skanner on ĂŒsna vĂ”imas, paindlik ja multifunktsionaalne ning mis kĂ”ige tĂ€htsam â tasuta, seega on see Ă”igustatud kasutamiseks, aidates administraatoreid ja arendajaid saada pĂ”hiteavet veebirakenduse turvalisuse seisundi kohta.
PĂŒsige terved ja kaitstud!
Allikas: habr.com
