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-97657 — PoC em Python para CVE-2026-97657: forja tokens de recuperação AES-CTR via maleabilidade XOR para contornar a autenticação e assumir o controle de contas WordPress no Abandoned Cart Pro ≤10.8.0. | Kitploit
Ferramentas/GitHubGitHub/murrez/cve-2026-97657
Escalada de PrivilégiosScanners de VulnerabilidadesAnálise de VulnerabilidadesExploraçãoExploração de Aplicações WebSegurança WebCriptografiaAutenticação
GitHubmurrez/cve-2026-97657

CVE-2026-97657

PoC em Python para CVE-2026-97657: forja tokens de recuperação AES-CTR via maleabilidade XOR para contornar a autenticação e assumir o controle de contas WordPress no Abandoned Cart Pro ≤10.8.0.

1há 23 diasAinda 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
Ver Repositório

CVE-2026-97657 — bypass de autenticação no Abandoned Cart Pro for WooCommerce

PoC em Python 3 para CVE-2026-97657 — Abandoned Cart Pro for WooCommerce (Tyche Softwares) ≤ 10.8.0. CNA: Wordfence.

ProdutoAbandoned Cart Pro for WooCommerce
Afetado≤ 10.8.0 (atualize para uma versão corrigida acima de 10.8.0)
CWECWE-639 — bypass de autorização por meio de chave controlada pelo usuário
CVSS 3.19.8 Crítico
Marcador de verificaçãoPOCBIT-97657-OK (verificação de sessão/admin)
PoCbithttps://pocbit.org/pocs/cve-2026-97657

Descrição

Os links de recuperação usam tokens AES-CTR sem MAC (layout compatível com Wcal_Aes_Ctr: nonce CTR de 8 bytes + texto cifrado, base64). O plugin carrega a encrypt_key por e-mail a partir do parâmetro de consulta user_email controlado pelo atacante. Em wcap_email_track_links() (Pro; análogo no Lite wcal_email_track_links()), a verificação de wcap_nonce / HMAC é executada somente quando wcap_nonce não está vazio, portanto omiti-lo ignora a verificação de integridade. Após a descriptografia, o abandoned_id (ID da linha do carrinho) é usado sem comprovar que pertence àquele e-mail, e então wp_set_auth_cookie() é executado quando o login automático está habilitado (padrão).

Um atacante não autenticado com uma URL de recuperação legítima do seu próprio e-mail de lembrete pode mallear por XOR o texto cifrado CTR para alterar o ID de carrinho embutido para o ID do carrinho abandonado da vítima (mesmo comprimento do ID de origem), abrir a URL forjada sem wcap_nonce e fazer login como a vítima (incluindo administradores que abandonaram um carrinho).

Formato típico da URL (Pro):

GET /?wacp_action=checkout_link&[email protected]&validate=<token>

(Existem variantes wcap_action / wcal_action; os URLs de track-links podem incluir parâmetros extras, como c=.)


Requisitos

cd CVE-2026-97657
pip install -r requirements.txt
  • Python 3.9+
  • Dependências: requests, urllib3

Visão geral do uso

ModoFinalidadeArgumentos obrigatórios
check (padrão)Lê o readme.txt do plugin, sinaliza versão ≤ 10.8.0-t URL ou --list FILE
forgeConstrói localmente a URL de recuperação forjada (sem HTTP)--recovery-link, --source-cart-id, --target-cart-id
exploitForja o token + HTTP GET + verifica a sessão do WordPressO mesmo que forge

Fluxo de trabalho recomendado (laboratório autorizado):

  1. check em massa ou individual — confirme o slug do plugin + versão ≤ 10.8.0.
  2. forge — valide o preenchimento do cart ID e o formato da URL antes de enviar tráfego.
  3. exploit — um GET para a URL de recuperação forjada; confirme os cookies + /wp-admin/.

Exploit/forge não usa -t / --list. O host de destino é obtido de --recovery-link (esquema + host).


Pré-requisitos (exploit / forge)

RequisitoMotivo
Uma URL de recuperação legítimaFornece um nonce CTR válido + ciphertext e (normalmente) sua linha de user_email / encrypt_key em ac_sent_history
Plugin ≤ 10.8.0 com auto-login habilitado (padrão)Builds corrigidos ou auto-login desabilitado bloqueiam wp_set_auth_cookie()
Usuário registrado do WordPress vítima com uma linha de carrinho abandonadoO caminho de takeover faz login com user_id de ac_abandoned_cart_history; carrinhos puramente de convidados usam um ramo diferente
URL checkout_link fortemente preferidaO texto simples é {abandoned_cart_id}&url=.... Tokens track_links codificam email_sent_id, não o cart ID — tipo de ID errado quebra o forge
IDs de comprimento igualA maleabilidade XOR do CTR apenas inverte bytes 1:1; preencha com zeros (veja abaixo)

Obtendo --recovery-link

  1. Na loja alvo, registre-se/faça login como um usuário que você controla.
  2. Adicione produtos ao carrinho e abandone o checkout (abandone).
  3. Aguarde um e-mail de lembrete (ou reduza os temporizadores de corte em um laboratório que você possui).
  4. Copie o checkout_link completo do e-mail (ou de webhooks / exportação do plugin, se habilitado).

Exemplos de formatos Pro (da documentação do fornecedor / webhooks):

https://shop.example/?wacp_action=checkout_link&validate=<base64-token>
https://shop.example/?wacp_action=checkout_link&[email protected]&validate=<token>
https://shop.example/?wacp_action=track_links&[email protected]&validate=<token>&c=<coupon-token>

Cole a URL exatamente como no e-mail (incluindo validate; a ordem dos parâmetros não importa).

Obter IDs de linha do carrinho

OrigemCampo
WooCommerce Abandoned Cart → Cart details (admin)ID do carrinho abandonado (chave primária do BD)
Payload do Webhook (contexto wcap_cart, checkout_link)"id": "383" no recurso do carrinho
MySQL (lab)wp_ac_abandoned_cart_history.id (o prefixo da tabela Pro pode variar)

--source-cart-id deve ser o ID dentro do texto simples do seu token (sua linha de carrinho abandonado). --target-cart-id é a linha da vítima na mesma tabela.

Preenchimento com zeros (mesmo comprimento)

O PoC rejeita comprimentos incompatíveis. Preencha ambos os IDs com a mesma largura:

Origem (seu)Destino (vítima)OK?
383001Sim (3 caracteres)
03830001Sim (4 caracteres)
3831Não — execute forge com 0383 / 0001 em vez disso

Referência da CLI

FlagModosSignificado
-t, --targetcheckRaiz do site WordPress, ex.: https://shop.example.com
--list FILEcheckUma URL de site por linha; comentários com # são ignorados
--modetodoscheck (padrão), forge, exploit
--recovery-link URLforge, exploitURL de recuperação completa do e-mail de lembrete
--source-cart-idforge, exploitID da sua linha de carrinho abandonado (no texto simples do token)
--target-cart-idforge, exploitID da linha de carrinho abandonado da vítima (mesmo comprimento de string)
-j Ncheck (lista)Workers paralelos (padrão 8)
--timeout SECcheck, exploitTimeout HTTP (padrão 15)
--insecurecheck, exploitDesativar a verificação do certificado TLS
--jsonl FILEcheck, exploitAnexar um objeto JSON por execução
--vuln-list FILEcheckGravar URLs com versão ≤ 10.8.0
-q, --quiettodosMenos saída no console
--no-colortodosTerminal simples

Códigos de saída

CódigoQuando
0Exploit: success: true; forge: sempre; check: sempre (-t único)
1Exploit: falha na verificação de login/admin
2Execução de lista de check sem semântica de -t (informativo)

Modo check

python poc.py -t https://shop.example.com --mode check
python poc.py --list targets.example.txt --mode check -j 16 --vuln-list hits.txt --jsonl scan.jsonl

Sondagens:

  • /wp-content/plugins/woocommerce-abandon-cart-pro/readme.txt
  • Slug alternativo woocommerce-abandoned-cart-pro

Baixar ferramenta