Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-28496 — Docker lab che riproduce la catena RCE pre-auth di FOSSBilling (CVE-2026-27604 bypass di autenticazione + CVE-2026-28496 Twig SSTI) con un PoC in Python e un target di confronto con patch. | Kitploit
Strumenti/GitHubGitHub/ivanesk315/cve-2026-28496
Scanner di VulnerabilitàAnalisi delle VulnerabilitàExploitSicurezza ServerlessSfruttamento di Applicazioni WebSicurezza WebPenetration TestingApprendimento e FormazioneLab e Pratica
GitHubivanesk315/cve-2026-28496

CVE-2026-28496

Docker lab che riproduce la catena RCE pre-auth di FOSSBilling (CVE-2026-27604 bypass di autenticazione + CVE-2026-28496 Twig SSTI) con un PoC in Python e un target di confronto con patch.

2021 giorni faNon ancora revisionato
Vedi Repository

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2026-27604 + CVE-2026-28496 — Catena RCE Pre-Auth in FOSSBilling

Sintesi esecutiva

Questo repository contiene un laboratorio Docker locale per riprodurre e validare la catena RCE Pre-Auth di FOSSBilling, composta da due vulnerabilità concatenate:

CVETipoCVSS v4GHSADescrizione
CVE-2026-27604Auth Bypass10.0GHSA-78x5-c8gw-8279throw mancante nel verificatore di ruolo API espone gli endpoint admin a chiamanti non autenticati
CVE-2026-28496SSTI9.4GHSA-57mv-jm88-66jcRendering di template Twig non sandboxed tramite l'API string_render

FOSSBilling è una piattaforma gratuita e open-source per la fatturazione e la gestione dei clienti. Le versioni dalla 0.5.4 alla 0.7.2 sono interessate. FOSSBilling 0.8.0 corregge entrambe le vulnerabilità.

Questo laboratorio confronta due versioni di FOSSBilling:

ServizioVersione FOSSBillingScopoURL
vuln0.7.2Target vulnerabilehttp://localhost:8081
patched0.8.0Target correttohttp://localhost:8082

La catena validata in questo laboratorio locale è:```text Unauthenticated HTTP POST → /api/system/system/string_render → Role "system" resolves to cron admin identity (CVE-2026-27604) → _tpl={{ 7*7 }} passed into unsandboxed Twig rendering (CVE-2026-28496) → Server evaluates the template expression → Returns {"result":"49","error":null}

Il target con patch (0.8.0) restituisce:```json
{"result":null,"error":{"message":"Unknown API call system/system/string_render","code":879}}

Il lab è intenzionalmente limitato ai servizi Docker locali. Non prende di mira sistemi esterni e non include web shell, malware, persistenza, callback esterni, dumping del database o payload distruttivi.

La Catena

La RCE Pre-Auth richiede che entrambe le vulnerabilità lavorino insieme:```text ┌──────────────────────────────────────────────────────────────┐ │ STEP 1: Auth Bypass (CVE-2026-27604) │ │ │ │ URL path: /api/system/system/string_render │ │ Role "system" → cron admin identity │ │ Exception instantiated but never thrown │ │ → Unauthenticated caller gets admin API access │ ├──────────────────────────────────────────────────────────────┤ │ STEP 2: SSTI (CVE-2026-28496) │ │ │ │ Admin API method: System\Api\Admin::string_render() │ │ _tpl parameter → Twig createTemplate() → render() │ │ No sandbox enforcement │ │ → Server-side template evaluation │ ├──────────────────────────────────────────────────────────────┤ │ COMBINED: Pre-Auth RCE │ │ │ │ One unauthenticated HTTP POST │ │ → Admin access (auth bypass) │ │ → Template injection (SSTI) │ │ → getDi() exposes Pimple DI container │ │ → PDO, cache, extension manager, 40+ services reachable │ │ → Remote Code Execution │ └──────────────────────────────────────────────────────────────┘

Questo lab dimostra la catena utilizzando la proof aritmetica sicura `{{ 7*7 }}`. Il percorso RCE completo tramite `getDi()` non è dimostrato.

## Fatti verificati

| Affermazione | Evidenza | Come verificare |
| ----- | -------- | ------------- |
| CVE-2026-27604 è un bypass di autenticazione nella gestione dei ruoli dell'API di FOSSBilling. | GHSA-78x5-c8gw-8279: throw mancante nel verificatore dei ruoli consente a /api/system/ di risolversi come admin. | Esegui il PoC: il percorso guest viene negato, il percorso system restituisce il risultato admin. |
| CVE-2026-28496 è una SSTI nel rendering Twig di FOSSBilling. | GHSA-57mv-jm88-66jc: string_render passa _tpl a Twig createTemplate() senza sandbox. | Esegui il PoC: il server valuta {{ 7*7 }} e restituisce 49. |
| Entrambe le vulnerabilità interessano FOSSBilling dalla 0.5.4 alla 0.7.2. | Gli advisory pubblici identificano l'intervallo di versioni interessate. | Confronta i target vulnerabile (0.7.2) e patchato (0.8.0). |
| FOSSBilling 0.8.0 corregge entrambe le vulnerabilità. | Il target patchato restituisce "Unknown API call" per l'endpoint testato. | Esegui il PoC sulla porta 8082. |
| Il bypass di autenticazione fornisce accesso admin non autenticato. | /api/guest/ nega string_render; /api/system/ restituisce il risultato senza autenticazione. | Esegui lo Stage 1 del PoC. |
| La SSTI valuta template controllati dall'attaccante. | {{ 7*7 }} restituisce 49 attraverso il percorso vulnerabile. | Esegui lo Stage 2 del PoC. |
| La catena consente RCE Pre-Auth. | Bypass di autenticazione + SSTI = template injection non autenticata con contesto admin. | Esegui il PoC della catena completa. |
| Il PoC è solo HTTP. | poc.py invia solo richieste HTTP POST. | Ispeziona poc/poc.py. |

## Analisi della causa principale

### CVE-2026-27604: Bypass di autenticazione

L'API di FOSSBilling risolve i ruoli dal percorso URL:```text
/api/:role/:module/:method

Il controllo dei ruoli verifica se il ruolo richiesto è consentito. Tuttavia, nelle versioni vulnerabili, l'eccezione per i ruoli non consentiti viene istanziata ma mai lanciata:```php // Simplified vulnerable pattern if (!in_array($role, $allowed_roles)) { new \Exception("Role not allowed"); // BUG: missing "throw" }

Poiché l'eccezione non viene mai lanciata, la validazione passa silenziosamente. Il ruolo `system` viene risolto nell'identità di amministratore cron, concedendo pieno accesso all'API di amministrazione a qualsiasi chiamante non autenticato.

L'impatto sulla sicurezza:```text
/api/guest/system/string_render  → denied (guest role, no admin access)
/api/admin/system/string_render  → requires authentication
/api/system/system/string_render → admin access WITHOUT authentication (bypass)

Il ruolo system corrisponde all'identità amministrativa interna di cron, che dispone di privilegi amministrativi completi.

CVE-2026-28496: SSTI

Il metodo API admin string_render riceve _tpl dai dati della richiesta e lo passa nella pipeline di rendering dei template Twig senza applicare il sandbox:```php public function string_render($data) { if (!isset($data['_tpl'])) { error_log('_tpl parameter not passed'); return ''; }

$tpl = $data['_tpl'];
$try_render = $data['_try'] ?? false;

$vars = $data;
unset($vars['_tpl'], $vars['_try']);

return $this->getService()->renderString($tpl, $try_render, $vars);

}

Il metodo `renderString()` passa a `createTemplateFromString()`:```php
public function createTemplateFromString($tpl, $try_render, $vars)
{
    try {
        $twig = $this->di['twig'];
        $template = $twig->createTemplate($tpl);
        $parsed = $template->render($vars);
    } catch (\Exception $e) {
        $parsed = $tpl;

        if (!$try_render) {
            throw $e;
        }
    }

    return $parsed;
}

Il problema critico: createTemplate($tpl) crea un template Twig dalla stringa controllata dall'attaccante e lo renderizza senza restrizioni di sandbox. Il template ha accesso agli oggetti nel contesto del template, incluso l'handler API guest che espone getDi().

Catena Combinata```text

Input: POST /api/system/system/string_render {"_tpl":"{{ 7*7 }}"}

Step 1 (CVE-2026-27604): URL path → role = "system" → role checker: exception instantiated, NOT thrown → system role → cron admin identity → admin API access granted without authentication

Scarica lo strumento