Роковая симфония

Довелось мне как-то проверять на прочность сервис по доставке товаров. Глаза горели, а руки были готовы ухватиться за что-нибудь интересное. Как показывает практика — нет ничего совершенного. И стоит лишь нащупать ту самую нить, которая выведет тебя в нужном направлении.

Как и всегда нить была найдена. Процесс запущен. После начала тестирования я обнаружил замечательный js-файлик, который позволил получить информацию обо всех конечных точках приложения. Ниже можно видеть обработанный код, для лучшего восприятия. 

Откровенно говоря, такая картина мало поправима — попытаемся усилить обфускацию кода, и тем самым выстрелим себе в ногу, по-просту замедлив приложение. Советую изначально выбирать другую архитектуру приложения. Однако здесь имеем, что имеем. Без каких-либо фазеров я составил карту приложения, сэкономив при этом уйму времени.

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

Видим, что возвращается localhost. А что если мы просто попробуем дописать к нашему url «_profile»?Бинго, друзья. Перед нами отладочный режим symphony framework. Ребята повесили замок, но оставили записку, что ключик под ковриком. 

А т.к. syphony — штука крайне ответственная, и без устали логирующая абсолютно всю информацию, можем быть уверены, что обнаружим что-нибудь достойное нашего внимания. Так и произошло. После недолгих скитаний мною было найдено то, ради чего мы с вами здесь сегодня собрались! Пароли в открытом виде, господа.

Пробуем подключиться к админке. УСПЕХ!!!!

Погуляв немного по админке, находим xss.
Т.к атрибут href может создавать контекст, который позволит нам использовать псевдопротокол javascript, то используем его, чтобы выполнить скрипт. В нашем случае вызвать функцию alert.
Без шалостей никуда. Выставим небольшой счет на оплату, просто потому что могу).
Это конечно все интересно, но мы жаждим большего. Вернемся в наш отладочный режим и поищем еще что-нибудь интересное. И как говориться, мы искали серебро, а нашли золото.Phpinfo
Это позволило получить строку подключения к базе данных postgresql и smtp серверу, которая содержала логин и пароль. 
Посмотрим, что у нас по портам.
Ну что же, кажется это судьба!!!! Пробуем подключиться.

psql -U<USERNAME> -h<HOSTNAME> -d<DB_NAME>

Посмотрим, какие права имеет наш пользователь. Для этого вводим команду «\du+»
Что можно сказать — слабоумие и отвага!!!!А что это значит? А то, что имея привилегированного пользователя, можно выполнить команды в OS.Для этого пишем следующий запрос:DROP TABLE IF EXISTS test;CREATE TABLE test(t text);COPY test FROM PROGRAM ‘id’;SELECT * FROM testDROP TABLE IF EXISTS test;

Как видим, команда успешно выполнилась. К сожалению, внутренние работы Заказчик не захотел согласовывать. И на этом наши работы были завершены. 

Хочу отметить, что такая простая ошибка, в виде включенного отладочного режима, может привести к катастрофическим последствиям. И хорошо, что данную ошибку обнаружила именно наша команда, что позволило Заказчику сохранить деньги и самое главное нервы.

Спасибо, что дочитали до конца, надеюсь вам понравилось!!!!

Получить консультацию

Вы можете связаться с нами любым удобным способом :