В этой статье я расскажу, как из одного сообщения об ошибке на сайте я случайно получил доступ к внутренней информации компании (и даже немного больше).
Отмечу, что это можно сделать с помощью просто браузера.
Пролог
Веб-сайты иногда выходят из строя.Что происходит. Но того, что описано в статье, быть не должно.
#1
Недавно я зашел на сайт одной компании и увидел (еще раз замечу) вместо этого сообщение об ошибке:Почему сайт упал – отдельный разговор.
Скажу лишь, что это на совести его разработчиков.
Первая ошибка (слишком очевидная, но.
) : Показать сообщения об ошибках.
Да, все знают, что в продакшене нужно отключать отладку.
Но, блин, почему я регулярно вижу сообщения об ошибках в своем браузере?!
#2
Итак, что мы можем узнать из этого сообщения? Ни больше, ни меньше общественный Адрес службы SOAP. Ну да ладно, вряд ли он еще есть в открытом доступе, но на всякий случай копируем его в адресную строку и получаем.список доступных методов.
Методов много, большинство из них явно предназначены для внутреннего использования.
Каждый из них сопровождается описанием запроса и примером ответа.
Многие требуют авторизации (передачи логина и пароля в запросе), но не все.
Выбираем один открытый метод с говорящим названием и конструируем запрос прямо в браузере.
Да, многие критикуют встроенную в Firefox функцию «Веб-разработчик» (и не зря), но для простых задач она вполне годится:
Вторая ошибка : общедоступные услуги.
Почему этот сервер смотрит в мир? Есть ли какие-либо удаленные приложения, использующие его? Хорошо, тогда закрой с авторизацией.
Или хотя бы не давать подробных инструкций к действию.
#3
Посмотрим, что нам ответил сервер.
Для удобства просмотра откроем полученный XML в том же браузере:
Это список сотрудников компании, чуть менее двухсот элементов.
Отлично, давайте искать руководство.
Находим, мягко говоря, не последнего человека в компании (на скриншоте).
Теперь мы знаем его адрес электронной почты и что-то подозрительно похожее на Base64 в элементе SotrumnikPassword. Расшифровываем пароль в любом из множества онлайн декодеров.
Третья ошибка : пароли в открытом виде.
Даже если отбросить вопрос о том, зачем вообще нужно выдавать пароли (хэши), все равно непонятно, почему хотя бы не хэши.
Или разработчики считают, что для этих целей подойдет Base64? Примечание : ошибки №4 и №5 относятся уже не к безопасности сервисов, а к личной безопасности.
Это вина не разработчиков, а пользователя, но я решил их оставить, потому что они а) часть этой истории б) такие же банальные и очевидные для всех, но столь же часто совершаемые.
#4
Давайте посмотрим, что можно сделать с полученной информацией.Попробуем получить доступ к указанной почте.
Проверяем домен в первом доступном сервисе просмотра DNS-записей.
Судя по МХ, это GMail. Что ж, попробуем авторизоваться по расшифрованному паролю:
Вы не удивитесь, если я скажу, что пароль правильный? Четвертая ошибка : один пароль для разных учетных записей.
Не будет иметь значения, какой он длины и сколько в нем букв разного регистра и цифр, если он протечет по вашей или чужой (как в данном случае) глупости.
#5
Пароль был правильный, но Google стоит на страже безопасности пользователя — видит, что он зашёл с другого IP и требует дополнительного подтверждения:Но последний вариант, который он предлагает, выглядит слишком простым.
Гугл, ты серьёзно?
В данном случае фамилия была достаточно редкой, поэтому даже название компании указывать не пришлось.
Попробуем ввести найденный номер телефона:
Подходит. Открывается корпоративный GMail (и соответственно Google Tasks, Google Drive и другие сервисы).
Пятая ошибка : использование легко узнаваемой информации (в данном случае номера телефона, известного другим людям и Интернету) в качестве дополнительного фактора авторизации/контрольного вопроса.
Сложно ли узнать девичью фамилию матери или дату ее рождения? Так почему же многие сервисы и банки до сих пор используют их по умолчанию?
Эпилог
Я написал письмо этому человеку о необходимости сменить пароль.Также принято сообщать об уязвимостях разработчикам и давать им время на их исправление.
Но.
Перечитайте ошибки №1—№3. Надо им сообщить, что они всем показывают сообщения о сбоях, сервера, извините, голые.
Они смотрят в Интернете и сообщают пароли первому встречному, возможно, не открытым текстом? Действительно ли нужно напоминать об этом коммерческим разработчикам, стремящимся к корпоративному уровню? О вещах настолько простых и очевидных, что, не зная их, даже на работу брать не стоит? Надеюсь, они прочитают это и узнают себя.
Я хочу сказать им только одно: «Ребята, уходите из профессии!» Обо мне : не разработчик, не специалист по безопасности и вообще не айтишник.
Продвинутый пользователь Интернета, скажем так.
Теги: #мыло #ERP-системы #безопасность веб-приложений #информационная безопасность
-
Групповая Психотерапия
19 Oct, 24 -
Копирование Сознания
19 Oct, 24 -
Комментировать Или Не Комментировать?
19 Oct, 24 -
Написание Обработчика Ошибок Для Phpredis
19 Oct, 24