Не ожидал, что именно эта история станет моей первой статьей на Хабре. Пишу пока горячо!
Все что Вы прочитаете далее — это не призыв к действию или попытка «кого-либо» скомпрометировать.
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 после последнего сообщения и рассказать об уязвимости я не смог, поэтому оставил пасхалки на сервере для разработчиков.
Не забывайте делать проверку типов файлов на стороне сервера, да и в целом уделяйте безопасности вашего кода больше внимания!
ZEvS_Poisk
Спасибо! 15 минут не могу проржаться, истерика…
nochkin
Я после этого даже выдохнул легче — не только у меня такой народ попадается среди клиентов.
Только, к сожалению, вирус тут не сильно влияет, так как в «мирное время» такие тоже есть. И это делает наш дорогой интернет особенно загадочным и забавным.