Привет, %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 тысяч данных об авторизации пользователей:

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 -C id,user_login,user_password,auth_dt --dump
Результат запроса вывода данных логина и пароля
Результат запроса вывода данных логина и пароля

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

 

Движемся дальше

Теперь наша задача состоит в получении индивидуального идентификационного номера (ИИН) пользователя. Сложностей с этим никаких не возникает, поскольку сам ресурс http://service.enu.kz/ предоставляет такую возможность. Авторизовавшись на сайте, в личном кабинете пользователя находим графу ИИН.

Получение ИИН обычного студента
Получение ИИН обычного студента

Получив таким же образом данные администратора nurzhanov_eb, мы можем попасть в Platonus при помощи его логина, пароля и ИИН. Задача администратора — выдавать логины и пароли всем пользователям (преподавателям, учащимся и родителям студентов). Тем самым он имеет доступ к любому пользователю системы в целом.

Функции администратора Platonus
Функции администратора Platonus

Единственное ограничение — администратор не видит пароль пользователя, зато он его может сбросить, после чего сгенерируется отчет о сбросе пароля.

Сброс пароля
Сброс пароля

Отчет о сбросе пароля
Отчет о сбросе пароля

 

Godmode ON

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

Всплывающее окно анкетирования
Всплывающее окно анкетирования

Ссылка, которая перенаправляет пользователя на адрес anketa2.enu.kz, передает параметры логина и пароля в форму авторизации, тем самым оставляя входные данные в сформировавшийся ссылке:

http://anketa2.enu.kz/auth.php?login=makhambetov_ab&password=688a469b584aead68736aa133861f2af&secfield=1&role=ienu

Так как логин нам уже известен, остается расшифровать пароль. Для этого используем сайт hashkiller.co.uk. Результат не заставил себя ждать, и мы получили пароль от аккаунта Platonus.

Результат расшифровки хеша пароля
Результат расшифровки хеша пароля

Если посмотреть со стороны, то эта ошибка не особо явная, так как в любом случае нам нужен владелец аккаунта. Значит, злоумышленнику надо использовать социальную инженерию.

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

 

Цель номер два

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

Наша цель — добыть доступ к базе данных Казахского агротехнического университета им. С. Сейфуллина. Основной сайт университета: http://kazatu.kz. Сайт АИС на субдомене: http://platonus.kazatu.kz/. Также существует некий студенческий портал http://portal.kazatu.kz/.

Образовательный портал
Образовательный портал

Приступаем к предварительному осмотру портала. Замечаем, что на портале есть ссылки на другие АИСы. Привлекает внимание АИС «Приемная комиссия». Переходим туда.

Сайт приемной комиссии
Сайт приемной комиссии

Особое внимание привлекает вкладка «Заявление абитуриента», так как обычно на подобных страницах есть возможность заливать файлы. Если разработчик не позаботился о том, чтобы запретить заливку файлов с исполняемыми расширениями, то это приведет к плачевным результатам.

Форма заливки файлов, shell
Форма заливки файлов, shell

Вопрос заключается лишь в том, как найти раздел, куда заливаются файлы. Существует множество вариантов: сканеры структур сайтов, брутфорсы, вручную, а также обязательный и самый простой метод — проиндексированные страницы в Google.

Результат вывода проиндексированной страницы
Результат вывода проиндексированной страницы

Таким нехитрым запросом мы узнали про существование раздела http://portal.kazatu.kz/abit/foto.

Листинг файлов директорий сервера
Листинг файлов директорий сервера
 

Под колпаком

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

Shell получил данные и вывел их в таблице
Shell получил данные и вывел их в таблице

Теперь в нашем распоряжении все файлы на сервере за исключением тех, к которым наш пользователь (SYSTEM) не имеет доступа. Изучая содержимое директорий, натыкаемся на интересный файл con_bd.php, в котором записаны данные для подключения к БД.

Настройки подключения к БД
Настройки подключения к БД

Установленный phpMyAdmin и знание настроек для подключения к базе дают нам огромные возможности. Переходим в phpMyAdmin по адресу http://portal.kazatu.kz/abit/pma, авторизуемся при помощи добытых ранее логина и пароля.

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

Основная база «Платонус»
Основная база «Платонус»
Таблица с информацией о преподавателях
Таблица с информацией о преподавателях
 

Целевые атаки на преподавательский состав

Иногда бывает целесообразнее производить атаки не на всю систему, а на определенных сотрудников, непосредственно работающих с нею. Для целевых атак я обычно использую bruteforce, phishing и MITM-атаки в локальных сетях университета. Также не стоит недооценивать великую социальную инженерию.

 

Bruteforce

Брутфорс — метод поиска и взлома пароля путем перебора всех теоретически возможных вариантов.

Разработчики студенческих порталов и АИС зачастую забывают про капчу или ограничения по количеству попыток авторизации. Я встречал университеты, где пароли всех преподавателей состояли из четырех цифр, которые они не могли сами изменить. Чтобы сменить пароль, нужно подать заявление на имя декана.

Кстати, подводный камень этих систем в том, что через неделю после сессии портал закрывается и возможность изменить оценку через интерфейс пропадает. И чтобы изменить оценку, преподаватель должен написать заявление проректору и уплатить штраф. Поэтому многие преподаватели, заметив подмену оценок, ничего не предпринимают (а возможно, думают, что раз изменили оценку, значит, так угодно руководству). Обычно данная атака производится по набору широко распространенных паролей.

Полный перебор паролей
Полный перебор паролей

Моя попытка проделать подобное с интранетом (АИС) Казахстанско-Британского технического университета удалась на ура. Существует куча готовых решений для брута по веб-формам, самые популярные из них: THC Hydra, WBF.Gold, Medusa.

 

Phishing

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

Успех многих фишинговых атак крылся в индивидуальном подходе к каждому сотруднику. Порой я менял закладки в браузерах на рабочих компьютерах преподавателей на подготовленный фишинговый сайт. В идеале можно было бы даже подменить файл hosts, чтобы URL был идентичен, но на подобные действия не всегда хватает времени. Иногда я слал письма с подменой почтового адреса от имени руководства (даже если у тебя возникнут сомнения, вряд ли ты станешь задавать вопросы начальству).

Пример фишинговой страницы
Пример фишинговой страницы
 

MITM

Такому методу атаки остаются подвержены многие университеты, использующие одну сеть для выхода в интернет студентов и сотрудников. Любой злоумышленник может произвести атаку и перехватить нужные пакеты, содержащие пароли. Уютные библиотеки с доступом в интернет — одно из моих любимых мест в стенах вузов. Однако, если не знаешь IP компьютера своего преподавателя, придется нелегко, если учесть интенсивность использования сети.

 

Выводы

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

Хотя, вероятно, руководители университетов еще не скоро займутся ИБ своих порталов, так что по-прежнему можно будет использовать уязвимости и манипулировать с оценками. Ну а если тебе не удается найти уязвимости, то необходимо вспомнить старую историю про двух мышек, упавших в молоко. Юзай си, оставайся анонимным и не болтай лишнего ;). Последнее особенно актуально.

 

P. S.

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

Подписаться
Уведомить о
10 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии