Небольшая история о неадекватном заказчике и нахождении уязвимости на сайте за 1 минуту.

image

Не ожидал, что именно эта история станет моей первой статьей на Хабре. Пишу пока горячо!

Все что Вы прочитаете далее — это не призыв к действию или попытка «кого-либо» скомпрометировать.

5 апреля 2020 г.
Увидел сообщение в linkedin: «Добрый день. Ищем разработчика для доработки проекта на yii2… тел: +79… whatsapp»

Написал в whatsapp: «День добрый. Я с linkedin, пришлите ТЗ, если есть.»
В ответ получил огромное сообщение с ссылками на сайт, доску в trello и небольшим ТЗ.

image

Изучил trello. Над проектом работали, если верить доске, как минимум 4 разработчика.

6 апреля 2020 г.

Из-за карантина, по-моему, люди начинают сходить с ума. Вот что я увидел в whatsapp когда проснулся:

image

Все вроде бы ничего, прочитал и забыл. Но что-то внутри не давало покоя, появилось ощущение незавершенности, от которого очень хотелось избавиться.

Ничего не оставалось, кроме как пробраться на проект «обидчика» и избавиться от неприятных ощущений внутри :D.

Отсчет пошел.

00:00

Открываю сайт.

Вижу форму поиска и пытаюсь проверить ранее известную мне SQL инъекцию:

' UNION SELECT
1,group_concat(username,0x7c,password),3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
fRom user-- -

Как и предполагал — не работает, но попробовать стоило.

00:20

На сайте есть возможность зарегистрироваться двумя способами: как Юзер и как Компания.

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

Заполняем поля везде, где позволит фронт строками

SELECT * FROM users;

Просто, чтобы усилить «эффект присутствия» у разработчиков, когда они заглянут в БД.

00:40

После успешной регистрации нас редиректит на страницу профиля Компании.
Открываем пункт меню «Load Documents» (очень удобно, не правда ли :D) и пытаемся загрузить php файл.

image

Сначала я загрузил adminer.php, так как он был под рукой. Файл успешно загрузился и разработчики заботливо подготовили для меня редирект на страницу с ссылкой на файл.

image

Открывался он по ссылке: /upload/certified/15861775921.php и исправно работал.

Это было начало конца!

1:00

Далее загружаем самый простой php-web-shell через ту же форму.

Для начала нужно понять, кто мы и где мы:

pwd && whoami

image

Посмотрим список файлов директории сайта:

ls /var/www/admin/data/www/директория_сайта/

image

Видим стандартную структуру фреймворка Yii2, которую мы там и ожидали.

Получаем доступы к базе данных, которые можно ввести в ранее загруженный adminer.php:

cat /var/www/admin/data/www/директория_сайта/config/db.php

image

На самом деле был удивлен, что такие уязвимости еще существуют. А уж тем более тем, что их можно найти так легко и быстро.

Кстати, это был проект одной компании из ОАЭ, которая занимается поставкой буровых и промышленных изделий для нефтяной, газовой и буровой промышленности.

Меня добавили в черный список в whatsapp после последнего сообщения и рассказать об уязвимости я не смог, поэтому оставил пасхалки на сервере для разработчиков.

Не забывайте делать проверку типов файлов на стороне сервера, да и в целом уделяйте безопасности вашего кода больше внимания!