Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

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

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

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-66491 — Joomla 확장 프로그램 PhocaCommander는 getSource 함수에서 Path Traversal 취약점이 있습니다. | Kitploit
도구/GitHubGitHub/toanln-cov/cve-2026-66491
Vulnerability AnalysisExploitationWeb Application ExploitationInformation GatheringWeb SecurityPenetration Testing
GitHubtoanln-cov/cve-2026-66491

CVE-2026-66491

Joomla 확장 프로그램 PhocaCommander는 getSource 함수에서 Path Traversal 취약점이 있습니다.

저장소 보기
12일 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

PhocaCommander의 getSource()를 통한 임의 파일 읽기

PhocaCommander ≤ 6.1.3 — 인증된 관리자 경로 탐색, CSRF 불필요

CVE CVSS v4.0 CWE-22 Affected Researcher


요약

PhocaCommander의 파일 편집기 엔드포인트에 임의 파일 읽기 취약점이 존재합니다. getSource() 함수는 base64로 인코딩된 filename 매개변수를 디코딩하여 경로 포함 검사 없이 file_get_contents()에 직접 전달합니다. 인증된 관리자는 GET 요청 하나만으로 웹 서버 프로세스가 접근할 수 있는 모든 파일(웹 루트 외부의 파일 포함)을 읽을 수 있습니다. CSRF 토큰은 필요하지 않습니다.

이 취약점을 악용하면 configuration.php에서 Joomla의 데이터베이스 자격 증명과 비밀 키가 유출되며, 경로 탐색 시퀀스(예: ../../../../etc/passwd)를 통해 /etc/passwd와 같은 시스템 파일도 읽을 수 있습니다.


영향받는 버전

구성 요소취약 버전테스트 환경수정 버전
PhocaCommander1.0.0 – 6.1.3Joomla 5.4.7 + PhocaCommander 6.1.3 (PHP 8.2 / Apache)6.1.4

취약점 세부 정보

필요한 인증: 관리자 세션 (CSRF 토큰 불필요 - GET 요청)

파일: administrator/components/com_phocacommander/models/phocacommanderedit.php

근본 원인

getSource()는 filename을 base64에서 디코딩하여 JPATH_ROOT에 직접 연결한 다음, 포함 검사 없이 파일을 읽습니다:

PHOCACOMMANDEREDIT.PHP — 취약 코드

root@kitploit:~
public function getSource($fileName) {
    $fileName = base64_decode($fileName); // ← attacker-controlled
    $item = new stdClass;
    if (PhocaCommanderHelper::fileExists(JPATH_ROOT . '/' . $fileName)) {
        $item->source = file_get_contents(JPATH_ROOT . '/' . $fileName); // ← no containment check
    }
    return $item;
}

fileExists()는 is_file(Path::clean($file))을 사용합니다. Path::clean()은 슬래시를 정규화하지만 ../ 시퀀스를 제거하지 않습니다. 따라서 경로 탐색이 검사 없이 웹 루트를 벗어날 수 있습니다.

코드베이스에는 helpers/phocacommander.php에 realpath() 기반의 적절한 포함 검사를 수행하는 getContainedRealPath() 함수가 있습니다. 이 함수는 save()와 download()에서 호출되지만 getSource()에는 추가된 적이 없습니다. 또한 컨트롤러의 edit() 메서드는 GET을 통해 디스패치되므로 표준 CSRF 토큰 검사가 적용되지 않습니다. 활성 관리자 세션 쿠키만으로도 임의 파일 읽기를 트리거할 수 있습니다.


개념 증명(PoC)

시나리오 1 — 웹 루트 외부 경로 탐색을 통한 /etc/passwd 읽기

1. Joomla 관리자 패널에 로그인

관리자 로그인 페이지를 통해 인증하여 유효한 세션 쿠키를 획득합니다. 표준 관리자 세션 외에 추가 권한은 필요하지 않습니다.

2. 경로 탐색으로 /etc/passwd 읽기 — 웹 루트 외부

base64로 인코딩된 탐색 경로와 함께 다음 GET 요청을 전송합니다:

root@kitploit:~
GET /administrator/index.php?option=com_phocacommander&task=phocacommanderedit.edit&filename=Li4vLi4vLi4vLi4vZXRjL3Bhc3N3ZA==
Cookie: [admin session]

filename 디코딩 결과: Li4vLi4vLi4vLi4vZXRjL3Bhc3N3ZA== → ../../../../etc/passwd

최종 경로: /var/www/html/../../../../etc/passwd = /etc/passwd

편집기가 /etc/passwd의 전체 내용을 렌더링하므로 웹 루트 외부에 대한 읽기 접근이 가능함을 확인할 수 있습니다.

요청 / 응답

Joomla 편집기에 렌더링된 /etc/passwd 내용을 보여주는 Burp Suite 요청 및 응답


영향

  1. 시스템 파일 노출 — SSH 키와 동일 서버에 호스팅된 애플리케이션의 설정 파일에 모두 접근할 수 있습니다 (웹 서버 프로세스가 읽을 수 있는 경우)
  2. 상호 작용 불필요 — 공격은 단일 GET 요청이며, CSRF 토큰, 양식 제출, 피해자 상호 작용이 필요 없습니다
  3. 권한 상승 체인 — 유출된 비밀 키를 사용하면 Joomla 토큰을 오프라인에서 위조할 수 있어, 대상 사이트에 대한 추가 공격 표면이 열립니다

참고 자료

  • CVE: https://www.cve.org/CVERecord?id=CVE-2026-66491
  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-66491
  • 공급업체 저장소: https://github.com/PhocaDesign/PhocaCommander
도구 다운로드