Сегодня мы расскажем о пентесте крупной розничной компании. Нам предстояло не только проникнуть во внутреннюю сеть и захватить домен, но и добраться до критически важных систем: бухгалтерии на базе 1С, серверов антивирусной защиты, инфраструктуры резервного копирования и виртуализации, а также корпоративного ПО для продавцов.
Об инфраструктуре мы ничего не знали — на руках была лишь маска домена *.domain.com. Дополнительной преградой стал WAF, который коллеги незадолго до этого внедрили и решили проверить на прочность в боевых условиях.
Мы тестировали инфраструктуру ретейл‑компании с развитой экосистемой сервисов для продавцов. В дополнение к привычным задачам нужно было проникнуть во внутреннюю сеть и скомпрометировать домен — нам предстояло реализовать несколько отдельных сценариев недопустимых событий. В частности, требовалось получить контроль над системами бухгалтерии, резервного копирования, антивирусной защиты и виртуализации, а также доступ к корпоративному приложению, которое еще находилось в разработке, и связанным с ним сервисам личных кабинетов продавцов.
Мы тестировали систему по модели черного ящика: выступали в роли внешнего нарушителя, атакующего через интернет. У нас не было ни учетных записей, ни заранее выданных доступов, ни сведений об устройстве инфраструктуры. При этом WAF работал в активном режиме и наши адреса в исключения не добавляли.
По нашей оценке, пентест оказался средним по сложности, хотя по ходу работы нашлось несколько неожиданных решений, которые помогли развить атаку. Много времени заняли рутинные операции, которые приходилось выполнять через прокси. Но больше всего помогло понимание бизнес‑процессов компании: благодаря ему мы находили перспективные направления атаки и выбирали следующие шаги.
ИНН вместо пароля

После стандартного активного рекона и пассивного сбора vhost, поддоменов и прочего мы столкнулись с блокировками WAF. Поэтому решили перейти к более детальному анализу вручную.
При ручном анализе мы подробно изучили бизнес‑процессы и нашли информацию о том, как формируют пароли для корпоративных учетных записей. Эта информация содержалась в одной из презентаций для новых «консультантов», выложенной в открытый доступ на облачном диске.


Затем мы нашли корпоративные адреса электронной почты всех сотрудников организации в их карточках.

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

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

Точно так же мы вошли еще в 3–4 почтовых ящика, чтобы расширить охват и изучить роли и права конкретных сотрудников в ИТ‑инфраструктуре.
info
В современных системах часто встречается SSO со множеством связанных сервисов. Наша идея была в том, чтобы получить любую легитимную учетку, а затем посмотреть, к каким веб‑приложениям она дает доступ через SSO. Сейчас многие вайбкодят, так что шанс наткнуться на небезопасный веб довольно высок. Но, независимо от качества кода, мы хотели с помощью SSO попасть в закрытые разделы приложений, чтобы расширить поверхность атаки.
Затем мы нашли один из dev-стендов за SSO-авторизацией и успешно вошли с помощью связки «OSINT mindset + ИНН‑пароль». После этого принялись изучать возможности веб‑ресурса.
Мы нашли несколько похожих dev-стендов на разных доменах и иногда использовали другие ресурсы для дальнейшего продвижения. Но обо всем по порядку.
От LINQ до SYSTEM

При анализе этого веб‑ресурса нашлась конечная точка (ее FQDN изменен):
https://development.domain.com/endpoint.aspx?pageName=DataSources.Item

Настоящий подарок для пентестера! При грамотном реконе и правильном подходе такие вещи встречаются нередко. Мы поняли, что перед нами LINQ-запросы на C#.

1 час назад
3






English (US) ·
Russian (RU) ·