Skip to content
KitploitKITPLOIT
FerramentasBlog
Log in
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Ferramentas/GitHubGitHub/ivanesk315/cve-2026-28496
Scanners de VulnerabilidadesAnálise de VulnerabilidadesExploraçãoSegurança ServerlessExploração de Aplicações WebSegurança WebTestes de PenetraçãoAprendizado e EducaçãoLabs e Prática
GitHubivanesk315/cve-2026-28496

CVE-2026-28496

Laboratório Docker que reproduz a cadeia de RCE pré-autenticação do FOSSBilling (bypass de autenticação CVE-2026-27604 + Twig SSTI CVE-2026-28496) com um PoC em Python e um alvo de comparação corrigido.

Ver Repositório
18há 21 diasAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2026-27604 + CVE-2026-28496 — Cadeia de RCE Pré-Autenticação no FOSSBilling

Resumo Executivo

Este repositório contém um laboratório Docker local para reproduzir e validar a cadeia de RCE Pré-Autenticação do FOSSBilling, composta por duas vulnerabilidades encadeadas:

CVETipoCVSS v4GHSADescrição
CVE-2026-27604Bypass de Autenticação10.0GHSA-78x5-c8gw-8279Falta de throw no verificador de função da API expõe endpoints administrativos a chamadores não autenticados
CVE-2026-28496SSTI9.4GHSA-57mv-jm88-66jcRenderização de template Twig sem sandbox via API string_render

O FOSSBilling é uma plataforma gratuita e de código aberto para faturamento e gestão de clientes. As versões 0.5.4 até 0.7.2 são afetadas. O FOSSBilling 0.8.0 corrige ambas as vulnerabilidades.

Este laboratório compara duas versões do FOSSBilling:

ServiçoVersão do FOSSBillingPropósitoURL
vuln0.7.2Alvo vulnerávelhttp://localhost:8081
patched0.8.0Alvo corrigidohttp://localhost:8082

A cadeia validada neste laboratório local é:```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}

O alvo corrigido (0.8.0) retorna:```json
{"result":null,"error":{"message":"Unknown API call system/system/string_render","code":879}}

O laboratório é intencionalmente limitado a serviços Docker locais. Não tem como alvo sistemas externos e não inclui web shells, malware, persistência, callbacks externos, extração de bases de dados ou payloads destrutivos.

A Cadeia

O RCE Pré-Autenticação requer que ambas as vulnerabilidades funcionem em conjunto:```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 │ └──────────────────────────────────────────────────────────────┘

Este laboratório demonstra a cadeia usando a prova aritmética segura `{{ 7*7 }}`. O caminho completo de RCE via `getDi()` não é demonstrado.

## Fatos Verificados

| Afirmação | Evidência | Como verificar |
| ----- | -------- | ------------- |
| CVE-2026-27604 é um bypass de autenticação no tratamento de funções da API do FOSSBilling. | GHSA-78x5-c8gw-8279: throw ausente no verificador de funções permite que /api/system/ seja resolvido como admin. | Execute o PoC: o caminho de convidado é negado, o caminho de sistema retorna resultado de admin. |
| CVE-2026-28496 é um SSTI na renderização Twig do FOSSBilling. | GHSA-57mv-jm88-66jc: string_render passa _tpl para Twig createTemplate() sem sandbox. | Execute o PoC: o servidor avalia {{ 7*7 }} e retorna 49. |
| Ambas as vulnerabilidades afetam o FOSSBilling 0.5.4 até 0.7.2. | Avisos públicos identificam a faixa de versões afetadas. | Compare os alvos vulnerável (0.7.2) e corrigido (0.8.0). |
| O FOSSBilling 0.8.0 corrige ambas as vulnerabilidades. | O alvo corrigido retorna "Unknown API call" para o endpoint testado. | Execute o PoC contra a porta 8082. |
| O bypass de autenticação concede acesso de admin não autenticado. | /api/guest/ nega string_render; /api/system/ retorna o resultado sem autenticação. | Execute o Estágio 1 do PoC. |
| O SSTI avalia templates controlados pelo atacante. | {{ 7*7 }} retorna 49 através do caminho vulnerável. | Execute o Estágio 2 do PoC. |
| A cadeia possibilita RCE Pré-Autenticação. | Bypass de autenticação + SSTI = injeção de template não autenticada com contexto de admin. | Execute o PoC da cadeia completa. |
| O PoC é somente HTTP. | poc.py envia apenas requisições HTTP POST. | Inspecione poc/poc.py. |

## Análise de Causa Raiz

### CVE-2026-27604: Bypass de Autenticação

A API do FOSSBilling resolve funções a partir do caminho da URL:```text
/api/:role/:module/:method

O verificador de funções valida se a função solicitada é permitida. No entanto, em versões vulneráveis, a exceção para funções não permitidas é instanciada mas nunca lançada:```php // Simplified vulnerable pattern if (!in_array($role, $allowed_roles)) { new \Exception("Role not allowed"); // BUG: missing "throw" }

Como a exceção nunca é lançada, a validação passa silenciosamente. A função `system` é resolvida para a identidade de administrador do cron, concedendo acesso total à API de administração a qualquer chamador não autenticado.

O impacto de segurança:```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)

O papel system mapeia para a identidade interna de administrador do cron, que possui privilégios administrativos totais.

CVE-2026-28496: SSTI

O método da API de administração string_render recebe _tpl dos dados da requisição e o passa para o pipeline de renderização de templates Twig sem aplicação de 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);

}

O método `renderString()` recorre 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;
}

O problema crítico: createTemplate($tpl) cria um template Twig a partir da string controlada pelo atacante e o renderiza sem restrições de sandbox. O template tem acesso a objetos no contexto do template, incluindo o manipulador da API de convidado que expõe getDi().

Cadeia Combinada```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

Baixar ferramenta