Небольшая история о неадекватном заказчике и нахождении уязвимости на сайте за 1 минуту.
Не ожидал, что именно эта история станет моей первой статьей на Хабре. Пишу пока горячо!
Все что Вы прочитаете далее — это не призыв к действию или попытка кого — либо скомпрометировать.
5 апреля 2020 г.
Увидел сообщение в linkedin: «Добрый день. Ищем разработчика для доработки проекта на yii2… тел: +79… whatsapp»
Написал в whatsapp: «День добрый. Я с linkedin, пришлите ТЗ, если есть.»
В ответ получил огромное сообщение с ссылками на сайт, доску в trello и небольшим ТЗ.
Изучил trello. Над проектом работали, если верить доске, как минимум 4 разработчика.
6 апреля 2020 г.
Из-за карантина, по-моему, люди начинают сходить с ума. Вот что я увидел в whatsapp когда проснулся:
Все вроде бы ничего, прочитал и забыл. Но что — то внутри не давало покоя, появилось ощущение незавершенности, от которого очень хотелось избавиться.
Ничего не оставалось, кроме как пробраться на проект «обидчика» и избавиться от неприятных ощущений внутри :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 файл.
Сначала я загрузил adminer.php, так как он был под рукой. Файл успешно загрузился и разработчики заботливо подготовили для меня редирект на страницу с ссылкой на файл.
Открывался он по ссылке: /upload/certified/15861775921.php
и исправно работал.
Это было начало конца!
1:00
Далее загружаем самый простой php-web-shell через ту же форму.
Для начала нужно понять, кто мы и где мы:
pwd && whoami
Посмотрим список файлов директории сайта:
ls /var/www/admin/data/www/директория_сайта/
Видим стандартную структуру фреймворка Yii2, которую мы там и ожидали.
Получаем доступы к базе данных, которые можно ввести в ранее загруженный adminer.php:
cat /var/www/admin/data/www/директория_сайта/config/db.php
На самом деле был удивлен, что такие уязвимости еще существуют. А уж тем более тем, что их можно найти так легко и быстро.
Кстати, это был проект одной компании из ОАЭ, которая занимается поставкой буровых и промышленных изделий для нефтяной, газовой и буровой промышленности.
Меня добавили в черный список в whatsapp после последнего сообщения и рассказать об уязвимости я не смог, поэтому оставил пасхалки на сервере для разработчиков.
Не забывайте делать проверку типов файлов на стороне сервера, да и в целом уделяйте безопасности вашего кода больше внимания!
Автор: Никита