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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-66492 — Joomla 확장 프로그램 PhocaCommander는 파일 업로드 작업에서 경로 탐색(Path Traversal) 취약점에 노출되어 있습니다 - CVSS 6.1 | Kitploit
도구/GitHubGitHub/toanln-cov/cve-2026-66492
Vulnerability AnalysisExploitationWeb Application ExploitationWeb SecurityPenetration Testing
GitHubtoanln-cov/cve-2026-66492

CVE-2026-66492

Joomla 확장 프로그램 PhocaCommander는 파일 업로드 작업에서 경로 탐색(Path Traversal) 취약점에 노출되어 있습니다 - CVSS 6.1

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

파일 업로드 대상의 경로 순회

PhocaCommander ≤ 6.1.3 — 인증된 관리자가 웹 루트 외부에 파일을 쓸 수 있음

CVE CVSS CWE-22 Affected Researcher


요약

PhocaCommander의 파일 업로드 핸들러는 경로 포함 검증 없이 공격자가 제어하는 base64로 인코딩된 folder 매개변수에서 대상 경로를 구성합니다. 인증된 관리자는 웹 서버 프로세스가 쓸 수 있는 웹 루트 외부의 임의 위치에 파일을 업로드할 수 있습니다.

실험실에서 확인된 내용: folder=Li4vLi4vLi4vdG1w (= ../../../tmp)로 업로드하면 업로드된 파일이 /var/www/html/ 외부인 /tmp/에 소유로 생성됩니다. 운영 환경의 PHP-FPM 환경에서는 이를 연계하여 원격 코드 실행을 달성할 수 있습니다.

www-data

영향을 받는 버전

COMPONENTVULNERABLETESTED ONFIXED
PhocaCommander1.0.0 – 6.1.3Joomla 5.4.7 + PhocaCommander 6.1.3 (PHP 8.2 / Apache)6.1.4

취약점 세부 정보

필요한 인증: 관리자 (세션 + CSRF 토큰)

파일: administrator/components/com_phocacommander/helpers/fileupload.php — realMultipleUpload()

근본 원인

realMultipleUpload()는 POST folder 매개변수를 base64에서 디코딩하고 이를 Path::clean() 연결에 직접 전달하며, 이 값은 포함 검사 없이 업로드 대상 경로로 사용됩니다.

FILEUPLOAD.PHP — 취약한 코드

root@kitploit:~
$folder = $app->getInput()->get('folder', '', '', 'string');
$folder = base64_decode($folder);         // ← attacker-controlled

$path = JPATH_ROOT;                       // = /var/www/html

if (isset($folder) && $folder != '') {
    $pathFolder = Path::clean($path . '/' . $folder . '/');
    // e.g. Path::clean('/var/www/html/../../../tmp/')
    // = '/tmp/' — outside the webroot, no error thrown
}

// ...
File::upload($file['tmp_name'], $pathFolder . strtolower($file['name']));

Path::clean()은 디렉터리 구분 기호를 정규화하지만 ../ 시퀀스를 해석하거나 제거하지 않습니다. 해석된 경로는 후속 경계 검사 없이 File::upload()에 직접 전달됩니다.

업로드 확장자 허용 목록

핸들러는 확장자 허용 목록(이미지, 문서, 압축 파일, 텍스트 파일)을 적용하고 .php 및 .htaccess 같은 서버 실행 가능 유형을 차단합니다. 그러나 허용 목록에서 허용되는 많은 파일 유형(셸 스크립트, cron 작업 정의, 구성 조각 등)은 중요한 OS 경로에 기록될 경우 심각한 피해를 초래할 수 있습니다.


개념 증명

시나리오 1 — folder 매개변수의 경로 순회를 통한 /tmp 임의 파일 쓰기

1. Joomla 관리자 패널에 로그인하고 CSRF 토큰 획득

관리자 로그인 페이지를 통해 인증합니다. 임의의 관리자 페이지에서 Joomla CSRF 토큰을 가져옵니다. 토큰은 숨겨진 양식 필드로 나타나거나 페이지 소스에서 추출할 수 있습니다.

관리자 패널에서 CSRF 토큰을 추출하는 GET 요청

2. folder 매개변수에 경로 순회를 포함하여 파일 업로드

file 필드에 파일 콘텐츠를, folder 필드에 base64로 인코딩된 경로 순회 값 Li4vLi4vLi4vdG1w (= ../../../tmp)를 담아 POST /administrator/index.php?option=com_phocacommander&task=phocacommanderupload.multipleupload로 multipart POST 요청을 보냅니다. 서버는 HTTP 200 및 {"jsonrpc":"2.0","result":"OK","code":200,"message":"Success: ","details":"Files uploaded"}로 응답합니다.

요청 / 응답

경로 순회 folder 매개변수를 사용한 POST 업로드 요청 및 200 OK 응답

3. 웹 루트 외부 /tmp에 파일이 기록되었는지 확인

파일이 /var/www/html/ 외부인 /tmp/upload_test.txt에 www-data 소유로 생성된 것이 확인됩니다.

터미널에서 ls -la /tmp로 www-data 소유의 upload_test.txt를 표시


영향

  1. 웹 루트 외부 임의 파일 쓰기 — www-data가 쓸 수 있는 모든 경로는 OS 스케줄러, SSH 데몬 및 기타 서비스에서 사용하는 경로를 포함하여 공격자가 선택한 콘텐츠를 받을 수 있습니다
  2. PHP-FPM 환경에서의 잠재적 RCE — PHP 코드가 포함된 .txt 파일과 .user.ini(auto_prepend_file)를 웹에서 접근 가능한 디렉터리에 업로드하면 해당 디렉터리에 대한 다음 요청에서 PHP 실행이 발생합니다

참조

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