Paskutiniame straipsnis kalbėjome apie Nemesida WAF nemokamai - nemokamas įrankis svetainėms ir API apsaugoti nuo įsilaužėlių atakų, o šiame nusprendėme peržiūrėti populiarų pažeidžiamumo skaitytuvą Briedis.
Svetainės nuskaitymas, ar nėra pažeidžiamumų, yra būtina priemonė, kuri kartu su šaltinio kodo analize leidžia įvertinti jos saugumo lygį nuo kompromitavimo grėsmių. Galite nuskaityti žiniatinklio išteklius naudodami specializuotus įrankius.
Nikto, W3af (parašyta Python 2.7, kuri nebepalaikoma) arba Arachni (nebepalaikoma nuo vasario mėnesio) yra populiariausi sprendimai, pateikiami nemokamame segmente. Žinoma, yra ir kitų, pavyzdžiui, Wapiti, į kurią nusprendėme sutelkti dėmesį.
Wapiti veikia su šių tipų pažeidžiamumu:
failų išplėtimas (vietinis ir nuotolinis, fopen, readfile);
injekcijos (PHP / JSP / ASP / SQL injekcija ir XPath injekcija);
XSS (Cross Site Scripting) (atspindintis ir nuolatinis);
komandų aptikimas ir vykdymas (eval(), system(), passtru());
Greitas ir paprastas būdas suaktyvinti / išjungti atakos modulius.
Montavimas
Dabartinę Wapiti versiją galima įdiegti dviem būdais:
Atsisiųskite šaltinį iš oficialaus svetainė ir paleiskite diegimo scenarijų, prieš tai įdiegę Python3;
naudojant pip3 install wapiti3 komandą.
Po to Wapiti bus pasiruošęs eiti.
Darbas su įrankiu
Wapiti darbo demonstravimui panaudosime specialiai paruoštą stendą sites.vulns.pentestit.ru (vidinis resursas), kuriame yra įvairių pažeidžiamumų (Injection, XSS, LFI/RFI) ir kitų interneto programų trūkumų.
Informacija pateikiama tik informaciniais tikslais. Nepažeisk įstatymų!
Pagrindinė komanda skaitytuvui paleisti:
# wapiti -u <target> <options>
Tuo pačiu metu yra gana išsami pagalba su daugybe paleidimo parinkčių, pavyzdžiui:
-- apimtį - taikymo sritis
Jei nurodote apimties parametrą kartu su tikrinimo URL, galite koreguoti svetainės tikrinimo sritį nurodydami ir vieną puslapį, ir visus puslapius, kuriuos galima rasti svetainėje.
-s и -x – parinktys pridėti arba pašalinti konkrečius URL. Šios parinktys naudingos, kai tikrinimo proceso metu reikia pridėti arba pašalinti konkretų URL.
-- praleisti — nurodytas parametras su šiuo raktu bus nuskaitytas, bet nebus užpultas. Naudinga, jei yra kokių nors pavojingų parametrų, kuriuos geriausia neįtraukti nuskaitant.
--verify-ssl — įjungti arba išjungti sertifikato tikrinimą.
Wapiti skaitytuvas yra modulinis. Tačiau norėdami paleisti konkrečius modulius, įskaitant tuos, kurie automatiškai prijungiami, kai veikia skaitytuvas, turite naudoti jungiklį -m ir išvardyti jums reikalingus modulius, atskirtus kableliais. Jei raktas nenaudojamas, visi moduliai veiks pagal numatytuosius nustatymus. Paprasčiausioje versijoje tai atrodys taip:
Šis naudojimo pavyzdys reiškia, kad nuskaitydami tikslą naudosime tik SQL, XSS ir XXE modulius. Be to, galite filtruoti modulių veikimą priklausomai nuo pageidaujamo metodo. Pavyzdžiui -m "xss: gauti, blindsql: paskelbti, xxe: paskelbti". Šiuo atveju modulis xss bus taikomas užklausoms, siunčiamoms naudojant GET metodą, ir modulį blibdsql - į POST užklausas ir kt. Beje, jei koks nors modulis, kuris buvo įtrauktas į sąrašą, buvo nereikalingas nuskaitymo metu arba užtrunka labai ilgai, tada paspaudę Ctrl+C kombinaciją galite praleisti dabartinį modulį, pasirinkdami atitinkamą elementą interaktyviame meniu.
Wapiti palaiko užklausų perdavimą per tarpinį serverį naudojant raktą -p ir autentifikavimas tikslinėje svetainėje naudojant parametrą -a. Taip pat galite nurodyti autentifikavimo tipą: Pagrindinis, Virškinimas, Kerberos и NTLM. Pastariesiems dviem gali tekti įdiegti papildomus modulius. Be to, į užklausas galite įterpti bet kokias antraštes (įskaitant savavališkas User-agent) ir daug daugiau.
Norėdami naudoti autentifikavimą, galite naudoti įrankį wapiti-getcookie. Su jo pagalba formuojame sausainis, kurią Wapiti naudos nuskaitydamas. Formavimas sausainis atlikta su komanda:
Svarstant pagrindines skaitytuvo funkcijas, galutinis prašymas išbandyti žiniatinklio programą mūsų atveju buvo:
# 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
kur, be kitų parametrų:
-f и -o — ataskaitos išsaugojimo formatas ir kelias;
-m — visų modulių jungti nerekomenduojama, nes turės įtakos testavimo laikui ir ataskaitos dydžiui;
--spalva — paryškinti rastus pažeidžiamumus, atsižvelgiant į jų kritiškumą pagal patį Wapiti;
-c - naudojant failą su sausainis, sukurta naudojant wapiti-getcookie;
-- apimtį - pasirenkant puolimo taikinį. Parinkties pasirinkimas folder Kiekvienas URL bus aptiktas ir užpultas, pradedant nuo pagrindinio. Baziniame URL turi būti pasvirasis brūkšnys (be failo pavadinimo);
– praplovimo seansas — leidžia pakartotinai nuskaityti, kai į ankstesnius rezultatus neatsižvelgiama;
-A - savas User-agent;
-p — įgaliotojo serverio adresas, jei reikia.
Šiek tiek apie reportažą
Nuskaitymo rezultatas pateikiamas kaip išsami ataskaita apie visas rastas spragas HTML puslapio formatu, aiškia ir lengvai skaitoma forma. Ataskaitoje bus nurodytos rastų pažeidžiamumų kategorijos ir skaičius, jų aprašymai, užklausos, komandos raitytis ir patarimai, kaip juos uždaryti. Kad būtų lengviau naršyti, prie kategorijų pavadinimų bus pridėta nuoroda, kurią spustelėję pateksite į ją:
Reikšmingas ataskaitos trūkumas yra tai, kad nėra žiniatinklio programų žemėlapio, be kurio nebus aišku, ar visi adresai ir parametrai buvo išanalizuoti. Taip pat yra klaidingų teigiamų rezultatų tikimybė. Mūsų atveju ataskaitoje yra „atsarginės kopijos failai“ ir „potencialiai pavojingi failai“. Jų skaičius neatitinka tikrovės, nes tokių failų serveryje nebuvo:
Galbūt laikui bėgant bus sutvarkyti netinkamai veikiantys moduliai. Kitas ataskaitos trūkumas – rastų pažeidžiamumų nuspalvinimas (priklausomai nuo jų kritiškumo) arba bent jau suskirstymas į kategorijas. Vienintelis būdas netiesiogiai suprasti rasto pažeidžiamumo kritiškumą yra naudoti parametrą --spalva nuskaitymo metu, o tada rastos spragos bus nuspalvintos skirtingomis spalvomis:
Bet pati ataskaita nepateikia tokio kolorito.
Pažeidžiamumas
SQLi
Skaitytuvas iš dalies susidorojo su SQLi paieška. Ieškant SQL spragų puslapiuose, kuriuose autentifikavimas nereikalingas, problemų nekyla:
Nebuvo įmanoma rasti pažeidžiamumo puslapiuose, pasiekiamuose tik po autentifikavimo, net naudojant valid sausainis, nes greičiausiai po sėkmingo autentifikavimo jų sesija bus „atsijungta“ ir sausainis taps negaliojančia. Jei panaikinimo funkcija būtų įgyvendinta kaip atskiras scenarijus, atsakingas už šios procedūros apdorojimą, būtų galima ją visiškai pašalinti naudojant parametrą -x ir taip neleisti suaktyvinti. Priešingu atveju nebus galima atmesti jo apdorojimo. Tai ne konkretaus modulio, o viso įrankio problema, tačiau dėl šio niuanso nebuvo įmanoma aptikti kelių injekcijų uždaroje išteklių srityje.
XSS
Skaitytuvas puikiai susidorojo su duota užduotimi ir rado visas paruoštas spragas:
LFI/RFI
Skaitytuvas aptiko visas pagrindines spragas:
Apskritai, nepaisant klaidingų teigiamų rezultatų ir trūkstamų pažeidžiamumų, Wapiti, kaip nemokama priemonė, rodo gana gerus našumo rezultatus. Bet kuriuo atveju verta pripažinti, kad skaitytuvas yra gana galingas, lankstus ir daugiafunkcis, o svarbiausia – nemokamas, todėl turi teisę būti naudojamas padedant administratoriams ir kūrėjams gauti pagrindinę informaciją apie žiniatinklio saugos būseną. taikymas.