Microsoft SCCM — AdminService CAB Extraction Path-Traversal to SYSTEM RCE (CVE-2026-47301)
Published: 2026-08-15 • Researcher: OmriBaso
- Severity
- Critical
- CVE
- CVE-2026-47301
- Category
- network
- Affected product
- Microsoft Configuration Manager (SCCM / ConfigMgr), AdminService REST API
- Affected versions
- All supported SCCM versions prior to the security update for CVE-2026-47301
- Disclosed
- 2026-08-15
- Patch status
- Unverified
Tags
References
Archive entry
intelseclab/poc-archiveOn this page
Metadata
| Field | Value |
|---|---|
| Date Added | 2026-08-15 |
| Last Updated | 2026-08-15 |
| Author / Researcher | OmriBaso |
| CVE / Advisory | CVE-2026-47301 |
| Category | network |
| Severity | Critical |
| CVSS Score | 9.8 (estimated, pre-auth RCE chain) |
| Status | Patched |
| Tags | windows, sccm, configmgr, rce, cab, path-traversal, dll-hijacking, dll-proxy, arbitrary-file-write, system, microsoft, CVE-2026-47301 |
| Related |
Affected Target
| Field | Value |
|---|---|
| Software / System | Microsoft Configuration Manager (SCCM / ConfigMgr), AdminService REST API |
| Versions Affected | All supported SCCM versions prior to the security update for CVE-2026-47301 |
| Language / Platform | C# (.NET, exploit client), C++ (payload DLL); targets SCCM Primary Site Servers on Windows Server |
| Authentication Required | Yes (C1 chain) / Yes with RBAC (C2 chain) – C1 chain requires only any authenticated domain user, no RBAC role needed |
| Network Access Required | Remote – requires HTTPS access (TCP 443) to the SCCM AdminService endpoint on the Primary Site Server |
Summary
CVE-2026-47301 is a remote code execution vulnerability in Microsoft Configuration Manager (SCCM) that chains four weaknesses: broken access control on the AdminService UploadExtensionInChunks endpoint (any domain user, no RBAC check), CAB extraction path-traversal enabling arbitrary file write, certificate verification bypass, and DLL hijacking of the SMS_EXECUTIVE service. The result is SYSTEM-level code execution on the SCCM Primary Site Server from any authenticated domain user.
The exploit uploads a crafted CAB file via the AdminService REST API. The CAB contains path-traversal entries (..\..\..\..\) that escape the intended extraction directory and plant two DLLs (adsource.dll and adsource_original.dll) into the Configuration Manager \bin\X64 directory. The malicious adsource.dll is a proxy DLL that forwards legitimate calls to the renamed original while executing an attacker payload from DllMain. When SMS_EXECUTIVE loads the DLL (approximately every 5 minutes), the payload runs as SYSTEM.
Vulnerability Details
Root Cause
The SCCM AdminService exposes two extension upload endpoints:
- C1 (
UploadExtensionInChunks): No RBAC authorization check – any authenticated domain user can upload - C2 (
UploadExtension): Requires Create permission onSMS_ConsoleExtensionData
Both endpoints accept CAB files and extract them without validating the contained file paths. Path-traversal sequences in CAB entry names allow writing files to arbitrary locations relative to the extraction directory. Because the SCCM service runs as SYSTEM and the extraction path is predictable, the attacker can place DLLs in the SCCM binary directory.
Attack Flow
- Identify the Primary Site Server: Query the
CN=System Management,CN=SystemAD container for machine accounts with GenericAll/FullControl. - Upload malicious CAB: Send the crafted CAB via the C1 endpoint (no RBAC required) using SSPI/Negotiate authentication.
- Path traversal: The CAB extraction writes
adsource.dll(malicious proxy) andadsource_original.dll(renamed legitimate DLL) to\bin\X64. - DLL load:
SMS_EXECUTIVEloadsadsource.dllwithin 5 minutes. The proxy DLL forwards exports to the original to prevent service crashes. - Payload execution: DllMain spawns a worker thread that enables the built-in RID 500 Administrator account, renames it, and sets a known password.
Impact
- Full SYSTEM-level code execution on the SCCM Primary Site Server
- Domain compromise potential (SCCM servers typically have extensive AD permissions)
- The C1 chain requires no SCCM RBAC role – any domain user suffices
- Payload is self-cleaning and logs changes for reversibility
Environment / Lab Setup
Setup Steps
| |
Proof of Concept
See
C1_UploadExtensionInChunks_AFW.cs(412 lines, C#) andAdSource_Proxy/adsource_proxy.cpp(281 lines, C++) in this folder – mirrored byte-for-byte from OmriBaso/SCCM-CVE-2026-47301-Remote-Code-Execution-Exploit. The upstream README is preserved asupstream-README.md.
Step-by-Step Reproduction
- Deploy an SCCM lab with an unpatched Primary Site Server and at least one domain user.
- Build the exploit client from the C# source or Visual Studio project.
- Probe the target:
C1_AFW.exe probe SCCM-CM01.domain.local --verbose - Upload the malicious CAB:
C1_AFW.exe write SCCM-CM01.domain.local 'pwn.cab' .\evil.cab --verbose - Wait up to 5 minutes for
SMS_EXECUTIVEto load the planted DLL. - Verify: Check
C:\POC.txton the target for payload execution logs, and attempt to authenticate as the renamed RID 500 administrator (omrispy/Xm#Poc-2026!Adm1n$Ok).
Exploit Code
The upload client – builds the JSON payload with base64-encoded CAB content and sends via SSPI-authenticated HTTPS:
| |
The proxy DLL payload – enables the built-in admin from DllMain:
| |
Expected Output
Mode : write
Chain : C1 (UploadExtensionInChunks -- no RBAC)
Target : SCCM-CM01.domain.local
Identity : DOMAIN\lowprivuser
Auth : SSPI (Negotiate/Kerberos)
HTTP 200 OKDetection and Indicators of Compromise
Remediation
| Action | Detail |
|---|---|
| Patch | Apply the Microsoft security update for CVE-2026-47301 on all SCCM Primary Site Servers. The fix adds RBAC authorization to the UploadExtensionInChunks endpoint and validates CAB extraction paths. |
| Workaround | Restrict network access to the AdminService endpoint (TCP 443) to authorized management workstations only. Monitor for unexpected extension uploads. |
| Cleanup | If exploited: replace adsource.dll with the legitimate copy, remove adsource_original.dll, check for renamed/enabled RID 500 account, review C:\POC.txt for exploitation timeline. |
References
Notes
Verified this session by reading all source files: C1_UploadExtensionInChunks_AFW.cs (412 lines, C#), AdSource_Proxy/adsource_proxy.cpp (281 lines, C++), AdSource_Proxy/Build.ps1, and AdSource_Proxy/New-DllForwarderPragmas.ps1.
Malware screen – clean. The C# client is a straightforward HTTP client using SSPI authentication and standard .NET HttpClient. The C++ DLL payload uses only Windows API calls (NetApi32 for user management, standard Win32 for logging). No obfuscation, no remote downloaders, no credential exfiltration, no miners, no C2 callbacks.
Binary caveat: The repo includes committed binaries (adsource_original.dll, evil_RID500.cab, .exp, .lib files). These cannot be verified from source alone. The README explains that adsource_original.dll is the legitimate SCCM DLL renamed for proxy forwarding, and evil_RID500.cab is the pre-built weaponized CAB. This is typical for Windows exploit PoCs where the payload involves compiled DLLs, but consumers should rebuild from source rather than using the committed binaries.
Author: OmriBaso is a credible security researcher with published SCCM security research. The repo has 36 stars, includes a detailed README with screenshots, and was published after Microsoft released the patch.