Эксплуатация уязвимости CVE-2022-27228 и атака NTLM Relay

Безопасность вебсайта

В сегодняшней статье речь пой­дет о пен­тесте сер­висов внеш­него перимет­ра без пре­дос­тавле­ния заказ­чиком учет­ных записей. В ходе работы я получил дос­туп к объ­екту внут­ренней сети, исполь­зуя тех­нику NTLM Relay.

Еще по теме: Атаки на службы сертификатов Active Directory

Эксплуатация CVE-2022-27228 и атака NTLM Relay

Пентест (или пентестинг) — процесс проверки компьютерной системы, приложения или сети на наличие уязвимостей, которые могут быть использованы злоумышленниками для несанкционированного доступа.

При пентестах нужно действовать этично и придерживаться установленных правил. Не забывайте, что несанкционированный взлом является незаконным и расценивается, как уголовное преступление. Ни редак­ция spy-soft.net, ни автор не несут ответс­твен­ность за ваши незаконные действия.

Эксплуатация уязвимости CVE-2022-27228

Нач­нем с момен­та, ког­да я обна­ружил веб‑при­ложе­ния на CMS Bitrix, под­вержен­ные (на тот момент све­жей и доволь­но рас­простра­нен­ной) кри­тичес­кой уяз­вимос­ти CVE-2022-27228 в модуле vote. В резуль­тате ее экс­плу­ата­ции неаутен­тифици­рован­ный поль­зователь может выпол­нять про­изволь­ный код на сер­вере.

Вос­поль­зуем­ся пуб­личным экс­пло­итом, что­бы получить веб‑шелл:

CVE-2022-27228

Поп­робу­ем выпол­нить сис­темную коман­ду

Уязвимость bitrix cve 2022 27228

Та­ким обра­зом я получил уда­лен­ный дос­туп к кон­тей­неру. Здесь мог­ла быть (а может, и нет) инте­рес­ней­шая исто­рия с container escape, но события при­няли иной обо­рот, ког­да обна­ружи­лось, что из кон­тей­нера есть сетевой дос­туп к внут­ренним ресур­сам. В таком слу­чае неп­лохо бы обза­вес­тись учет­ной записью поль­зовате­ля домена и получить дос­туп к некото­рому объ­екту внут­ренней сети. Вот толь­ко к какому объ­екту? И от име­ни какого поль­зовате­ля?

Принуждение к аутентификации

Вмес­те с тем на одном из сер­веров внеш­него перимет­ра я нашел веб‑при­ложе­ние «1С:Докумен­тообо­рот», к которо­му уда­лось получить адми­нис­тра­тив­ный дос­туп от име­ни слу­жеб­ной учет­ной записи. При­чем для это­го не понадо­билось переби­рать учет­ные дан­ные — по умол­чанию ука­зан­ному поль­зовате­лю прис­воен пус­той пароль.

CVE-2022-27228 эксплуатация уязвимости

Чем же нам может помочь это веб‑при­ложе­ние? Отме­тим инте­рес­ную воз­можность, каса­ющуюся хра­нения фай­лов. Сис­темой пре­дус­мотре­но хра­нение в информа­цион­ной базе либо в томах на дис­ке. В нашем слу­чае исполь­зовал­ся имен­но вто­рой вари­ант.

CVE-2022-27228 уязвимость

В поле «Пол­ный путь» был ука­зан путь UNC до внут­ренне­го сетево­го ресур­са (фай­ловый сер­вер обоз­начим как fs.corp). Изме­ним его на под­кон­троль­ный нам SMB-сер­вер и поп­робу­ем при­нудить сер­вер к аутен­тифика­ции.

Вос­поль­зуем­ся ути­литой responder:

И спро­воци­руем аутен­тифика­цию.

Получение хеш NetNTLMv2 домен­ной учет­ной записи

Мы получи­ли хеш NetNTLMv2 домен­ной учет­ной записи, которая исполь­зует­ся для под­клю­чения к fs.corp (назовем ее 1C_ADMIN).

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

Пос­коль­ку мы име­ем аутен­тифика­цию по NTLM, можем рас­смат­ривать сле­дующие век­торы:

  • Ес­ли при аутен­тифика­ции воз­можно исполь­зовать про­токол NetNTLMv1, то мож­но будет получить хеш NetNTLMv1 по опре­делен­ному зна­чению CHALLENGE и выпол­нить пе­ребор с исполь­зовани­ем радуж­ных таб­лиц для получе­ния NT-хеша. В нашем слу­чае была аутен­тифика­ция с при­мене­нием исклю­читель­но NetNTLMv2, так что идем даль­ше.
  • Пе­ребор хеша NetNTLMv2 с целью получить пароль. Впол­не веро­ятный, но не самый при­ори­тет­ный век­тор, пос­коль­ку зависит от слож­ности пароля, а вре­мя огра­ничен­но и ско­ротеч­но.

NTLM Relay

Ма­тери­ал по ата­кам NTLM Relay доволь­но обши­рен, так что я при­веду толь­ко необ­ходимый теоре­тичес­кий минимум.

Аутен­тифика­ция по про­токо­лу NTLM содер­жит в себе кон­цепту­аль­ный недос­таток — сер­вер аутен­тифици­рует кли­ент, но кли­ент не аутен­тифици­рует сер­вер. Из это­го сле­дует, что ата­кующий, выдав себя за сер­вер, может получить от кли­ента сооб­щение с аутен­тифика­цион­ной информа­цией (AUTHENTICATE) и перенап­равить его на целевой хост для получе­ния дос­тупа от име­ни рет­ран­сли­руемо­го поль­зовате­ля.

NTLM исполь­зует­ся для аутен­тифика­ции на раз­ных служ­бах, а зна­чит, его под­дер­жка встро­ена в про­токо­лы прик­ладно­го уров­ня (SMB, LDAP, HTTP, IMAP и дру­гие). Ата­ки NTLM Relay обыч­но называ­ют по име­ни служ­бы, нап­ример ата­ка на SMB — SMB Relay.

Пос­коль­ку учет­ная запись 1C_ADMIN исполь­зует­ся для получе­ния дос­тупа к сетево­му катало­гу объ­екта fs.corp по про­токо­лу SMB, выберем его в качес­тве целево­го хос­та. Одна­ко ука­зан­ный хост нам нап­рямую недос­тупен, поэто­му тре­бует­ся обес­печить дос­туп к нему через ранее ском­про­мети­рован­ный веб‑сер­вер. Схе­матич­но получе­ние дос­тупа к FS будет выг­лядеть сле­дующим обра­зом (зеленым цве­том выделе­но легитим­ное вза­имо­дей­ствие 1С с FS, крас­ным — вза­имо­дей­ствие в ходе ата­ки).

NTLM Relay атака

Пе­ред про­веде­нием ата­ки тре­бует­ся про­верить, соб­людены ли сле­дующие усло­вия:

  • Име­ется сетевой дос­туп к SMB-сер­веру fs.corp с позиции ском­про­мети­рован­ного веб‑сер­вера.
  • Не исполь­зует­ся механизм под­писи для SMB.

Для начала сле­дует выяс­нить IP-адрес целево­го хос­та. Обыч­но в кон­тей­нере набор сетевых ути­лит огра­ничен, поэто­му из име­юще­гося инс­тру­мен­тария возь­мем curl и выпол­ним сле­дующую коман­ду:

Пример атаки NTLM Relay

На скрине выше в стро­ке « Trying ...» будет отоб­ражен IP-адрес целево­го сер­вера.

Да­лее необ­ходимо пос­тро­ить тун­нель до целево­го сер­вера. Для это­го вос­поль­зуем­ся инс­тру­мен­том chisel в режиме Reverse SOCKS Proxy.

На хос­те ата­кующе­го выпол­ним сле­дующую коман­ду:

На сер­вере Bitrix выпол­няем:

Атака NTLM Relay

В /etc/proxychains.conf дол­жна быть ука­зана такая стро­ка:

Да­лее про­верим дос­тупность пор­та 445 и получим информа­цию о нас­трой­ках под­писи для SMB. Для это­го выпол­ним такую коман­ду:

Атака NTLM Relay

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

Пос­коль­ку нас­трой­ки SMB на хос­те 1C ана­логич­ны, механизм под­писи не будет исполь­зовать­ся.

Проведение атаки

Цель нашей ата­ки — получить дос­туп к SMB-служ­бе целево­го хос­та от име­ни рет­ран­сли­руемо­го поль­зовате­ля.

Нас­тро­им сер­вер SMB для ата­ки и спро­воци­руем аутен­тифика­цию:

Proxychains impacket-ntlmrelayx

Для даль­нейше­го вза­имо­дей­ствия с сетевым катало­гом вос­поль­зуем­ся сле­дующей коман­дой:

И получим спи­сок сес­сий пос­редс­твом коман­ды who (тре­буют­ся пра­ва адми­нис­тра­тора).

Proxychains impacket-ntlmrelayx

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

От­мечу, что исполь­зование стан­дар­тных вари­аций psexec в impacket может быть вос­при­нято анти­виру­сом как угро­за.

Вы­пол­ним коман­ду

Proxychains impacket ntlmrelayx

Тем вре­менем даже Microsoft Defender соч­тет наши дей­ствия угро­зой. При прос­мотре сооб­щения можем заметить параметр CmdLine.

Proxychains impacket ntlmrelayx

В рам­ках при­мера можем внес­ти изме­нения в impacket, отре­дак­тировав CmdLine сле­дующим обра­зом.

Бы­ло:

Ста­ло:

Пос­ле пов­торной ата­ки получим выпол­нение коман­ды от име­ни сис­темы.

CVE-2022-27228 атака NTLM Relay

Устранение уязвимостей и защита

Те­перь перечис­лим фак­торы, которые поз­волили нам реали­зовать дан­ный век­тор, и дадим рекомен­дации:

  • Кри­тичес­кая уяз­вимость на веб‑сер­вере, при­водя­щая к RCE. Для устра­нения уяз­вимос­ти CVE-2022-27228 сле­дует обно­вить уяз­вимый модуль vote до вер­сии 21.0.100 или более акту­аль­ной.
  • На­личие сетево­го дос­тупа к внут­ренним ресур­сам со ском­про­мети­рован­ного хос­та. Нуж­но огра­ничить сетевой дос­туп к ресур­сам внут­ренней сети со сто­роны внеш­него перимет­ра. Раз­решить дос­туп к ресур­сам сер­верно­го сег­мента исклю­читель­но с тех IP-адре­сов, которым этот дос­туп необ­ходим.
  • Сла­бый пароль к учет­ной записи с пра­вами адми­нис­тра­тора в веб‑при­ложе­нии «1С:Докумен­тообо­рот». Во‑пер­вых, уста­новить слож­ный нес­ловар­ный пароль для учет­ной записи, во‑вто­рых, рас­смот­реть воз­можность исполь­зования двух­фактор­ной аутен­тифика­ции.
  • Воз­можность при­нуж­дения к аутен­тифика­ции. Пос­коль­ку воз­можность нас­тра­ивать внеш­ний сетевой каталог, дос­тупная адми­нис­тра­тору веб‑при­ложе­ния, сама по себе не уяз­вимость, мож­но пой­ти раз­ными путями: либо отклю­чить под­дер­жку про­токо­ла NTLM на IIS и отка­зать­ся от исполь­зования Kerberos, либо огра­ничить нас­трой­ку внеш­него сетево­го катало­га через веб‑интерфейс, либо огра­ничить на фай­рво­ле сетевой дос­туп по SMB к опре­делен­ным хос­там.
  • От­клю­чен механизм под­писи для SMB. Сто­ит подумать об исполь­зовании под­писи для SMB на рас­смат­рива­емых хос­тах с уче­том вли­яния это­го на про­изво­дитель­ность.

Заключение

Этот про­ект был при­меча­телен тем, что жела­емый резуль­тат дос­тигал­ся не толь­ко при­мене­нием кри­тичес­кой CVE, но и исполь­зовани­ем небезо­пас­ных нас­тро­ек в рас­смат­рива­емых объ­ектах, а так­же воз­можностью при­нуж­дения к аутен­тифика­ции. Вооб­ще, вари­ации атак вида NTLM Relay куда чаще встре­чают­ся при пен­тестах внут­ренней инфраструк­туры, поэто­му воз­можность про­вес­ти ее в этот раз была при­ятной неожи­дан­ностью.

Благодарим этичного хакера fr35b1 за интересный райтап.

ПОЛЕЗНЫЕ ССЫЛКИ:

Дима (Kozhuh)

Эксперт в кибербезопасности. Работал в ведущих компаниях занимающихся аналитикой компьютерных угроз. Анонсы новых статей в Телеграме.

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