Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-27541-Analysis-Lab — Laboratório Docker para reproduzir o CVE-2026-27541, uma escalada de privilégios autenticada no WooCommerce Wholesale Prices. Compara builds vulneráveis e corrigidas, inclui script de PoC e análise da causa raiz. | Kitploit
Ferramentas/GitHubGitHub/rootdirective-sec/cve-2026-27541-analysis-lab
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebSegurança WebTestes de PenetraçãoAprendizado e EducaçãoLabs e Prática
GitHubrootdirective-sec/cve-2026-27541-analysis-lab

CVE-2026-27541-Analysis-Lab

Laboratório Docker para reproduzir o CVE-2026-27541, uma escalada de privilégios autenticada no WooCommerce Wholesale Prices. Compara builds vulneráveis e corrigidas, inclui script de PoC e análise da causa raiz.

Ver Repositório
19há 6 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2026-27541 — Laboratório de Escalação de Privilégios Autenticada no WooCommerce Wholesale Prices

vulnx

Visão Geral

Este projeto é um laboratório Docker local para analisar e reproduzir o comportamento da CVE-2026-27541 no plugin WooCommerce Wholesale Prices / Wholesale Suite, comparando as versões vulnerável e corrigida lado a lado na mesma máquina.

O problema central é Controle de Acesso Quebrado no seguinte endpoint da API REST:

/wp-json/wwp/v1/admin/save

Com base no código-fonte usado neste laboratório, essa rota já possui um permission_callback tanto nas versões vulnerável quanto corrigida. No entanto, a versão afetada usa uma verificação de capacidade ampla demais para uma ação de gravação de configurações administrativas:

  • vulnerável (2.2.6) → current_user_can( 'manage_woocommerce' )
  • corrigida (2.2.7) → current_user_can( 'manage_options' )

Neste laboratório, o usuário shopmgr, que possui o papel shop_manager, tem manage_woocommerce=true mas não manage_options. Como resultado, esse usuário de baixo privilégio pode usar uma sessão válida de usuário autenticado mais um X-WP-Nonce válido para invocar o endpoint de gravação de configurações administrativas na versão vulnerável, enquanto a versão corrigida retorna 403 rest_forbidden para a mesma solicitação.


O que este laboratório comprova

  • Nó vulnerável (2.2.6): o usuário shopmgr pode chamar com sucesso POST /wp-json/wwp/v1/admin/save e modificar as configurações do plugin.
  • Nó corrigido (2.2.7): a mesma solicitação de shopmgr é rejeitada com 403.
  • Solicitação sem autenticação: se o endpoint for chamado diretamente sem autenticação, ambas as versões retornam 403, o que é consistente com um problema de escalada de privilégios pós-autenticação.
  • Prova de persistência: após uma execução bem-sucedida do PoC, a versão vulnerável armazena a opção do WordPress wwp_see_wholesale_prices_replacement_text=PWNED_BY_POC, enquanto a versão corrigida ainda retorna See wholesale prices.

Topologia do Laboratório

Serviços

  • vuln → WordPress + WooCommerce + WooCommerce Wholesale Prices 2.2.6
  • patched → WordPress + WooCommerce + WooCommerce Wholesale Prices 2.2.7
  • db-vuln / db-patched → bancos de dados MariaDB separados
  • seed-vuln / seed-patched → tarefas de semeadura wp-cli que instalam o WordPress, instalam o plugin, criam usuários e criam um produto para teste

Portas publicadas

  • http://localhost:8081 → vulnerável
  • http://localhost:8082 → corrigido

Imagens base

  • WordPress: wordpress:6.8.1-php8.2-apache
  • MariaDB: mariadb:11.4.5
  • Seeder: wordpress:cli-php8.2

Estrutura do Repositório

.
├── docker-compose.yml
├── README.md
├── patched/
│   └── Dockerfile
├── vuln/
│   └── Dockerfile
├── scripts/
│   └── seed-wp.sh
└── poc.py

Arquivos importantes

  • docker-compose.yml — define as pilhas vulnerável e corrigida com bancos de dados separados
  • scripts/seed-wp.sh — instala WordPress, WooCommerce, o plugin alvo e cria usuários de teste e dados de produto
  • poc.py — PoC de menor dano para login, extração de nonce e invocação do endpoint REST

Ambiente Semeado

Quando a pilha estiver pronta, o script de semeadura cria o seguinte:

Usuários

  • admin / AdminPass!234
  • shopmgr / ShopMgrPass!234

Produto

  • slug: lab-product
  • preço normal: 100
  • preço de atacado: 50

Versões

  • WooCommerce: 10.6.0

  • WooCommerce Wholesale Prices:

    • vulnerável: 2.2.6
    • corrigido: 2.2.7

O script também grava lab-secrets.json em cada contêiner WordPress para que os dados semeados e as informações de versão possam ser verificados.


Por que o PoC é de menor dano

Este PoC não tenta assumir o controle do site, alterar papéis, instalar plugins ou executar um shell.

Ele apenas faz o seguinte:

  1. faz login como shopmgr
  2. visita a página administrativa relevante para extrair wpApiSettings.nonce
  3. envia uma solicitação ao endpoint alvo
  4. altera um valor de configuração facilmente observável:
wwp_see_wholesale_prices_replacement_text = PWNED_BY_POC

Essa configuração é usada como um marcador observável para demonstrar que um usuário de baixo privilégio pode modificar configuração exclusiva de administradores.


Resumo da Vulnerabilidade

Componente afetado

  • Plugin: WooCommerce Wholesale Prices / Wholesale Suite
  • Rota: POST /wp-json/wwp/v1/admin/save

Classe da vulnerabilidade

  • Controle de Acesso Quebrado
  • Escalação de Privilégios Autenticada

Significado prático

Embora o endpoint exija uma sessão válida e nonce, a versão vulnerável ainda permite que um usuário de baixo privilégio, como shopmgr com o papel shop_manager, invoque um endpoint que deveria ser exclusivo de administradores.

Nuance importante

Esta não é uma vulnerabilidade não autenticada.

Se o endpoint for chamado diretamente sem uma sessão de usuário autenticado, tanto a versão vulnerável quanto a corrigida rejeitam a solicitação. O bug existe na autorização após autenticação, não na autenticação em si.


Análise da Causa Raiz

A versão vulnerável não está sem um permission_callback. A falha é que ela usa uma verificação de capacidade ampla demais (manage_woocommerce) para uma ação REST que grava configurações administrativas.

Do código-fonte em includes/class-wwp-admin-settings.php:

  • tanto a versão vulnerável quanto a corrigida registram a mesma rota: POST /wp-json/wwp/v1/admin/save
  • ambas as versões a direcionam para save_registered_settings()
  • ambas as versões usam permission_admin_check() como o permission_callback
  • a diferença real é a capacidade que está sendo verificada

Vulnerável (2.2.6)

if ( ! current_user_can( 'manage_woocommerce' ) ) {
    return new WP_Error( 'rest_forbidden', ... );
}

Corrigido (2.2.7)

if ( ! current_user_can( 'manage_options' ) ) {
    return new WP_Error( 'rest_forbidden', ... );
}

Neste laboratório, o usuário shopmgr, que possui o papel shop_manager, tem manage_woocommerce=true mas não manage_options, portanto passa na verificação vulnerável, mas falha na corrigida.

O que mudou no comportamento corrigido

A versão corrigida faz mais do que alterar a resposta de 200 para 403. Ela altera a lógica de controle de acesso ao restringir o requisito de capacidade de manage_woocommerce para manage_options.

Além disso, o caminho de gravação na versão corrigida é ainda mais reforçado ao abandonar a filtragem baseada em prefixo em favor de listas de permissões explícitas e sanitização mais forte.

Por que o PoC funciona na versão vulnerável

O PoC segue o mesmo fluxo de um contexto real de navegador:

  • fazer login como shopmgr
  • abrir a página de configurações do plugin
  • extrair wpApiSettings.nonce
  • chamar POST /wp-json/wwp/v1/admin/save

Como a versão vulnerável permite que usuários com manage_woocommerce invoquem essa ação de gravação de configurações, a solicitação é bem-sucedida e resulta em uma alteração persistente de opção.

Lição de segurança

Um nonce ajuda a proteger contra CSRF, mas não é um controle de autorização.

Ter uma sessão válida e um nonce válido não significa que um usuário deve ter permissão para executar uma ação administrativa. Usar uma capacidade excessivamente ampla em um endpoint privilegiado é suficiente para criar uma bypass de autorização de baixo privilégio.


Reproduzindo o Laboratório

Pré-requisitos

  • Docker Desktop / Docker Engine
  • Docker Compose v2
  • Python 3
  • Acesso à internet para o download inicial de imagens e do plugin
Baixar ferramenta