Wapiti - праверка сайта на ўразлівасці сваімі сіламі

Wapiti - праверка сайта на ўразлівасці сваімі сіламі
У мінулым артыкуле мы распавялі аб Nemesida WAF Free - бясплатнай прыладзе для абароны сайтаў і API ад хакерскіх нападаў, а ў гэтай вырашылі зрабіць агляд папулярнага сканара ўразлівасцяў Вапіці.

Сканіраванне сайта на ўразлівасці - неабходная мера, якая, разам з аналізам зыходнага кода, дазваляе ацаніць узровень яго абароненасці ад пагроз кампраметацыі. Выканаць сканіраванне вэб-рэсурсу можна з дапамогай спецыялізаванага інструментара.

Nikto, W3af (напісаны на Python 2.7, падтрымка якога скончылася) або Arachni (з лютага больш не падтрымліваецца) - найболей папулярныя рашэнні, прадстаўленыя ў бясплатным сегменце. Зразумела, ёсць і іншыя, напрыклад, Wapiti, на якім мы вырашылі спынімся.

Wapiti працуе з наступнымі тыпамі ўразлівасцяў:

  • расчыненне файла (лакальныя і выдаленыя, fopen, readfile);
  • ін'екцыі (PHP / JSP / ASP / SQL-ін'екцыі і XPath-ін'екцыі);
  • XSS (міжсайтавы скрыптынг) (адлюстраваная і пастаянная);
  • выяўленне і выкананне каманд (eval(), system(), passtru() );
  • CRLF-ін'екцыі (падзел адказаў HTTP, фіксацыя сеанса);
  • XXE (XML знешняя сутнасць) укараненне;
  • SSRF (падробка запыту на баку сервера);
  • выкарыстанне вядомых патэнцыйна небяспечных файлаў (дзякуючы базе даных Nikto);
  • слабыя канфігурацыі .htaccess, якія можна абыйсці;
  • наяўнасць файлаў рэзервовых копій, якія раскрываюць канфідэнцыйную інфармацыю (раскрыццё зыходнага кода);
  • Shellshock;
  • адкрытыя перанакіраванні;
  • нестандартныя метады HTTP, якія могуць быць дазволены (PUT).

магчымасці:

  • падтрымка проксі HTTP, HTTPS і SOCKS5;
  • аўтэнтыфікацыя з дапамогай некалькіх метадаў: Basic, Digest, Kerberos ці NTLM;
  • магчымасць абмежаваць вобласць сканавання (дамен, тэчка, старонка, URL-адрас);
  • аўтаматычнае выдаленне аднаго з параметраў у URL;
  • множныя меры засцярогі супраць бясконцых цыклаў сканавання (прыклад: ifor, абмежаванне значэнняў для параметра);
  • магчымасць усталёўкі прыярытэту для вывучэння URL-адрасоў (нават калі не знаходзяцца ў вобласці сканавання);
  • магчымасць выключыць некаторыя URL-адрасы са сканавання і нападаў (напрыклад: URL logout);
  • імпарт файлаў cookie (атрыманне іх з дапамогай прылады wapiti-getcookie);
  • магчымасць актываваць / дэактываваць праверку сертыфікатаў SSL;
  • магчымасць атрымаць URL з JavaScript (вельмі просты JS-інтэрпрэтатар);
  • узаемадзеянне з HTML5;
  • некалькі варыянтаў кіравання паводзінамі і абмежаваннямі crawler'a;
  • усталёўка максімальнага часу для працэсу сканавання;
  • даданне некаторых наладжвальных HTTP-загалоўкаў або налада карыстацкага User-Agent.

Дадатковыя магчымасці:

  • стварэнне справаздач аб уразлівасцях у розных фарматах (HTML, XML, JSON, TXT);
  • прыпыненне і аднаўленне сканавання ці напады (механізм сеансу з выкарыстаннем баз дадзеных SQLite3);
  • падсвятленне ў тэрмінале для вылучэння ўразлівасці;
  • розныя ўзроўні лагіравання;
  • хуткі і просты спосаб актывацыі / дэактывацыі модуляў атакі.

Ўстаноўка

Актуальную версію Wapiti можна ўсталяваць 2 спосабамі:

  • спампаваць зыходнік з афіцыйнага сайта і запусціць скрыпт усталёўкі, папярэдне ўсталяваўшы Python3;
  • з дапамогай каманды pip3 install wapiti3.

Пасля гэтага Wapiti будзе готаў да працы.

Праца з інструментам

Для дэманстрацыі працы Wapiti мы будзем выкарыстоўваць спецыяльна падрыхтаваны стэнд sites.vulns.pentestit.ru (унутраны рэсурс), які змяшчае розныя ўразлівасці (Injection, XSS, LFI / RFI) і іншыя недахопы вэб-прыкладанняў.

Інфармацыя прадстаўлена выключна ў азнаямленчых мэтах. Не парушайце заканадаўства!

Базавая каманда для запуску сканара:

# wapiti -u <target> <options>

Пры гэтым маецца даволі падрабязная даведка з вялікай колькасцю опцый запуску, напрыклад:

-scope - вобласць прымянення
Калі разам з URL для сканавання паказаць параметр scope, то можна рэгуляваць вобласць сканавання сайта, паказаўшы як асобную старонку, так і ўсе старонкі, якія атрымаецца знайсці на сайце.

-s и -x - Параметры дадання або выдалення канкрэтных URL-адрасоў. Дадзеныя параметры карысныя, калі неабходна дадаць ці выдаліць пэўны URL-адрас у працэсе сканавання.

-skip - паказаны параметр з гэтым ключом будзе сканавацца, але не будзе атакавацца. Карысна, калі ёсць нейкія небяспечныя параметры, якія лепш выключыць пры сканаванні.

-verify-ssl - уключэнне або адключэнне праверкі сертыфіката.
Сканар Wapiti модульны. Аднак, для запуску пэўных модуляў, з ліку тых, якія аўтаматычна падключаюцца падчас працы сканара, трэба выкарыстоўваць ключ -m і пералічваць патрэбныя праз коску. Калі ключ не выкарыстоўваць, то будуць па змаўчанні працаваць усе модулі. У самым простым варыянце выглядаць гэта будзе наступным чынам:

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

Дадзены прыклад выкарыстання азначае, што мы будзем выкарыстоўваць толькі модулі SQL, XSS і XXE пры сканаванні мэты. Апроч гэтага, можна фільтраваць працу модуляў у залежнасці ад патрэбнага метаду. Напрыклад -m "xss: get, blindsql: post, xxe: post". У такім выпадку модуль хсс будзе прымяняцца да запытаў, якія перадаюцца метадам GET, а модуль blibdsql - да POST-запытаў і г.д. Дарэчы, калі нейкі модуль, які быў уключаны ў спіс, не запатрабаваўся падчас сканавання ці працуе вельмі доўга, то націснуўшы камбінацыю Ctrl+C можна прапусціць выкарыстанне бягучага модуля, абраўшы які адпавядае пункт у інтэрактыўным меню.

Wapiti падтрымлівае перадачу запытаў праз проксі-сервер з дапамогай ключа -p і аўтэнтыфікацыю на мэтавым сайце праз параметр -a. Таксама можна пазначыць тып аўтэнтыфікацыі: Basiс, Digest, Kerberos и NTLM. Для апошніх двух можа запатрабавацца ўсталёўка дадатковых модуляў. Акрамя таго, можна ўстаўляць у запыты любыя загалоўкі (у тым ліку адвольны Карыстальнік) і многае іншае.

Для выкарыстання аўтэнтыфікацыі можна выкарыстоўваць прыладу 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 - падлучэнне ўсіх модуляў - не рэкамендуецца, т.к. будзе адбівацца на часе тэсціравання і памеры справаздачы;

-color - падсвятляць знойдзеныя ўразлівасці ў залежнасці ад іх крытычнасці па версіі самога Wapiti;

-c - Выкарыстанне файла з печыва, згенераванага з дапамогай wapiti-getcookie;

-scope - Выбар мэты для нападу. Выбраўшы варыянт папка будзе сканавацца і атакавацца кожны URL, пачынаючы з базавай. Базавы URL павінен мець касую рысу (без імя файла);

-flush-session - дазваляе праводзіць паўторнае сканаванне, пры якім не будуць улічвацца папярэднія вынікі;

-A - уласны Карыстальнік;

-p - адрас проксі-сервера, калі неабходзен.

Трохі аб справаздачы

Вынік сканавання прадстаўлены ў выглядзе падрабязнай справаздачы па ўсіх знойдзеных уразлівасцямі ў фармаце HTML-старонкі, у зразумелым і зручным для ўспрымання выглядзе. У справаздачы будуць указаны катэгорыі і колькасць знойдзеных уразлівасцяў, іх апісанне, запыты, каманды для завітак і парады аб тым, як іх закрыць. Для зручнасці навігацыі ў назвы катэгорый будзе дабаўляцца спасылка, клікнуўшы па якой можна перайсці да яе:

Wapiti - праверка сайта на ўразлівасці сваімі сіламі

Істотны мінус справаздачы - адсутнасць як такой карты вэб-прыкладанні, без якой не будзе зразумела, ці ўсе адрасы і параметры былі прааналізаваны. Таксама ёсць верагоднасць ілжывых спрацоўванняў. У нашым выпадку ў справаздачы фігуруюць "файлы бэкапаў" і "патэнцыйна небяспечныя файлы". Іх колькасць не адпавядае рэчаіснасці, бо падобных файлаў на серверы не было:

Wapiti - праверка сайта на ўразлівасці сваімі сіламі

Магчыма, некарэктна якія працуюць модулі выправяць са часам. Таксама недахопам справаздачы можна назваць адсутнасць афарбоўкі знойдзеных уразлівасцяў (у залежнасці ад іх крытычнасці), ці хаця б іх падзелы па катэгорыях. Адзінае, як мы можам ускосна зразумець аб крытычнасці знойдзенай уразлівасці - гэта ўжываць параметр -color пры сканаванні і тады знойдзеныя ўразлівасці будуць афарбоўвацца рознымі колерамі:

Wapiti - праверка сайта на ўразлівасці сваімі сіламі

Але ў самой справаздачы падобная афарбоўка не прадугледжана.

ўразлівасці

SQLi

Сканар часткова зладзіўся з пошукам SQLi. Пры пошуку SQL-уразлівасцяў на старонках, дзе не патрабуецца аўтэнтыфікацыя, ніякіх праблем не ўзнікае:

Wapiti - праверка сайта на ўразлівасці сваімі сіламі

Не атрымалася знайсці ўразлівасць на старонках, даступных толькі пасля аўтэнтыфікацыі, нават з выкарыстаннем валідных печыва, бо хутчэй за ўсё пасля паспяховай аўтэнтыфікацыі будзе зроблены "выхад іх сесіі" і печыва стануць несапраўднымі. Калі б функцыя дэаўтарызацыі была выканана ў выглядзе асобнага скрыпту, які адказвае за апрацоўку гэтай працэдуры, то можна было б цалкам выключыць яго праз параметр -x, і тым самым прадухіліць яго спрацоўванне. У адваротным выпадку выключыць яго апрацоўку не атрымаецца. Гэта праблема не канкрэтнага модуля, а інструмента ў цэлым, але з-за гэтага нюансу не ўдалося выявіць некалькі ін'екцый у закрытай вобласці рэсурсу.

XSS

З зададзенай задачай сканер выдатна зладзіўся і знайшоў усе падрыхтаваныя ўразлівасці:

Wapiti - праверка сайта на ўразлівасці сваімі сіламі

LFI/RFI

Сканар знайшоў усе закладзеныя ўразлівасці:

Wapiti - праверка сайта на ўразлівасці сваімі сіламі

У цэлым, нягледзячы на ​​ілжывыя спрацоўванні і пропускі ўразлівасцяў, Wapiti, як бясплатная прылада, паказвае даволі нядрэнныя вынікі працы. У любым выпадку варта прызнаць, што сканер даволі магутны, гнуткі і шматфункцыянальны, а галоўнае - бясплатны, таму мае права на выкарыстанне, дапамагаючы адміністратарам і распрацоўшчыкам атрымліваць базавую інфармацыю аб стане абароненасці вэб-прыкладанні.

Заставайцеся здаровымі і абароненымі!

Крыніца: habr.com

Дадаць каментар