Хотел написать заметку по мотивам конкурса, но получилась статья )
И так, имеем веб-приложение - корпоративный портал.
В портале тысячи пользователей, все сотрудники организации (или почти все). Внутри портала корпоративные чаты, личные чаты, задачи, планы, такой отечественный аналог Jira и Confluence.
Главная страница представляет из себя форму логина:
Также есть форма восстановления пароля, в которой можно перебрать имена пользователей. Но кроме юзеров admin и test там никого перебрать не удалось.
Никакие известные сплоиты не сработали, уже найденные пароли не подошли, брутфорс тоже дело безнадёжное.
Хотелось уже оставить это приложение, как не пробитое, но я решил поискать мобильные приложения Заказчика и нашел!
У компании имеется собственное мобильное приложение для Андроид, существующее исключительно для сотрудников компании.
В приложении, как и в веб-портале, есть личные и общие чаты, новости компании и еще какой-то функционал.
Главный экран приложения выглядит так:
"Забыли пароль?" выглядит так:
Как связаны веб-портал Битрикс24 и это приложение?
Я пробросил трафик приложение через Burp и увидел, что запросы от мобильного приложения летят как раз в портал, в котором есть REST API.
Это повод для оптимизма )
Что имеем на данный момент:
1. Нужно знать ФИО;
2. Нужно знать дату рождения;
3. Нужно знать пароль;
4. Если не знаем пароль, нужно знать номер телефона.
Пока из всех четырех пунктов мы не знаем ничего.
Попробуем поковырять код приложения (для этого можно использовать jadx). Внутри найдем номер телефона:
Как видите, кроме номера телефона еще был найден пароль, но он никуда не залетел.
Пробуем ввести номер телефона в форму восстановления пароля в мобильном приложении и получаем такую картинку:
То есть нам надо ввести 4 каких-то неизвестных цифры. Это всего-то 10000 вариантов.
Напоминаю, что весь трафик идет через Burp, поэтому сразу отправляю в Intruder и перебираю код.
Код подобрался, никаких ограничений на перебор нет.
Вводим код и после этого можем установить новый пароль. К сожалению скрин с установкой нового пароля у меня не под рукой, но надеюсь вы мне верите.
Но далее загвоздка. Владельца номера телефона на тот момент я не установил, его ФИО не знаю. Получается, что просто кому-то пароль сменил и на этом всё.
На данном этапе надо:
1. Найти достоверно сотрудника компании;
2. Получить его ФИО и дату рождения;
3. Получить его номер телефона;
4. Сбросить пароль.
Тогда мы сможем залогиниться в мобильное приложение.
Чтож, приступаем к ОСИНТу )
Поиск группы компании в ВК длился пару минут. Среди подписчиков стал перебирать по одному и смотреть, у кого в профиле указаны максимально полные данные.
Нашелся такой сотрудник (по понятным соображениям я скрываю информацию о нем):
По скриншоту видно, что указана его полная дата рождения и номер телефона без последней цифры.
Также есть его имя и фамилия, но нет отчества.
Уже что-то. А точнее почти всё!
Осталось узнать отчество, а последню цифру номера телефона я подобрал руками прямо в интерфейсе приложения.
Дело в том, что приложение сообщало о не правильном номере в форме восстановления пароля.
Как узнать отчество? В друзьях ВК я не нашел его отца, хотя нашел братьев и сестер.
По братьям и сестрам тоже не понятно, родные или нет, поэтому я пошел другим путем.
На его странице нашел несколько занятных фоток - он любитель рыбалки. Настолько любитель, что явно спортсмен.
Быстрый гугл по соревнованиям по спортивной рыбалке в рамках региона проживания цели дал результат.
Я нашел таблицу соревнований, в которой были указаны полные данные этого парня, включая отчество (верифицировал по дате рождения).
(я хотел тут вставить скрин с таблицей, но смысла нет, так как там все замазано)
Теперь все данные на руках, сбрасываем ему пароль, и логинимся в приложении:
В его профиле ничего интересного, рядовой сотрудник.
Но напомню, что мобилка работает с веб-порталом через api и трафик идет через Burp.
Максимально потыкал приложение, собрал эндпоинты апи и нашел несколько IDOR-ов.
Проще говоря, я смог собрать достаточно полную информацию о всех юзерах приложения, включая их логины, номера телефонов, фио, и многое другое.
Забегая далеко вперед, там было найдено несколько прикольных уязвимостей, например, позволяющих добавить себя в любой чат, в который тебя не приглашали.
Но не об этом речь, наша цель - выполнение команд на сервере.
Так как были найдены логины и номера телефонов, теперь можно попробовать сбросить пароль для юзера (желательно привилегированного), от которого можно зайти веб-портал.
От текущего юзера я почему-то не смог залониться в веб.
Нашел нужного юзера, сбросил ему пароль (вышеуказанным способом) и залогинился в портал через веб.
Внутри портала:
Дальше все оказалось совсем просто.
Поиском ищем админов портала, смотрим их профили, берем их номера телефонов, логины (их так просто не увидешь, надо пошерстить код веб-страниц), сбрасываем пароли, и заходим в портал от имени админа.
Что дальше?
Думаю, что мало для кого секрет, что внутри битрикса есть интерфейсы, которые позволяют выполнять произвольный код на PHP совершенно легально.
Таким образом и было пробито это веб-приложение через мобилку. Мобилка не входила в scope, но оказалась точкой входа внутрь сети.
Спасибо за внимание! )
И так, имеем веб-приложение - корпоративный портал.
В портале тысячи пользователей, все сотрудники организации (или почти все). Внутри портала корпоративные чаты, личные чаты, задачи, планы, такой отечественный аналог Jira и Confluence.
Главная страница представляет из себя форму логина:
Также есть форма восстановления пароля, в которой можно перебрать имена пользователей. Но кроме юзеров admin и test там никого перебрать не удалось.
Никакие известные сплоиты не сработали, уже найденные пароли не подошли, брутфорс тоже дело безнадёжное.
Хотелось уже оставить это приложение, как не пробитое, но я решил поискать мобильные приложения Заказчика и нашел!
У компании имеется собственное мобильное приложение для Андроид, существующее исключительно для сотрудников компании.
В приложении, как и в веб-портале, есть личные и общие чаты, новости компании и еще какой-то функционал.
Главный экран приложения выглядит так:
"Забыли пароль?" выглядит так:
Как связаны веб-портал Битрикс24 и это приложение?
Я пробросил трафик приложение через Burp и увидел, что запросы от мобильного приложения летят как раз в портал, в котором есть REST API.
Это повод для оптимизма )
Что имеем на данный момент:
1. Нужно знать ФИО;
2. Нужно знать дату рождения;
3. Нужно знать пароль;
4. Если не знаем пароль, нужно знать номер телефона.
Пока из всех четырех пунктов мы не знаем ничего.
Попробуем поковырять код приложения (для этого можно использовать jadx). Внутри найдем номер телефона:
Как видите, кроме номера телефона еще был найден пароль, но он никуда не залетел.
Пробуем ввести номер телефона в форму восстановления пароля в мобильном приложении и получаем такую картинку:
То есть нам надо ввести 4 каких-то неизвестных цифры. Это всего-то 10000 вариантов.
Напоминаю, что весь трафик идет через Burp, поэтому сразу отправляю в Intruder и перебираю код.
Код подобрался, никаких ограничений на перебор нет.
Вводим код и после этого можем установить новый пароль. К сожалению скрин с установкой нового пароля у меня не под рукой, но надеюсь вы мне верите.
Но далее загвоздка. Владельца номера телефона на тот момент я не установил, его ФИО не знаю. Получается, что просто кому-то пароль сменил и на этом всё.
На данном этапе надо:
1. Найти достоверно сотрудника компании;
2. Получить его ФИО и дату рождения;
3. Получить его номер телефона;
4. Сбросить пароль.
Тогда мы сможем залогиниться в мобильное приложение.
Чтож, приступаем к ОСИНТу )
Поиск группы компании в ВК длился пару минут. Среди подписчиков стал перебирать по одному и смотреть, у кого в профиле указаны максимально полные данные.
Нашелся такой сотрудник (по понятным соображениям я скрываю информацию о нем):
По скриншоту видно, что указана его полная дата рождения и номер телефона без последней цифры.
Также есть его имя и фамилия, но нет отчества.
Уже что-то. А точнее почти всё!
Осталось узнать отчество, а последню цифру номера телефона я подобрал руками прямо в интерфейсе приложения.
Дело в том, что приложение сообщало о не правильном номере в форме восстановления пароля.
Как узнать отчество? В друзьях ВК я не нашел его отца, хотя нашел братьев и сестер.
По братьям и сестрам тоже не понятно, родные или нет, поэтому я пошел другим путем.
На его странице нашел несколько занятных фоток - он любитель рыбалки. Настолько любитель, что явно спортсмен.
Быстрый гугл по соревнованиям по спортивной рыбалке в рамках региона проживания цели дал результат.
Я нашел таблицу соревнований, в которой были указаны полные данные этого парня, включая отчество (верифицировал по дате рождения).
(я хотел тут вставить скрин с таблицей, но смысла нет, так как там все замазано)
Теперь все данные на руках, сбрасываем ему пароль, и логинимся в приложении:
В его профиле ничего интересного, рядовой сотрудник.
Но напомню, что мобилка работает с веб-порталом через api и трафик идет через Burp.
Максимально потыкал приложение, собрал эндпоинты апи и нашел несколько IDOR-ов.
Проще говоря, я смог собрать достаточно полную информацию о всех юзерах приложения, включая их логины, номера телефонов, фио, и многое другое.
Забегая далеко вперед, там было найдено несколько прикольных уязвимостей, например, позволяющих добавить себя в любой чат, в который тебя не приглашали.
Но не об этом речь, наша цель - выполнение команд на сервере.
Так как были найдены логины и номера телефонов, теперь можно попробовать сбросить пароль для юзера (желательно привилегированного), от которого можно зайти веб-портал.
От текущего юзера я почему-то не смог залониться в веб.
Нашел нужного юзера, сбросил ему пароль (вышеуказанным способом) и залогинился в портал через веб.
Внутри портала:
Дальше все оказалось совсем просто.
Поиском ищем админов портала, смотрим их профили, берем их номера телефонов, логины (их так просто не увидешь, надо пошерстить код веб-страниц), сбрасываем пароли, и заходим в портал от имени админа.
Что дальше?
Думаю, что мало для кого секрет, что внутри битрикса есть интерфейсы, которые позволяют выполнять произвольный код на PHP совершенно легально.
Таким образом и было пробито это веб-приложение через мобилку. Мобилка не входила в scope, но оказалась точкой входа внутрь сети.
Спасибо за внимание! )
Вложения
Последнее редактирование: