API, Bug Bounty, Bug Hunting, Security Assertion Markup Language (SAML), Уязвимости

#33 Bug Bounty v.2 — Security Assertion Markup Language (SAML)

Здравствуйте, дорогие друзья.

Если вы имеете дело с компанией из списка fortune 500, компанией, внедряющей сеть с нулевым уровнем доверия, или компанией, использующей технологию единого входа (SSO), то вы, вероятно, увидите Security Assertion Markup Language (SAML). Согласно Google, единый вход — это “схема аутентификации, которая позволяет пользователю войти с помощью единого идентификатора и пароля в любую из нескольких связанных, но независимых программных систем”.

Security Assertion Markup Language (SAML)

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

Утверждение SAML — это XML-документ, который поставщик идентификационных данных отправляет поставщику услуг, содержащий авторизацию пользователя. Утверждение SAML будет содержать раздел «Тема», который содержит информацию для аутентификации, такую как имя пользователя. Также есть раздел «подпись», который содержит значение подписи, подтверждающее, что раздел «тема» не был изменен. Обратите внимание, что раздел «подпись» содержит информацию для проверки подлинности, и содержит тег под названием “Reference URI”, который указывает на раздел, к которому применяется подпись.

В приведенном ниже SAML-утверждении мы видим, что подпись имеет ссылочный URI “_2fa74dd0-f1dd-0138-2aed-0242ac110033”, обратите внимание, что он совпадает с “Идентификатором утверждения”, что означает, что эта подпись проверяет этот тег и все, что он содержит.

ссылочный URI “_2fa74dd0-f1dd-0138-2aed-0242ac110033”

Также обратите внимание, что на изображении выше есть тег под названием “NameID”, который содержит имя пользователя. Эта информация отправляется поставщику услуг, и, если она будет принята, мы войдем в систему от имени этого пользователя.

saml response id

На этом все. Всем хорошего дня!

Цикл статей по Bug Bounty.