Ав­томати­чес­кие ска­неры уяз­вимос­тей — очень полез­ный инс­тру­мент как для пен­тесте­ров, так и для DevSecOps. Сегод­ня я рас­ска­жу о том, как исполь­зовать на прак­тике один из самых извес­тных ска­неров — Acunetix.

Пер­вое, что я хочу ска­зать, — не сто­ит излишне полагать­ся на авто­мати­чес­кий ска­нер уяз­вимос­тей как на уни­вер­саль­ный инс­тру­мент. Ког­да я вел уро­ки или кон­суль­тировал коман­ды как незави­симый спе­циалист, я обыч­но говорил, что ска­неры — это ору­жие отча­яния для ред‑тимеров и необ­ходимый инс­тру­мент для DevSecOps.

Од­нако с тех пор я нес­коль­ко перес­мотрел свою точ­ку зре­ния. Теперь я счи­таю, что ска­неры уяз­вимос­тей — это необ­ходимый минимум и для red team, который полез­но исполь­зовать во вре­мя или сра­зу пос­ле раз­ведки либо, если угод­но, для рас­ширения повер­хнос­ти ата­ки. Ведь руками до все­го дотянуть­ся доволь­но‑таки слож­но, если вооб­ще воз­можно. Так вот, Acunetix — мой фаворит в этих воп­росах. Он доволь­но быс­трый, дос­таточ­но умный и гиб­кий для того, что­бы зак­рыть эту пот­ребность.

info

Acunetix WVS (Web Vulnerability Scanner) — это ком­мерчес­кий инс­тру­мент от ком­пании Invicti для авто­мати­чес­кого ска­ниро­вания веб‑при­ложе­ний на уяз­вимос­ти. Он про­веря­ет веб‑сай­ты на наличие раз­личных типов уяз­вимос­тей, таких как SQL-инъ­екции, XSS (меж­сай­товый скрип­тинг) и дру­гие угро­зы, которые могут быть исполь­зованы зло­умыш­ленни­ками. WVS пре­дос­тавля­ет отче­ты о най­ден­ных уяз­вимос­тях и рекомен­дации по их устра­нению, что помога­ет орга­низа­циям защитить свои веб‑при­ложе­ния и дан­ные от атак.

Инс­тру­мент этот доволь­но слож­ный, поэто­му мы рас­смот­рим толь­ко основные его фун­кции, что­бы оце­нить воз­можнос­ти прог­раммы.

Установка

Инс­тру­мент этот ком­мерчес­кий и, разуме­ется, плат­ный, но я уве­рен, что читате­ли «Хакера» зна­ют, что с этим делать. Что каса­ется про­цес­са уста­нов­ки, то он мало отли­чает­ся от инстал­ляции дру­гих прог­рамм. Уста­нови­ли, запус­тили, акти­виро­вали. Есть вер­сии Acunetix WVS как под Windows, так и под Linux, так что про­тес­тировать этот ска­нер смо­гут поль­зовате­ли обе­их этих опе­раци­онных сис­тем.

Вход в сканер и разделы

Пос­ле уста­нов­ки Acunetix откро­ем бра­узер и перей­дем по адре­су http://localhost:3443 — интерфейс ска­нера реали­зован в виде веб‑при­ложе­ния. Прог­рамма пред­ложит тебе вой­ти в сис­тему с исполь­зовани­ем учет­ной записи. На глав­ной стра­нице Acunetix показа­ны общие дан­ные, вро­де чис­ла выпол­ненных ска­ниро­ваний, количес­тва най­ден­ных уяз­вимос­тей и их типов.

В глав­ном окне нес­коль­ко клю­чевых раз­делов:

  1. Overview (панель управле­ния): здесь отоб­ража­ется общая информа­ция о текущем сос­тоянии сис­темы, вклю­чая резуль­таты пос­ледних ска­ниро­ваний и спи­сок клю­чевых уяз­вимос­тей.
  2. Targets (цели): раз­дел для добав­ления целей, которые ты пла­ниру­ешь ска­ниро­вать, и управле­ния ими.
  3. Scans (ска­ниро­вания): здесь ты можешь запус­кать новые ска­ниро­вания и отсле­живать ста­тус текущих задач.
  4. Reports (отче­ты): раз­дел для прос­мотра отче­тов о про­веден­ных ска­ниро­вани­ях. Этот раз­дел содер­жит информа­цию, которую мож­но пре­дос­тавить в качес­тве резуль­татов кли­енту или руководс­тву.
  5. Settings (нас­трой­ки): кон­фигура­ция парамет­ров сис­темы, вклю­чая нас­трой­ку интегра­ций с дру­гими инс­тру­мен­тами, такими как CI/CD, и управле­ние поль­зовате­лями.
  6. Users (поль­зовате­ли): управле­ние учет­ными запися­ми и пра­вами дос­тупа. Мож­но соз­дать нес­коль­ких поль­зовате­лей с раз­ными уров­нями дос­тупа.
  7. WAFs (Web Application Firewalls): нас­трой­ки интегра­ции с раз­личны­ми веб‑фай­рво­лами для авто­мати­чес­кой защиты от най­ден­ных уяз­вимос­тей. То есть Acunetix может авто­мати­чес­ки исправ­лять пра­вила у WAF.
  8. Proxy Settings (нас­трой­ки прок­си): нас­трой­ка прок­си‑сер­вера, который будет исполь­зовать­ся для ска­ниро­вания. Эта фун­кция полез­на, если ты работа­ешь в зак­рытой сети, или, нап­ример, для ано­ними­зации тра­фика. Так­же мож­но исполь­зовать прок­си, если тебе необ­ходимо выб­рать опре­делен­ную геоло­кацию или под­сеть.

Настройка сканирования

Нас­трой­ка парамет­ров ска­ниро­вания в Acunetix весь­ма муд­реная. Одна­ко для ред‑тимера или пен­тесте­ра важ­ны толь­ко раз­делы Targets и Scans, так как они отве­чают за про­цесс поис­ка уяз­вимос­тей, поз­воля­ют добав­лять новые цели и быс­тро запус­кать ска­ниро­вание с уче­том спе­цифи­ки тес­тиру­емых при­ложе­ний.

В раз­деле Targets зада­ется спи­сок целей, в Scans — спи­сок ска­ниро­вания. Обыч­ный алго­ритм исполь­зования Acunetix доволь­но прост: соз­дать цель, запус­тить ска­ниро­вание, пос­мотреть резуль­тат. Всё.

Единс­твен­ное, что пута­ет, — так это кноп­ка New Scan, при нажатии на которую нас переки­дыва­ет в раз­дел Scans, где вооб­ще нет никаких при­выч­ных кон­фигура­ций. А дело тут в том, что сна­чала нуж­но добавить цель, а уже затем запус­кать ска­ниро­вание.

Добавление цели (Target)

Настройка цели (Target Settings)

Пос­ле добав­ления цели мож­но нас­тро­ить допол­нитель­ные парамет­ры дос­тупа к ней, вклю­чая аутен­тифика­цию, если она тре­бует­ся для дос­тупа к защищен­ным стра­ницам. Мож­но так­же нас­тро­ить пов­торение какой‑то пос­ледова­тель­нос­ти дей­ствий на стра­нице (щел­чки мышью, ввод в поля форм, нажатие кно­пок). Что­бы под­сунуть прог­рамме свои куки, исполь­зуй раз­дел Advanced — Custom Cookies. В Advanced мож­но так­же задать и кас­томные заголов­ки.

Раз­дел Scan Speed дает воз­можность ука­зать ско­рость и количес­тво потоков ска­ниро­вания. Фун­кция Import files → API definitions поз­воля­ет под­клю­чить API-биб­лиоте­ку, и тог­да ска­нер заод­но выпол­нит и про­вер­ку API.

В этом раз­деле очень мно­го нас­тро­ек, но я опи­сываю лишь те, которые необ­ходимы для ска­ниро­вания или полез­ны с точ­ки зре­ния пен­теста. Боль­шинс­тво пред­став­ленных тут фун­кций пред­назна­чены для кор­поратив­ного сег­мента и DevSecOps. Нап­ример, фун­кция Scan Engine в кон­тек­сте Acunetix отно­сит­ся к выбору опре­делен­ного сер­вера ска­ниро­вания, на котором выпол­няют­ся задачи поис­ка уяз­вимос­тей. В кор­поратив­ной вер­сии Acunetix может исполь­зовать нес­коль­ко сер­веров для ска­ниро­вания, и Scan Engine поз­воля­ет выб­рать, какой из этих сер­веров будет задей­ство­ван для кон­крет­ной цели. Это полез­но для рас­пре­деле­ния наг­рузки и управле­ния ска­ниро­вани­ем в сре­дах с высокой плот­ностью веб‑при­ложе­ний или в сетях с нес­коль­кими реги­ональ­ными сер­верами ска­ниро­вания.

Site Login

Раз­дел Site Login на вклад­ке Target Settings пред­назна­чен для нас­трой­ки аутен­тифика­ции на веб‑сай­тах, которые тре­буют вхо­да в сис­тему для дос­тупа к защищен­ным стра­ницам. В этом раз­деле мож­но ука­зать учет­ные дан­ные (логин и пароль) для авто­мати­чес­кого вхо­да ска­нера на сайт. Так­же здесь нас­тра­ивает­ся тип аутен­тифика­ции (прос­тая фор­ма, HTTP-аутен­тифика­ция, сес­сии с cookies) или зада­ется OAuth, то есть мож­но ука­зать парамет­ры для аутен­тифика­ции через сто­рон­ние сер­висы, такие как Google.

Есть клас­сная фун­кция Try to auto-login into the site, поз­воля­ющая ввес­ти извес­тные кред­сы, но по какой‑то при­чине толь­ко одну пару, а не целый сло­варь. В про­цес­се ска­ниро­вания Acunetix будет про­бовать вво­дить их в раз­ные фор­мы для авто­риза­ции.

Так­же мож­но исполь­зовать пред­записан­ные сце­нарии авто­риза­ции, pre-recorded login sequence. Это такой встро­енный «Selenium» с под­дер­жкой импорта его скрип­тов.

info

Selenium — это популяр­ный инс­тру­мент для авто­мати­зации вза­имо­дей­ствия с бра­узе­ром. Он поз­воля­ет авто­мати­зиро­вать вза­имо­дей­ствие с веб‑при­ложе­ниями, ими­тируя дей­ствия поль­зовате­ля, такие как щел­чки мышью, ввод дан­ных в фор­мы, навига­ция по стра­ницам. Selenium час­то исполь­зует­ся для тес­тирова­ния веб‑при­ложе­ний, что­бы убе­дить­ся, что они работа­ют пра­виль­но. Так­же он под­держи­вает написа­ние тес­тов на раз­личных язы­ках прог­рамми­рова­ния (нап­ример, Python, Java, C#) и может работать с раз­ными бра­узе­рами — Chrome, Firefox и дру­гими.

Тех­нология, похожая на упро­щен­ный Selenium, исполь­зует­ся в Acunetix для записи слож­ных сце­нари­ев вза­имо­дей­ствия с веб‑при­ложе­ниями и называ­ется Acunetix Login Sequence Recorder. Этот инс­тру­мент поз­воля­ет записы­вать сце­нарии аутен­тифика­ции или логичес­ких шагов, таких как запол­нение форм, перехо­ды по стра­ницам и дру­гие вза­имо­дей­ствия с при­ложе­нием, которые мож­но затем вос­про­извести в про­цес­се ска­ниро­вания. Как и Selenium, он авто­мати­зиру­ет дей­ствия поль­зовате­ля в бра­узе­ре, но ори­енти­рован на ими­тацию дей­ствий в самом при­ложе­нии.

Business Logic Recorder

Business Logic Recorder — это ана­логич­ный инс­тру­мент авто­мати­зации, который поз­воля­ет записы­вать слож­ные сце­нарии аутен­тифика­ции и вза­имо­дей­ствия с веб‑при­ложе­ниями. В Acunetix этот инс­тру­мент исполь­зует­ся для соз­дания пошаго­вых скрип­тов для работы с при­ложе­нием, вклю­чая такие дей­ствия, как щел­чки мышью в опре­делен­ных мес­тах, перехо­ды по стра­ницам, запол­нение форм и дру­гие дей­ствия, которые могут вызывать слож­ности сво­ей «мно­гоэтап­ностью».

За­тем эти сце­нарии могут быть вос­про­изве­дены во вре­мя ска­ниро­вания, что поз­воля­ет совер­шать какие‑то допол­нитель­ные дей­ствия. Нап­ример, экс­плу­ати­ровать мно­гос­тупен­чатые уяз­вимос­ти или тес­тировать динами­чес­кие веб‑при­ложе­ния, которые тре­буют более слож­ного вза­имо­дей­ствия, чем прос­то ввод логина и пароля.

Ра­бота­ет эта тех­нология прос­то: откры­вает­ся фор­ма, в которой отоб­ража­ется подобие бра­узе­ра. «Нак­ликива­ем» в ней все, что нам тре­бует­ся, выс­тавля­ем тайм‑ауты событий и нажима­ем «Сох­ранить». Получа­ется сво­еоб­разный мак­рос с записан­ными дей­стви­ями, который будет задей­ство­ван во вре­мя ска­ниро­вания.

Advanced — HTTP

Раз­дел HTTP на вклад­ке Target Settings поз­воля­ет нас­тро­ить парамет­ры HTTP-зап­росов, которые исполь­зуют­ся при ска­ниро­вании веб‑при­ложе­ния. Здесь содер­жатся сле­дующие нас­трой­ки:

  1. HTTP Authentication: исполь­зует­ся для нас­трой­ки базовой или NTLM-аутен­тифика­ции. Эта фун­кция поз­воля­ет ска­неру вхо­дить, нап­ример, на внут­ренние ресур­сы, которые тре­буют аутен­тифика­ции через HTTP-заголов­ки, пре­дос­тавляя необ­ходимые учет­ные дан­ные (имя поль­зовате­ля и пароль). Под­держи­вает­ся NTLM и Kerberos.
  2. Под­клю­чить SSL-сер­тификат: тут мож­но под­клю­чить пер­сональ­ный SSL-сер­тификат, если в этом есть необ­ходимость.
  3. Нас­тро­ить прок­си: если тре­бует­ся исполь­зовать прок­си‑сер­вер для ска­ниро­вания, здесь мож­но задать соот­ветс­тву­ющие парамет­ры.

Эти нас­трой­ки помога­ют скон­фигури­ровать ска­нер под те или иные спе­цифи­чес­кие усло­вия.

Настройки при старте

Все, что нуж­но, мы нас­тро­или, теперь прис­тупим к самому ска­ниро­ванию. Пос­ле добав­ления нес­коль­ких целей надо перей­ти в раз­дел Targets, выб­рать нуж­ные цели из спис­ка (мож­но сра­зу нес­коль­ко) и запус­тить ска­ниро­вание нажати­ем на кноп­ку Scan в пра­вом вер­хнем углу окна прог­раммы. Прог­рамма пред­ложит ука­зать интенсив­ность и про­филь ска­ниро­вания. Мож­но исполь­зовать нас­трой­ки по умол­чанию, не вни­кая. Из любопыт­ного здесь толь­ко выбор про­филя ска­ниро­вания — так получит­ся сущес­твен­но сок­ратить вре­мя работы ска­нера, сос­редото­чив­шись на чем‑то одном, нап­ример исклю­читель­но на SQLi.

На­жима­ем кноп­ку Create Scans, что­бы запус­тить ска­ниро­вание.

Экран сканирования

На этом экра­не соб­рана вся информа­ция о том, что имен­но ска­нер обна­ружил. Экран хода ска­ниро­вания в Acunetix дос­таточ­но прост и понятен инту­итив­но. Здесь пред­став­лены сле­дующие све­дения:

  1. Прог­ресс ска­ниро­вания: показы­вает ход текуще­го ска­ниро­вания, вклю­чая эта­пы тес­тирова­ния.
  2. Об­наружен­ные уяз­вимос­ти: в реаль­ном вре­мени отоб­ража­ются и обновля­ются най­ден­ные уяз­вимос­ти, сгруп­пирован­ные по клас­су и сте­пени рис­ка (низ­кий, сред­ний, высокий).
  3. Струк­тура сай­та (вклад­ка Site Structure): поз­воля­ет прос­мотреть струк­туру сай­та.
  4. Жур­нал событий: сок­ращен­ный лог дей­ствий ска­нера, где фик­сиру­ются все выпол­няемые шаги и тес­ты. Для прос­мотра пол­ной вер­сии жур­нала мож­но перей­ти на вклад­ку Events.
  5. Па­уза и оста­нов­ка: кноп­ки, рас­положен­ные свер­ху в пра­вой час­ти, дают воз­можность при­оста­новить или оста­новить ска­ниро­вание.

Эти фун­кции поз­воля­ют управлять про­цес­сом ска­ниро­вания в реаль­ном вре­мени, обес­печивая кон­троль над его ходом и резуль­татами.

Вкладка Vulnerabilities

Вклад­ка Vulnerabilities на экра­не хода ска­ниро­вания в Acunetix самая важ­ная, пос­коль­ку отоб­ража­ет все обна­ружен­ные уяз­вимос­ти в реаль­ном вре­мени. Она содер­жит сле­дующие дан­ные:

  1. Спи­сок уяз­вимос­тей: все най­ден­ные уяз­вимос­ти, сгруп­пирован­ные по уров­ню рис­ка (кри­тичес­кий, высокий, сред­ний, низ­кий).
  2. Де­тали уяз­вимос­тей: под­робное опи­сание каж­дой уяз­вимос­ти, вклю­чающее потен­циаль­ные пос­ледс­твия и рекомен­дации по устра­нению.

Эта вклад­ка поз­воля­ет деталь­но изу­чить най­ден­ные уяз­вимос­ти, содер­жит детали вро­де хедера, при­вед­шего к уяз­вимос­ти, и отве­та сер­вера, под­твержда­юще­го уяз­вимость.

По­пасть в этот раз­дел мож­но и со стра­ницы ска­ниро­вания опре­делен­ной цели либо из обще­го раз­дела Scans: для это­го нуж­но нажать на отоб­ража­емый показа­тель условно­го «уров­ня опас­ности», сог­ласно которо­му выпол­няет­ся сор­тиров­ка по катего­риям в Acunetix, далее нажать на количес­тво най­ден­ных уяз­вимос­тей опре­делен­ного клас­са. Так, на скрин­шоте выше показа­ны толь­ко уяз­вимос­ти клас­са Medium.

Для получе­ния деталей нуж­но выб­рать кон­крет­ную най­ден­ную уяз­вимость. Экран раз­делит­ся пополам, и на нем отоб­разят­ся под­робнос­ти по каж­дой уяз­вимос­ти: опи­сание, HTTP хедеров, детали ата­ки, URL, где была выяв­лена проб­лема.

Раздел Discovered Hosts

Так­же на глав­ной стра­нице (вклад­ка Scan Information на стра­нице ска­ниро­вания хос­та) рас­полага­ется неп­римет­ный раз­дел Hosts. В нем отоб­ража­ется спи­сок всех хос­тов, которые были обна­руже­ны при ска­ниро­вании текущей цели. Эти хос­ты могут вклю­чать как основные домены, так и под­домены, а так­же IP-адре­са, свя­зан­ные с веб‑при­ложе­нием. Этот раз­дел поз­воля­ет отсле­живать все иден­тифици­рован­ные хос­ты и помога­ет оце­нить, какие час­ти инфраструк­туры могут быть уяз­вимыми или при­год­ны для даль­нейше­го ана­лиза. Из них мож­но сра­зу выб­рать и новые тар­геты, прос­то нажав соот­ветс­тву­ющую кно­поч­ку Create Target.

Вкладка Site Structure

Край­не полез­ную информа­цию мож­но почер­пнуть из вклад­ки кра­уле­ра Site Structure на стра­нице ска­ниро­вания цели. Тут так­же дуб­лиру­ется информа­ция обо всех най­ден­ных уяз­вимос­тях. Здесь мож­но пос­мотреть инте­ресу­ющий нас скрипт и обна­ружен­ные в нем уяз­вимос­ти, то есть будут показа­ны толь­ко уяз­вимос­ти, отно­сящи­еся к опре­делен­ному URL нашей цели.

Что же полез­ного тут мож­но най­ти? Нап­ример, как вид­но на скрин­шоте, Acunetix по какой‑то при­чине решил, что .htaccess совер­шенно не инте­ресен, и добавил его в общий ско­ринг, как нез­начитель­ный объ­ект, а в текущем ауди­те этот файл сыг­рал клю­чевую роль. Поэто­му не леним­ся и заходим сюда пос­мотреть, как устро­ен иссле­дуемый сайт изнутри.

Заключение

Мы разоб­рались, как исполь­зовать Acunetix для тес­тирова­ния на про­ник­новение. Этот инс­тру­мент на прак­тике дает куда мень­ше лож­ных сра­баты­ваний, чем ана­логи. Конеч­но, он не в сос­тоянии най­ти IDOR или, ска­жем, какую‑то слож­ную мно­гос­тупен­чатую уяз­вимость в пол­ностью авто­мати­чес­ком режиме и без пред­нас­тро­ек.

Но твоя наб­людатель­ность — это единс­твен­ный инс­тру­мент, который спо­собен на подоб­ное. Лич­но мне Acunetix при­носил про­фиты в таких экзо­тичес­ких вещах, как пере­адре­сация без завер­шения работы скрип­та. То есть сайт поз­волял заходить на стра­ницу и поль­зовать­ся админкой, поп­росту отклю­чив авто­реди­рек­ты в бра­узе­ре. Думаю, понят­но, что при руч­ном иссле­дова­нии на такое обра­тить вни­мание очень неп­росто.

Нес­мотря на слож­ность прог­раммы, запус­тить ска­ниро­вание мож­но за пару минут, выб­рав нуж­ные нас­трой­ки нес­коль­кими щел­чка­ми мыши. В этом и зак­люча­ется основная цен­ность Acunetix для иссле­дова­теля — он замет­но эко­номит вре­мя и силы.