Опасная уязвимость на государственном сайте

Здравствуйте, дамы и господа.

Сегодня мне бы хотелось рассказать вам о том, как наше государство беспокоится о безопасности наших данных.

Сегодня на Хабре можно наткнуться на интересную статью:

https://habrahabr.ru/post/347760/.

В ней некий пользователь NoraQ рассказывает о вопиющей уязвимости на сайте Федеральной службы по надзору в сфере образования и науки.

В этой статье автор рассказывает о возможности беспрепятственного получения базы данных, содержащей информацию о 14 000 000 документах об образовании и их владельцах, включая их паспортные данные, информацию о учебном учреждении, выдавшем этот документ и пр. Общий объём данных составляет 5 ГБ. При всём при этом, если верить автору, никто  даже не шелохнулся, пока он выкачивал такое количество данных с государственного сайта.

Для тех, кто ещё не испугался, добавлю от себя, что никто не гарантирует, что нельзя с помощью найденной уязвимости подкорректировать данные и, например, добавить себе красный диплом или, развлечения ради, удалить чужой.

На данный момент уязвимость ещё не закрыта, а сам автор побоялся сообщать о ней администрации сайта, в ввиду совершённых им неправомерных действий.

UPD: реестр не работает, скорее всего он не выдержал такого количества хакеров и оказался недоступен. Будем надеяться, что уязвимость в ближайшем будущем закроют

Информационная безопасность IT

1.4K постов25.5K подписчиков

Добавить пост

Правила сообщества

Обязательно к прочтению для авторов:

1. Если вы добавляете пост, утверждающий об утечке данных или наличии дыр в системе, предоставьте ссылку на источники или технически подкованное расследование. Посты из разряда "Какой-то банк слил данные, потому что мне звонили мошенники" будут выноситься в общую ленту.
2. Все вопросы "Как обезопасить сервер\приложение\устройство" - в лигу "Компьютер это просто".

Обязательно к прочтению для всех:

Добавление ссылки разрешено если она не содержит описание коммерческих (платных) продуктов и/или идентификаторов для отслеживания перехода и для доступа не нужен пароль или оплата в т.ч. интернет-ресурсы, каналы (от 3-х тематических видео), блоги, группы, сообщества, СМИ и т.д.


Запрещены политические holy wars.

По решению модератора или администратора сообщества пользователь будет забанен за:

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

2. Публикацию поста/комментария не соответствующего тематике сообщества, в том числе обсуждение администраторов и модераторов сообщества, для этого есть специальное сообщество.

3. За обвинение в киберпреступной деятельности.

4. За нарушение прочих Правил Пикабу.

22
Автор поста оценил этот комментарий

Хорошо работает сайт:

Иллюстрация к комментарию
раскрыть ветку (1)
26
Автор поста оценил этот комментарий
Ну значит, пока я писал данный пост, сайт закрыли
показать ответы
4
Автор поста оценил этот комментарий
и закончат также, как и сантехник )
Это он конечно лихо написал про подкорректировать данные из SELECT запроса
раскрыть ветку (1)
5
Автор поста оценил этот комментарий

Ну, вообще-то, postgre SQL имеет процедурное расширение pgsql, подобное plsql в oracle. Так вот, опытным путём проверено, что в некоторых случаях удаётся получить полный доступ к управлению базой данных под oracle с помощью SQL-инъекции именно на select запросы, используя plsql. Так что, возможно, подобные вещи позволяет и pgsql.

показать ответы
3
Автор поста оценил этот комментарий

Вот бы кто из знающих пояснил для чайника механизм этого дела, - ради защиты, разумеется.


Просто я не могу взять в толк, какого вообще сервер исполняет команды для базы данных. Например, запрос имеет вид "сайт/раздел/категория". На входе этот запрос встречает php скрипт, который вычленяет структурные элементы запроса. И если в скрипте прописано, что, например, категория - это число в пределах от 1  до 100000, то при попытке ввода некорректного запроса, содержащего sql, скрипт просто вернёт ошибку 404.


Или, например, пользователь может передать некие параметры в запросе. Пусть хакер вместо некоего параметра x подставит свой запрос. Однако это будет просто строка, - с чего ей быть выполненной? Сайт вернёт ошибку и всё. Т.е. например, х - номер диплома. Хакер передал серверу запрос, согласно которому х="sql". Скрипт на сервере ищет в базе диплом с номером "sql" и закономерно его не находит, возвращая пользователю отрицательный результат. С чего бы серверу выполнять запрос "sql"?

раскрыть ветку (1)
7
Автор поста оценил этот комментарий

Ответ прост: ошибка разработчика. Просто на входе данные не проверяются на корректность в том же PHP. В эти случае может возникнуть такая ситуация, что вместо числа в запрос попадает вовсе не число, и мы получаем запрос такого вида "SELECT number FROM table WHERE id = 1; второй запрос, или же подзапрос, или вообще скрипт на чём-то вроде PLSQL. "

показать ответы
Автор поста оценил этот комментарий

Ну да - вон он даже админскую запись в таблице нашёл с хэшем. Посидел бы, побрутил - получил бы полный доступ

Но чисто из SELECT запроса на форме сайта? Прошу пример, как, в таком случае)

раскрыть ветку (1)
Автор поста оценил этот комментарий

Рабочий пример я сейчас вряд ли найду, но доказательство того, что это возможно в Oracle можно посмотреть тут https://www.defcon.org/images/defcon-17/dc-17-presentations/... (пример старый, но если поискать поглубже, то можно найти и для современных баз данных подобное решение). Думаю, что подобное можно провернуть и в postgre sql.