Wapiti - самостојно проверува страница за пропусти

Wapiti - самостојно проверува страница за пропусти
Во последниот Член разговаравме за Немесида WAF бесплатно - бесплатна алатка за заштита на веб-локации и API од хакерски напади, а во оваа решивме да разгледаме популарен скенер за ранливост Вапити.

Скенирањето веб-локација за пропусти е неопходна мерка, која, заедно со анализата на изворниот код, ви овозможува да го процените нивото на нејзината безбедност од закани за компромис. Можете да скенирате веб-ресурс користејќи специјализирани алатки.

Nikto, W3af (напишан во Python 2.7, кој повеќе не е поддржан) или Arachni (повеќе не е поддржан од февруари) се најпопуларните решенија претставени во бесплатниот сегмент. Се разбира, има и други, на пример, Вапити, на кои решивме да се фокусираме.

Wapiti работи со следниве видови пропусти:

  • проширување на датотеката (локално и далечинско, фопен, читање);
  • инјекции (PHP / JSP / ASP / SQL инјекција и XPath инјекција);
  • XSS (Cross Site Scripting) (рефлексивно и упорно);
  • откривање и извршување на команди (eval(), system(), passtru());
  • CRLF инјекции (разделување на одговорот на HTTP, фиксација на сесијата);
  • Вградување на XXE (XML надворешен ентитет);
  • SSRF (Server Side Request Forgery);
  • употреба на познати потенцијално опасни датотеки (благодарение на базата на податоци Никто);
  • слаби .htaccess конфигурации кои може да се заобиколат;
  • присуство на резервни датотеки што откриваат доверливи информации (откривање на изворниот код);
  • Шелшок;
  • отворени пренасочувања;
  • нестандардни HTTP методи кои можат да се решат (PUT).

Можности:

  • Поддршка за прокси за HTTP, HTTPS и SOCKS5;
  • автентикација користејќи неколку методи: Basic, Digest, Kerberos или NTLM;
  • способноста да се ограничи областа за скенирање (домен, папка, страница, URL);
  • автоматско отстранување на еден од параметрите во URL-то;
  • повеќекратни мерки на претпазливост против бескрајни јамки за скенирање (пример: ifor, ограничувачки вредности за параметар);
  • способноста да се постави приоритет за испитување на URL-адреси (дури и ако тие не се во областа за скенирање);
  • способност да се исклучат некои URL-адреси од скенирање и напади (на пример: URL-одјавување);
  • увезете колачиња (добијте ги користејќи ја алатката wapiti-getcookie);
  • можност за активирање/деактивирање на верификација на SSL сертификатот;
  • способноста да се извлечат URL-адреси од JavaScript (многу едноставен JS преведувач);
  • интеракција со HTML5;
  • неколку опции за управување со однесувањето и ограничувањата на роботот;
  • поставување на максимално време за процесот на скенирање;
  • додавање на некои прилагодени HTTP заглавија или поставување приспособен кориснички агент.

Дополнителни функции:

  • креирање извештаи за ранливост во различни формати (HTML, XML, JSON, TXT);
  • паузирање и продолжување на скенирање или напад (механизам за сесија користејќи бази на податоци SQLite3);
  • позадинско осветлување во терминалот за да се истакнат пропустите;
  • различни нивоа на сеча;
  • Брз и лесен начин за активирање/деактивирање на модулите за напад.

Инсталација

Тековната верзија на Wapiti може да се инсталира на 2 начини:

  • преземете го изворот од официјалниот страница и стартувајте ја скриптата за инсталација, откако претходно сте го инсталирале Python3;
  • користејќи ја командата pip3 install wapiti3.

После ова, Вапити ќе биде подготвен да тргне.

Работа со алатката

За да ја покажеме работата на Wapiti, ќе користиме специјално подготвен штанд sites.vulns.pentestit.ru (внатрешен ресурс), кој содржи различни пропусти (Injection, XSS, LFI/RFI) и други недостатоци на веб-апликациите.

Информациите се дадени само за информативни цели. Не го крши законот!

Основна команда за стартување на скенерот:

# wapiti -u <target> <options>

Во исто време, постои доста детална помош со огромен број опции за лансирање, на пример:

--обем - област на апликација
Ако го наведете параметарот на опсегот заедно со URL-то за индексирање, можете да ја прилагодите областа за индексирање на страницата со одредување и една страница и сите страници што може да се најдат на страницата.

-s и -x — опции за додавање или отстранување одредени URL-адреси. Овие опции се корисни кога треба да додадете или отстраните одредена URL адреса за време на процесот на индексирање.

-- прескокнете — наведениот параметар со овој клуч ќе се скенира, но нема да биде нападнат. Корисно ако има некои опасни параметри кои најдобро се исклучуваат за време на скенирањето.

--провери-ссл — вклучи или оневозможи верификација на сертификатот.
Скенерот Wapiti е модуларен. Меѓутоа, за да стартувате одредени модули, вклучувајќи ги и оние што се автоматски поврзани додека работи скенерот, треба да го користите прекинувачот -m и да ги наведете оние што ви требаат, одделени со запирки. Ако клучот не се користи, тогаш сите модули ќе работат стандардно. Во наједноставната верзија ќе изгледа вака:

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

Овој пример за употреба значи дека ќе ги користиме само модулите SQL, XSS и XXE при скенирање на целта. Покрај тоа, можете да ја филтрирате работата на модулите во зависност од саканиот метод. На пример -m „xss: get, blindsql: post, xxe: post“. Во овој случај, модулот xss ќе се однесува на барањата испратени со методот GET и модулот blibdsql — за ПОСТАВУВАЊЕ на барања, итн. Патем, ако некој модул што беше вклучен во списокот не беше потребен за време на скенирањето или трае многу долго, тогаш со притискање на комбинацијата Ctrl + C можете да го прескокнете користењето на тековниот модул со избирање на соодветната ставка во интерактивното мени.

Wapiti поддржува пренесување барања преку прокси со помош на клуч -p и автентикација на целната локација преку параметарот -a. Можете исто така да го наведете типот на автентикација: Основни, Вари, Керберос и НТЛМ. Последните два може да бараат инсталација на дополнителни модули. Покрај тоа, можете да вметнете какви било заглавија во барањата (вклучувајќи произволни Корисник агент) и уште повеќе.

За да користите автентикација, можете да ја користите алатката wapiti-getcookie. Со негова помош формираме колаче, што Wapiti ќе го користи при скенирање. Формирање колаче направено со командата:

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

Додека работиме интерактивно, одговараме на прашања и ги наведуваме потребните информации како што се најава, лозинка и сл.:

Wapiti - самостојно проверува страница за пропусти

Излезот е датотека во JSON формат. Друга опција е да ги додадете сите потребни информации преку параметарот -d:

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

Резултатот ќе биде сличен:

Wapiti - самостојно проверува страница за пропусти

Кога се разгледува главната функционалност на скенерот, последното барање за тестирање на веб-апликацијата во нашиот случај беше:

# 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

каде меѓу другите параметри:

-f и -o — формат и патека за зачувување на извештајот;

-m — не се препорачува поврзување на сите модули, бидејќи ќе влијае на времето на тестирање и големината на извештајот;

--боја — нагласи пронајдените пропусти во зависност од нивната критичност според самиот Wapiti;

-c - користење на датотека со колаче, генерирана со користење wapiti-getcookie;

--обем — избор на цел за напад. Избор на опција папка Секоја URL адреса ќе биде индексирана и нападната, почнувајќи од основната. Основната URL-адреса мора да има коса црта напред (без име на датотека);

-- флеш-сесија — овозможува повторено скенирање, при што нема да се земат предвид претходните резултати;

-A - свој Корисник агент;

-p — Адреса на прокси-сервер, доколку е потребно.

Малку за извештајот

Резултатот од скенирањето е претставен во форма на детален извештај за сите пронајдени пропусти во формат на HTML страница, во јасна и лесно читлива форма. Извештајот ќе ги означи категориите и бројот на пронајдени пропусти, нивните описи, барања, команди навивам и совети како да ги затворите. За олеснување на навигацијата, ќе се додаде врска до имињата на категориите, со кликнување на која можете да отидете до неа:

Wapiti - самостојно проверува страница за пропусти

Значаен недостаток на извештајот е отсуството на мапа на веб-апликација како таква, без која нема да биде јасно дали сите адреси и параметри се анализирани. Исто така, постои можност за лажни позитиви. Во нашиот случај, извештајот вклучува „резервни датотеки“ и „потенцијално опасни датотеки“. Нивниот број не одговара на реалноста, бидејќи немаше такви датотеки на серверот:

Wapiti - самостојно проверува страница за пропусти

Можеби неправилно работните модули ќе се поправат со текот на времето. Друг недостаток на извештајот е необојувањето на пронајдените пропусти (во зависност од нивната критичност), или барем нивното делење во категории. Единствениот начин на кој можеме индиректно да ја разбереме критичноста на пронајдената ранливост е да го користиме параметарот --боја за време на скенирањето, а потоа пронајдените пропусти ќе бидат обоени во различни бои:

Wapiti - самостојно проверува страница за пропусти

Но, самиот извештај не дава таква боја.

Ранливости

SQLi

Скенерот делумно се справи со пребарувањето SQLi. Кога пребарувате за ранливости на SQL на страници каде што не е потребна автентикација, не се појавуваат проблеми:

Wapiti - самостојно проверува страница за пропусти

Не беше можно да се најде ранливост на страниците достапни само по автентикација, дури и со користење на валидни колаче, бидејќи најверојатно по успешната автентикација, нивната сесија ќе биде „одјавена“ и колаче ќе стане неважечки. Доколку функцијата за одобрување би била имплементирана како посебна скрипта одговорна за обработка на оваа постапка, тогаш би било можно целосно да се исклучи преку параметарот -x и со тоа да се спречи неговото активирање. Во спротивно, нема да може да се исклучи неговата обработка. Ова не е проблем со одреден модул, туку со алатката како целина, но поради оваа нијанса, не беше можно да се детектираат неколку инјекции во затворена област со ресурси.

XSS

Скенерот одлично се справи со дадената задача и ги пронајде сите подготвени пропусти:

Wapiti - самостојно проверува страница за пропусти

LFI/RFI

Скенерот ги пронајде сите основни пропусти:

Wapiti - самостојно проверува страница за пропусти

Во принцип, и покрај лажните позитиви и пропустите што недостасуваат, Wapiti, како бесплатна алатка, покажува прилично добри резултати во изведбата. Во секој случај, вреди да се препознае дека скенерот е доста моќен, флексибилен и мултифункционален, и што е најважно, тој е бесплатен, така што има право да се користи за да им помогне на администраторите и програмерите да добијат основни информации за безбедносниот статус на веб. апликација.

Останете здрави и заштитени!

Извор: www.habr.com

Додадете коментар