Wapiti - pagsuri sa isang site para sa mga kahinaan sa sarili nitong

Wapiti - pagsuri sa isang site para sa mga kahinaan sa sarili nitong
Sa huli Artikulo napag-usapan namin Nemesida WAF Libre - isang libreng tool para sa pagprotekta sa mga website at API mula sa mga pag-atake ng hacker, at sa isang ito ay nagpasya kaming suriin ang isang sikat na vulnerability scanner Elk.

Ang pag-scan sa isang website para sa mga kahinaan ay isang kinakailangang panukala, na, kasama ng pagsusuri ng source code, ay nagbibigay-daan sa iyong masuri ang antas ng seguridad nito laban sa mga banta ng kompromiso. Maaari kang mag-scan ng mapagkukunan sa web gamit ang mga espesyal na tool.

Ang Nikto, W3af (nakasulat sa Python 2.7, na hindi na sinusuportahan) o Arachni (hindi na suportado mula noong Pebrero) ay ang pinakasikat na mga solusyon na ipinakita sa libreng segment. Siyempre, may iba pa, halimbawa, Wapiti, na napagpasyahan naming pagtuunan ng pansin.

Gumagana ang Wapiti sa mga sumusunod na uri ng mga kahinaan:

  • pagpapalawak ng file (lokal at remote, fopen, readfile);
  • mga iniksyon (PHP / JSP / ASP / SQL injection at XPath injection);
  • XSS (Cross Site Scripting) (reflective at persistent);
  • pagtuklas at pagpapatupad ng mga utos (eval(), system(), passtru());
  • CRLF injections (HTTP response splitting, session fixation);
  • XXE (XML external entity) na pag-embed;
  • SSRF (Server Side Request Forgery);
  • paggamit ng mga kilalang potensyal na mapanganib na mga file (salamat sa Nikto database);
  • mahinang .htaccess na mga pagsasaayos na maaaring i-bypass;
  • ang pagkakaroon ng mga backup na file na nagpapakita ng kumpidensyal na impormasyon (pagsisiwalat ng source code);
  • Shellshock;
  • bukas na mga pag-redirect;
  • hindi karaniwang mga pamamaraan ng HTTP na maaaring malutas (PUT).

Mga Tampok:

  • HTTP, HTTPS at SOCKS5 proxy na suporta;
  • pagpapatunay gamit ang ilang paraan: Basic, Digest, Kerberos o NTLM;
  • ang kakayahang limitahan ang lugar ng pag-scan (domain, folder, pahina, URL);
  • awtomatikong pag-alis ng isa sa mga parameter sa URL;
  • maraming pag-iingat laban sa walang katapusang mga loop ng pag-scan (halimbawa: kung, nililimitahan ang mga halaga para sa isang parameter);
  • ang kakayahang magtakda ng priyoridad para sa pagsusuri ng mga URL (kahit na wala sila sa lugar ng pag-scan);
  • kakayahang ibukod ang ilang URL mula sa pag-scan at pag-atake (halimbawa: URL logout);
  • mag-import ng cookies (kunin ang mga ito gamit ang tool na wapiti-getcookie);
  • kakayahang i-activate/i-deactivate ang pag-verify ng SSL certificate;
  • ang kakayahang kunin ang mga URL mula sa JavaScript (isang napakasimpleng JS interpreter);
  • pakikipag-ugnayan sa HTML5;
  • ilang mga opsyon para sa pamamahala ng gawi at paghihigpit ng crawler;
  • pagtatakda ng maximum na oras para sa proseso ng pag-scan;
  • pagdaragdag ng ilang custom na HTTP header o pag-set up ng custom na User-Agent.

Mga karagdagang tampok:

  • paggawa ng mga ulat sa kahinaan sa iba't ibang format (HTML, XML, JSON, TXT);
  • paghinto at pagpapatuloy ng pag-scan o pag-atake (mekanismo ng session gamit ang mga database ng SQLite3);
  • backlighting sa terminal upang i-highlight ang mga kahinaan;
  • iba't ibang antas ng pag-log;
  • Isang mabilis at madaling paraan upang i-activate/i-deactivate ang mga module ng pag-atake.

Instalasyon

Maaaring i-install ang kasalukuyang bersyon ng Wapiti sa 2 paraan:

  • i-download ang pinagmulan mula sa opisyal сайта at patakbuhin ang script ng pag-install, na dati nang na-install ang Python3;
  • gamit ang pip3 install wapiti3 command.

Pagkatapos nito, handa nang umalis si Wapiti.

Paggawa gamit ang tool

Upang ipakita ang gawain ng Wapiti, gagamit kami ng isang espesyal na inihandang stand sites.vulns.pentestit.ru (panloob na mapagkukunan), na naglalaman ng iba't ibang mga kahinaan (Injection, XSS, LFI/RFI) at iba pang mga pagkukulang ng mga web application.

Ang impormasyon ay ibinigay para sa mga layuning pang-impormasyon lamang. Huwag labagin ang batas!

Pangunahing utos para ilunsad ang scanner:

# wapiti -u <target> <options>

Kasabay nito, mayroong medyo detalyadong tulong sa isang malaking bilang ng mga pagpipilian sa paglulunsad, halimbawa:

--saklaw - lugar ng aplikasyon
Kung tutukuyin mo ang parameter ng saklaw kasama ang URL ng pag-crawl, maaari mong isaayos ang lugar ng pag-crawl ng site sa pamamagitan ng pagtukoy sa parehong pahina at lahat ng mga pahina na makikita sa site.

-s ΠΈ -x β€” mga opsyon para magdagdag o mag-alis ng mga partikular na URL. Ang mga opsyon na ito ay kapaki-pakinabang kapag kailangan mong magdagdag o mag-alis ng isang partikular na URL sa panahon ng proseso ng pag-crawl.

--laktawan β€” ang tinukoy na parameter na may key na ito ay mai-scan, ngunit hindi aatakehin. Kapaki-pakinabang kung mayroong anumang mapanganib na mga parameter na pinakamahusay na hindi kasama sa panahon ng pag-scan.

--verify-ssl β€” paganahin o huwag paganahin ang pag-verify ng sertipiko.
Ang Wapiti scanner ay modular. Gayunpaman, upang ilunsad ang mga partikular na module, kabilang ang mga awtomatikong nakakonekta habang tumatakbo ang scanner, kailangan mong gamitin ang -m switch at ilista ang mga kailangan mo, na pinaghihiwalay ng mga kuwit. Kung ang susi ay hindi ginagamit, ang lahat ng mga module ay gagana bilang default. Sa pinakasimpleng bersyon ito ay magiging ganito:

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

Ang halimbawa ng paggamit na ito ay nangangahulugan na gagamitin lang namin ang mga module ng SQL, XSS at XXE kapag ini-scan ang target. Bilang karagdagan, maaari mong i-filter ang pagpapatakbo ng mga module depende sa nais na paraan. Halimbawa -m "xss: kumuha, blindsql: post, xxe: post". Sa kasong ito, ang module xss ay ilalapat sa mga kahilingang ipinadala gamit ang GET method, at ang module blibdsql - sa mga kahilingan sa POST, atbp. Sa pamamagitan ng paraan, kung ang ilang module na kasama sa listahan ay hindi kailangan sa panahon ng pag-scan o tumatagal ng napakatagal, pagkatapos ay sa pamamagitan ng pagpindot sa kumbinasyon ng Ctrl+C maaari mong laktawan ang paggamit ng kasalukuyang module sa pamamagitan ng pagpili ng kaukulang item sa interactive na menu.

Sinusuportahan ng Wapiti ang pagpasa ng mga kahilingan sa pamamagitan ng proxy gamit ang isang key -p at pagpapatunay sa target na site sa pamamagitan ng parameter -a. Maaari mo ring tukuyin ang uri ng pagpapatunay: Basic, Digest, Kerberos ΠΈ NTLM. Ang huling dalawa ay maaaring mangailangan ng pag-install ng mga karagdagang module. Bilang karagdagan, maaari kang magpasok ng anumang mga header sa mga kahilingan (kabilang ang arbitrary Ahente ng Gumagamit) at marami pang iba.

Upang gamitin ang pagpapatunay maaari mong gamitin ang tool wapiti-getcookie. Sa tulong nito nabuo tayo cookie, na gagamitin ni Wapiti kapag nag-scan. Pagbubuo cookie tapos na sa utos:

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

Habang nagtatrabaho nang interactive, sinasagot namin ang mga tanong at ipinapahiwatig ang kinakailangang impormasyon tulad ng pag-login, password, atbp.:

Wapiti - pagsuri sa isang site para sa mga kahinaan sa sarili nitong

Ang output ay isang file sa JSON format. Ang isa pang pagpipilian ay idagdag ang lahat ng kinakailangang impormasyon sa pamamagitan ng parameter -d:

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

Magiging katulad ang resulta:

Wapiti - pagsuri sa isang site para sa mga kahinaan sa sarili nitong

Kapag isinasaalang-alang ang pangunahing pag-andar ng scanner, ang huling kahilingan para sa pagsubok sa web application sa aming kaso ay:

# 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

kung saan bukod sa iba pang mga parameter:

-f ΠΈ -o β€” format at landas para sa pag-save ng ulat;

-m β€” hindi inirerekomenda ang pagkonekta sa lahat ng module, dahil makakaapekto sa oras ng pagsubok at laki ng ulat;

--kulay β€” i-highlight ang mga nakitang kahinaan depende sa kanilang pagiging kritikal ayon kay Wapiti mismo;

-c - gamit ang isang file na may cookie, nabuo gamit ang wapiti-getcookie;

--saklaw β€” pagpili ng target para sa pag-atake. Pagpili ng opsyon folder Iko-crawl at aatakehin ang bawat URL, simula sa base. Ang base URL ay dapat may forward slash (walang filename);

--flush-session β€” nagbibigay-daan para sa paulit-ulit na pag-scan, kung saan ang mga nakaraang resulta ay hindi isasaalang-alang;

-A - sariling Ahente ng Gumagamit;

-p β€” proxy server address, kung kinakailangan.

Medyo tungkol sa ulat

Ang resulta ng pag-scan ay ipinakita sa anyo ng isang detalyadong ulat sa lahat ng nahanap na mga kahinaan sa format ng HTML na pahina, sa isang malinaw at madaling basahin na form. Ang ulat ay magsasaad ng mga kategorya at bilang ng mga kahinaan na natagpuan, ang kanilang mga paglalarawan, mga kahilingan, mga utos para sa kulutan at mga tip sa kung paano isara ang mga ito. Para sa kadalian ng pag-navigate, isang link ay idaragdag sa mga pangalan ng kategorya, pag-click kung saan maaari kang pumunta dito:

Wapiti - pagsuri sa isang site para sa mga kahinaan sa sarili nitong

Ang isang makabuluhang kawalan ng ulat ay ang kawalan ng isang mapa ng web application tulad nito, kung wala ito ay hindi magiging malinaw kung ang lahat ng mga address at parameter ay nasuri na. Mayroon ding posibilidad ng mga maling positibo. Sa aming kaso, kasama sa ulat ang "mga backup na file" at "mga potensyal na mapanganib na mga file." Ang kanilang numero ay hindi tumutugma sa katotohanan, dahil walang ganoong mga file sa server:

Wapiti - pagsuri sa isang site para sa mga kahinaan sa sarili nitong

Marahil ay maaayos ang mga hindi gumaganang module sa paglipas ng panahon. Ang isa pang disbentaha ng ulat ay ang kakulangan ng pangkulay ng mga nakitang kahinaan (depende sa kanilang pagiging kritikal), o hindi bababa sa paghahati sa kanila sa mga kategorya. Ang tanging paraan na hindi natin direktang mauunawaan ang pagiging kritikal ng nahanap na kahinaan ay ang paggamit ng parameter --kulay sa panahon ng pag-scan, at pagkatapos ay makulayan ang mga kahinaan na makikita sa iba't ibang kulay:

Wapiti - pagsuri sa isang site para sa mga kahinaan sa sarili nitong

Ngunit ang ulat mismo ay hindi nagbibigay ng gayong pangkulay.

Mga kahinaan

SQLi

Ang scanner ay bahagyang nakayanan ang paghahanap sa SQLi. Kapag naghahanap ng mga kahinaan ng SQL sa mga pahina kung saan hindi kinakailangan ang pagpapatotoo, walang mga problemang lumitaw:

Wapiti - pagsuri sa isang site para sa mga kahinaan sa sarili nitong

Hindi posibleng makahanap ng kahinaan sa mga page na maa-access lamang pagkatapos ng pagpapatunay, kahit na gamit ang wastong cookie, dahil malamang pagkatapos ng matagumpay na pagpapatotoo, ang kanilang session ay "ma-log out" at cookie magiging invalid. Kung ang function ng deauthorization ay ipinatupad bilang isang hiwalay na script na responsable para sa pagproseso ng pamamaraang ito, posible na ganap na ibukod ito sa pamamagitan ng parameter na -x, at sa gayon ay mapipigilan itong mag-trigger. Kung hindi, hindi posibleng ibukod ang pagproseso nito. Hindi ito problema sa isang tiyak na module, ngunit sa tool sa kabuuan, ngunit dahil sa nuance na ito, hindi posible na makita ang ilang mga iniksyon sa isang saradong lugar ng mapagkukunan.

XSS

Ang scanner ay ganap na nakayanan ang ibinigay na gawain at natagpuan ang lahat ng mga inihandang kahinaan:

Wapiti - pagsuri sa isang site para sa mga kahinaan sa sarili nitong

LFI/RFI

Nakita ng scanner ang lahat ng pinagbabatayan na mga kahinaan:

Wapiti - pagsuri sa isang site para sa mga kahinaan sa sarili nitong

Sa pangkalahatan, sa kabila ng mga maling positibo at nawawalang mga kahinaan, ang Wapiti, bilang isang libreng tool, ay nagpapakita ng magandang resulta ng pagganap. Sa anumang kaso, ito ay nagkakahalaga ng pagkilala na ang scanner ay medyo malakas, nababaluktot at multifunctional, at higit sa lahat, ito ay libre, kaya ito ay may karapatang gamitin sa pagtulong sa mga administrator at developer na makakuha ng pangunahing impormasyon tungkol sa katayuan ng seguridad ng isang web aplikasyon.

Manatiling malusog at protektado!

Pinagmulan: www.habr.com

Magdagdag ng komento