- Блог о технологиях .NET
- 18 мая 2012 г.
- Windows Live SDK: Аутентификация пользователя на сайте
- Идентификатор Windows Live ID, который возвращает другой токен пользователя для одного и того же пользователя в разных приложениях?
- Windows Tokens
- Настройка тестового стенда
- Token
- Windows Live — что это за программа и нужна ли она?
- Добавить комментарий Отменить ответ
Блог о технологиях .NET
18 мая 2012 г.
Windows Live SDK: Аутентификация пользователя на сайте
Здравствуйте друзья! Сегодня я бы хотел вам рассказть о наборе инструментов, который позволяет разработчикам легко организовать взаимодействие их приложений с сервисами семейства Windows Live от компании Microsoft.
Ни для кого не секрет, что сегодня использование внешних сервисов для аутентификации пользователей на сайтах приобрело огромную популярность в Интернете. Как правило, в качетсве внешних сервисов выступают социальные сети, такие как Facebook и Twitter. Согласитесь, это удобно, когда вам не нужно помнить свой логин и пароль на каждом сайте, а достаточно запомнить один пароль, например для Facebook. Поэтому большинство уважающих себя сайтов, считают за правило предоставить своим посетителям возможность быстрой регистрации и входа.
Провайдеры внешних сервисов аутентификации (в первую очередь конечно социальные сети) предоставляют широкий набор средств (API) для использования их возможностей извне.
Не осталась в стороне и компания Microsoft. И хотя сервисы Windows Live нельзя назвать социальной сетью, это достаточно распостраненная система аутентификации для всех, кто так или иначе взаидоействует с ресурсами компании Microsoft.
В 2012 году Microsoft выпускает первые версии новой операционной системы Windows 8 и анонсирует новую концепцию разработки приложений для платформы Windows – Metro приложения написанные при помощи HTML и JavaScript.
В связи с этим Майкрософт также выпускает новый пакет средств (SDK) для работы с сервисами Windows Live из Metro приложений при помощи JavaScript. Надо отметить, что сервисы Windows Live существует достаточно давно, и, конечно, раньше тоже существовали средства для работы с ними. Однако, назвать их удобными и понятными явно было нельзя. Поэтому новый SDK приятно всех удивил своей простотой и схожестью с похожимы интерфейсами Twitter и Facebook.
Сегодня, я хочу вам показать каким образом можно интегрировать аутетификацию через Windows Live в ваш ASP.NET MVC сайт.
Первым делом необходимо зарегистрировать ваше приложение в центре разработки Windows Live по следующей ссылке: https://manage.dev.live.com/Applications/Index
Необходимо ввести название приложения, адрес возврата ответа от сервиса аутентификации (доменное имя вашего сайта) и скопировать значение “Client ID”. Примеры форм находятся на скриншотах ниже:
Создадим стандартный сайт шаблона ASP.NET MVC Framework и перейдем в представление Index.cshtml.
Для использования Windows Live JavaScript SDK необходимо разместить на странице ссылку на следующий скрипт:
Далее нам необходимо кнопка, при нажатии на которую пользователь бы начинал процедуру аутентификации через Windows Live Connect. Тут у вас есть выбор, можно создать свой элемент разметки и привязать функции входа к какому-либо событию этого элемента, или попросить Windows Live SDK создать для нас красивую “фирменную” кнопку входа. Мы поступим вторым способом. Для этого в разметку страницы необходимо добавить следующий фрагмент кода:
В результате на странице будет отображена кнопка следующего вида:
При нажатии на кнопку будет открываться диалоговое окно, где пользователь сможет ввести свой логин и пароль в сиcтеме Windows Live. На кнопке изображена надпись “Sign In”, когда пользователь неавторизированный, и “Sign Out”, когда пользователь уже прошел аутентификацию.
Все что нам осталось — узнать когда пользователь успешно пройдет атентификацию и мы сможем работать с его данными из сервиса Windows Live. Для этого определим JavaScript функцию, которая будет выполнена после того как пользователь успешно авторизируется:
Теперь мы можем осуществлять запросы к сервисам Windows LIve. Для примера давате загрузим имена и почтовые ящики контактов из почты HotMail. Для этого необходимо сначала модифицировать функцию инициализации среды Windows Live SDK:
Если вы заметили, я добавил еще одну перменную в поле “scope”. В этом поле хранится список ресурсов к которым вы хотите получить доступ. При аутентификации сервис конекта Windows Live покажет пользователю какую информацию запрашивает ваш сайт и спросит его дает ли он свое согласие на использование его персональных данных.
После получения подтверждения пользователя мы можем еще раз обратиться к сервису Windows Live и запросить у него список контактов почты HotMail пользователя:
Данная функцию выведет имя контакта и его почтовый ящик в список на странице. Список – это элемент разметки “ul” с идентификатором “contacts”.
Идентификатор Windows Live ID, который возвращает другой токен пользователя для одного и того же пользователя в разных приложениях?
Windows Live ID, похоже, возвращает другой токен пользователя для одного и того же пользователя в разных приложениях.
Предполагается, что Windows Live ID (я думаю) дает мне уникальный токен пользователя.
Я хочу использовать это для идентификации пользователя.
Мое приложение состоит из 2 частей. 1 = ASP.NET webapp. 2 — это WPF.
(Та же таблица DB/User)
Проблема:
Когда пользователь входит в ASP.Net, я получаю UserToken = 00202009399.
Когда пользователь входит в WPF — я получаю UserToken = 00829909233.
Вопрос:
- Это глик? Если да — то, что
работать вокруг?
(Если это запланированное поведение — я могу только думать, что MS хочет разделить токены пользователей на одно приложение или домен)
- Есть ли настройка для Tell LiveID
что эти 2 разных приложения (WPf &
ASP.Net) от одного и того же
Orginization/Owner/Azure Account?
Я знаю, что этот ответ запоздал в игре. Windows Live ID предоставляет уникальный идентификатор для каждого пользователя Windows Live, который подписывается на ваш сайт. Он разработан таким образом, чтобы обеспечить конфиденциальность и безопасность пользователей с одного сайта на другой.
Есть ли параметр, чтобы сообщить LiveID, что эти 2 разных приложения (WPf и ASP.Net) принадлежат к одной учетной записи Orginization/Owner/Azure?
Если вы хотите иметь тот же идентификатор, вам придется использовать тот же идентификатор приложения. Если вы хотите сохранить часть приложения, которое вы подписываете, вы можете использовать параметр контекста, чтобы установить путь для возврата тоже только требование состоит в том, что они должны быть в том же Домене, который вы установили при регистрации своего приложения.
Windows Tokens
Эксперт OTUS — Александр Колесников поделился с нами полезной статьёй, которую написал специально для студентов курса «Пентест. Практика тестирования на проникновение».
Предыдущая статья рассказывала о том, как эксплойты используют технику копирования токена для повышения привилегий. В этой статье мы попытаемся рассмотреть еще одну технику модификации токенов, а также постараемся узнать, как задаются привилегии, которые помещаются в Primary Token.
Все примеры в статье имеют ознакомительный характер, и если вы захотите повторить эксперименты, то используйте виртуальную машину, так как некоторые из действий могут вывести вашу рабочую машину из строя. Все эксперименты выполняются только для исследовательских задач.
Настройка тестового стенда
Для экспериментов подойдет пара виртуальных машин, которые работают по NAT сети. Две потому что нет другого способа проводить ядерную отладку операционной системы. А NAT сеть, чтобы были отладочные символы, с ними проще и быстрее искать данные без исходного кода. Настройка отладчика есть на просторах сети, но все же ниже будет пару строк как это делается для операционной системы Windows 10 1909.
1. Устанавливаем отладчик. Для операционной системы Windows есть только Windbg Preview, установим его:
2. Переводим целевую операционную систему в отладочный режим:
Перезагружаем систему. И открываем вторую машину, которая будет содержать отладчик:
После перезагрузки системы:
Так как это Windbg Preview все настройки по загрузке и хранению отладочных символов, были выполнены автоматически. Нам остается только дождаться когда они будут полностью загружены. После этого начинаем наше исследование.
Token
Официальная документация гласит, что основные данные, которые существуют в операционной системе касательно привилегий пользователя хранятся в специальной структуре, которая называется Primary Token. В прошлой статье мы не останавливались подробно на части, которая описывается Se* привилегиями. Наиболее интересные привилегии, которые могут быть использованы для эскалации привилегий, вывода из строя ОС:
Каждая строка это константа, которая определяет, какие привилегии существуют в токене. В операционной системе данный из токена включены в специальную структуру, которая называется “Security Descriptor”:
В качестве подопытного процесса возьмём процесс System. Для получения адреса токена можно ввести следующую команду — dx @$cursession.Processes[4].KernelObject.Token
Токен хранится с использованием EXFAST_REF это означает, что нужно занулить последний байт, чтобы вычислить адрес токена:
Посмотрим полный список групп и привилегий у пользователя System:
Стоит обратить внимание на тот факт, что найти “Security Descriptor” можно за несколько шагов, которые представлены выше на снимке. Полный список информации о привилегиях и группах представлен ниже:
Исследуем, что будет, если мы модифицируем ссылку на токен из отладчика:
Из-за изменения токена на нулевой, произошёл BSOD. В Windows была возможность использовать нулевой токен, но всё закончилось на Windows 10 1607. Был имплементирован механизм, который вызывает BSOD, если ссылка на токен в “Security Descriptor” модифицируется. Анализ дампа показывает, что проблема в испорченном объекте:
А можем ли мы все таки произвести модификацию без BSOD? Попробуем модифицировать так, чтобы осталась возможность работать с ОС. Для проверки попробуем создать условия, при которых токен обычного пользователя включал максимальное количество привилегий:
1.Найдем системный процесс и выясним, какие привилегии у него включены:
2.Пройдем в токен cmd.exe просмотрим текущее значение на включенные права:
3.Модифицируем права. Список прав после модификации:
Модификация прошла успешно, но все равно пользователь не может аттачиться к ряду системных приложений. Из-за того, что у пользователя еще остались ограничения из-за Integrity Levels и дополнительных битов, которые запрещают взаимодействие с процессами.
А можно ли провести выставление конкретных прав у пользователя в дескрипторе? Попробуем определить. В официальной документации указываются только строковые приставления констант, попробуем переписать токен значениями: 0x1
BSOD не произошло, похоже что механизм защиты просматривает только случаи, когда испорчен заголовок объекта. Это хорошо, значит, можно брутить. Первое значение, которое показало какой-то вменяемый результат — 0x100000 .
В итоге перебора значений были получены следующие данные о константах в токене:
SeDebugPrivilege — 0x100000
SeAuditPrivilege — 0x200000
SeSystemEnvironmentPrivilege — 0x400000
SeCreatePermanentPrivilege — 0x010000
SeSystemtimePrivilege — 0x001000
SeSecurityPrivilege — 0x000100
SeLockMemoryPrivilege — 0x000010
Получается, что хранимые привилегии это всего лишь байт в поле из 6 байт. И все действия, которые были проведены в отладчике, могут быть выполнены через shellcode, только нужно учитывать, что в эксперименте мы просто проставляли права как существующие, но для их полноценного использования их нужно еще включить. То есть записать привилегии по адресу SEPTOKEN_PRIVILEGES и _SEPTOKENPRIVILEGES+0x8.
Проведем следующий эксперимент — отнимем привилегии у процесса System и посмотрим, сможем ли мы выполнить операции, которые требуют расширенных привилегий.
В качестве теста была запущена команда netstat -ab , команда успешно отработала. Почему так произошло? Ведь все данные из токена о привилегиях были удалены. Здесь стоит вспомнить, что в ОС Windows привилегии наследуются от группы к пользователю, поэтому пока пользователь System принадлежит группам из списка ниже, он сможет продолжать использовать свои привилегии:
Ну и напоследок, шелкод, который можно использовать в качестве payload для эксплойтов из прошлой статьи:
Windows Live — что это за программа и нужна ли она?
Приветствую. Поговорим о встроенных компонентах Windows 7, многие о них не знают. Тем не менее они обладают простыми функциями, которые как раз могут быть удобны простым пользователям.
Windows Live — основные компоненты системы. Другое название — Windows Essentials. Представляет из себя пакет программ от Microsoft (возможно их можно скачать по отдельности). По состоянию на январь 2017 года не поддерживаются в Windows 10.
Я могу ошибаться, но вроде компоненты в Windows 7 работают, однако компания Microsoft прекратила их развитие.
Компонент | Описание |
---|---|
Киностудия | Простой видеоредактор, поддерживает наложение эффектов, аудио, присутствуют некоторые функции видеомонтажа, публикация в некоторые социальные сети — Windows Live SkyDrive, Facebook, YouTube. |
Фотоальбом | Поддержка импорта, сортировки, распознавания лиц, обработка. Также присутствует функция публикации в социальные сети. |
Messenger | Общение между пользователями, включает Outlook Connector. |
Почта | Почтовый клиент, присутствует календарь, поддержка контактов, RSS-ленты, групп новостей. |
Writer | Редактор блогов. |
Live Mesh | Утилита настройки синхронизации нескольких гаджетов. |
Панель Bing для Internet Explorer | Панель для быстрого доступа к сервисам поисковой системы Bing (Microsoft). |
Outlook Connection Pack | Инструмент синхронизации почты Outlook. |
Семейная безопасность | Приложение/служба по управлению доступом к учеткам других пользователей (например детей). |
OneDrive/SkyDrive | Облачный сервис хранения данных, бесплатно предоставляется 5 ГБ (базовый пакет). |
Для более детальной информации советую посмотреть официальное описание Windows Live (сайт Microsoft).
Windows Live ID — идентификатор юзера. Другими словами — учетная запись, позволяющая использовать все возможности.
Пример мессенджера Windows Live:
Вполне удобно, немного походе на ICQ (аська), которую уже забыли, многие даже не знают..
Еще один компонент, почта:
Внешне, как видим, почтовый клиент обычный — присутствуют стандартные папки Inbox, Outbox, Deleted Items и другие. Как и обычные кнопки Create Mail (создание письма), Reply (ответить). Впрочем все нормально, вот только сегодня многие привыкли пользоваться почтой используя браузер. Вообще как бы Windows Mail и Hotmail — одно и тоже. Просто первое — программа, второе — онлайн-сервис.
Внешний вид компонента Фотоальбом:
Writter — интересный редактор для создания записей блога:
Достаточно подключить используемую платформу, например WordPress, Blogger, LiveJournal, и заняться созданием записи. При этом создание возможно и без интернета — он нужен только для публикации.
Добавить комментарий Отменить ответ
Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.