Wapiti – pats tikrina, ar svetainėje nėra spragų

Wapiti – pats tikrina, ar svetainėje nėra spragų
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());
  • CRLF injekcijos (HTTP atsako padalijimas, seanso fiksavimas);
  • XXE (XML išorinis subjektas) įterpimas;
  • SSRF (Server Side Request Forgery);
  • žinomų potencialiai pavojingų failų naudojimas (dėka Nikto duomenų bazės);
  • silpnos .htaccess konfigūracijos, kurias galima apeiti;
  • atsarginių failų, atskleidžiančių konfidencialią informaciją, buvimas (šaltinio kodo atskleidimas);
  • Shellshock;
  • atidaryti peradresavimus;
  • nestandartiniai HTTP metodai, kuriuos galima išspręsti (PUT).

Savybės:

  • HTTP, HTTPS ir SOCKS5 tarpinio serverio palaikymas;
  • autentifikavimas naudojant kelis metodus: Basic, Digest, Kerberos arba NTLM;
  • galimybė apriboti nuskaitymo sritį (domeną, aplanką, puslapį, URL);
  • automatinis vieno iš URL parametrų pašalinimas;
  • kelios atsargumo priemonės nuo nesibaigiančių nuskaitymo kilpų (pavyzdys: ifor, ribinės parametro vertės);
  • galimybė nustatyti URL tyrimo prioritetą (net jei jie nėra nuskaitymo srityje);
  • galimybė neįtraukti kai kurių URL nuo nuskaitymo ir atakų (pvz.: URL atsijungimas);
  • importuoti slapukus (gauti juos naudojant wapiti-getcookie įrankį);
  • galimybė įjungti/išjungti SSL sertifikato tikrinimą;
  • galimybė išgauti URL adresus iš JavaScript (labai paprastas JS interpretatorius);
  • sąveika su HTML5;
  • keletas tikrinimo programos elgesio ir apribojimų valdymo parinkčių;
  • nustatyti maksimalų nuskaitymo proceso laiką;
  • pridėti kai kurias pasirinktines HTTP antraštes arba nustatyti pasirinktinį vartotojo agentą.

Papildomos savybės:

  • pažeidžiamumo ataskaitų kūrimas įvairiais formatais (HTML, XML, JSON, TXT);
  • nuskaitymo ar atakos pristabdymas ir atnaujinimas (seanso mechanizmas naudojant SQLite3 duomenų bazes);
  • apšvietimas terminale pažeidžiamoms vietoms pabrėžti;
  • skirtingi medienos ruošos lygiai;
  • 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:

# wapiti -u http://sites.vulns.pentestit.ru/ -m sql,xss,xxe

Š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:

# wapiti-getcookie -u http://sites.vulns.pentestit.ru/login.php -c cookie.json

Dirbdami interaktyviai atsakome į klausimus ir nurodome reikiamą informaciją kaip prisijungimo vardą, slaptažodį ir pan.:

Wapiti – pats tikrina, ar svetainėje nėra spragų

Išvestis yra JSON formato failas. Kita galimybė yra pridėti visą reikiamą informaciją per parametrą -d:

# wapiti-getcookie - http://sites.vulns.pentestit.ru/login.php -c cookie.json -d "username=admin&password=admin&enter=submit"

Rezultatas bus panašus:

Wapiti – pats tikrina, ar svetainėje nėra spragų

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ą:

Wapiti – pats tikrina, ar svetainėje nėra spragų

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:

Wapiti – pats tikrina, ar svetainėje nėra spragų

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:

Wapiti – pats tikrina, ar svetainėje nėra spragų

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:

Wapiti – pats tikrina, ar svetainėje nėra spragų

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:

Wapiti – pats tikrina, ar svetainėje nėra spragų

LFI/RFI

Skaitytuvas aptiko visas pagrindines spragas:

Wapiti – pats tikrina, ar svetainėje nėra spragų

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.

Likite sveiki ir apsaugoti!

Šaltinis: www.habr.com

Добавить комментарий