Confluence — не прос­то кор­поратив­ная база зна­ний, а еще и удоб­ная точ­ка опо­ры для хакера в орга­низа­ции. В этой статье мы раз­берем акту­аль­ный при­мер «ата­ки у водопоя» с внед­рени­ем JS-бэк­дора в основную фор­му аутен­тифика­ции Confluence.

Эта статья выш­ла в свет в том чис­ле бла­года­ря Ива­ну Балашо­ву — идей­ному вдох­новите­лю абь­юза Custom HTML в Confluence.

warning

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

 

Легитимные возможности на вооружении у хакера

Знал ли ты, что фун­кция добав­ления поль­зователь­ско­го HTML (Custom HTML) в нас­трой­ках адми­нис­тра­тора впер­вые появи­лась в вер­сии Confluence 2.1.5, выпущен­ной 16 мар­та 2006 года?

В при­меча­ниях к это­му выпус­ку было пря­мо ука­зано:

Administrators can insert custom HTML on every Confluence page, see Administration, Custom HTML.

Ка­залось бы, что тут мог­ло пой­ти не так?.. Получив пра­ва адми­нис­тра­тора в Confluence, мы не толь­ко ста­новим­ся обла­дате­лями цен­ной информа­ции из кор­поратив­ной базы зна­ний, но и откры­ваем для себя широкие воз­можнос­ти горизон­таль­ного переме­щения (lateral movement). Confluence — узло­вая точ­ка, к которой ежед­невно обра­щает­ся мно­жес­тво сот­рудни­ков. Внед­рив JS-бэк­дор в стра­ницу аутен­тифика­ции, мы получа­ем дос­туп к акту­аль­ным домен­ным учет­кам (при интегра­ции Confluence с Active Directory). В ито­ге ком­про­мета­ция одно­го веб‑сер­виса прев­раща­ется в трам­плин для ата­ки на весь домен орга­низа­ции.

 

Подготовительный этап

 

Получаем доступ к админ-панели

У нас есть два пути попасть в админ‑панель.

  1. Поп­робовать най­ти и про­экс­плу­ати­ровать уяз­вимость (CVE) в Confluence.
  2. За­фишить поль­зовате­ля из груп­пы confluence-administrators.

Эксплуатируем CVE-2022-26134

Экс­плу­ата­ция CVE-2022-26134 пре­дель­но прос­та: дос­таточ­но отпра­вить все­го один HTTP-зап­рос на сер­вер, что­бы добавить нового поль­зовате­ля в груп­пу confluence-administrators.

Ло­гиним­ся с новосоз­данной админ­ской учет­кой.

Ву­аля! У нас появил­ся дос­туп к основным нас­трой­кам сер­вера Confluence.

Ес­ли Confluence пол­ностью про­пат­чен, мож­но поп­робовать получить админ­ский дос­туп дру­гими спо­соба­ми — нап­ример, с помощью фишин­га.

Фишим с помощью Evilginx2

Аль­тер­нативой клас­сичес­кому инс­тру­мен­ту Gophish может быть Evilginx2. Ниже при­мер автор­ско­го Evilginx2-фиш­лета для работы с Confluence.

Та­кой фиш­лет поз­волит перех­ватить не толь­ко логин и пароль жер­твы, но и ее валид­ный сес­сион­ный токен.

Даль­ше мож­но про­дол­жить работу от име­ни зафишен­ной учет­ки или соз­дать отдель­ную админ­скую (нап­ример, backup-adm).

 

Создаем нового пользователя

Пер­вое, что нуж­но сде­лать пос­ле получе­ния дос­тупа к админ‑панели (неваж­но, каким спо­собом), — соз­дать новую учет­ку в груп­пе confluence-users. Для это­го жмем на шес­терен­ку в пра­вом вер­хнем углу и выбира­ем пункт «Управле­ние поль­зовате­лями».

Ес­ли нуж­но, сно­ва вво­дим пароль от исполь­зуемой админ­ской учет­ки.

Пе­рехо­дим в раз­дел «Добавить поль­зовате­лей», запол­няем все поля и нажима­ем кноп­ку «Добавить».

Про­веря­ем, что поль­зователь успешно добав­лен.

Здесь воз­ника­ет законо­мер­ный воп­рос: зачем нам вооб­ще соз­давать отдель­ного поль­зовате­ля? Все упи­рает­ся в механизм эксфиль­тра­ции дан­ных. Внед­ренный JS-бэк­дор дол­жен не толь­ко перех­ватить учет­ные дан­ные, но и передать их нам. Пря­мая отправ­ка на внеш­ний сер­вер (нап­ример, через Telegram Bot API) была бы иде­аль­ной, но полити­ки CORS в сов­ремен­ных бра­узе­рах и кор­поратив­ные фай­рво­лы поч­ти гаран­тирован­но заб­локиру­ют такой зап­рос.

Что­бы обой­ти эти огра­ниче­ния, нуж­но отпра­вить дан­ные на источник, которо­му бра­узер по умол­чанию доверя­ет. А что может быть более доверен­ным источни­ком, чем сам сер­вер Confluence?

 

Создаем приватную вики-страницу

На прош­лом шаге мы соз­дали новую учет­ку backup, мимик­риру­ющую под тех­ничес­кую, а теперь решим, куда JS-бэк­дор будет сли­вать перех­вачен­ные логины и пароли. Пусть это будет при­ват­ная вики‑стра­ница, при­над­лежащая нашей новой «тех­ничес­кой» учет­ке. Поэто­му логиним­ся под ней и идем соз­давать новую замет­ку.

Продолжение доступно только участникам

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии