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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-31891 — SQL Injection in MongoLite Aggregation Optimizer via toJsonExtractRaw() | Kitploit
도구/GitHubGitHub/ffasterss/cve-2026-31891
Vulnerability AnalysisExploitationWeb Application ExploitationWeb SecurityPenetration TestingDatabase Security
GitHubffasterss/cve-2026-31891

CVE-2026-31891

SQL Injection in MongoLite Aggregation Optimizer via toJsonExtractRaw()

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

MongoLite 집계 최적화 프로그램의 toJsonExtractRaw()를 통한 SQL 인젝션

  • 취약점 클래스: SQL 인젝션 (CWE-89)
  • 제품: Cockpit CMS (Core Edition)
  • 영향을 받는 버전: 2.13.4 및 집계 최적화 프로그램이 도입된 이후의 모든 버전으로 추정
  • 테스트된 Docker 이미지: cockpithq/cockpit:core-2.13.4
  • 소스 커밋: 7fe563023b7fae854c857d2e2dc0878ef28fbb5f (태그 2.13.4)
  • GitHub: https://github.com/Cockpit-HQ/Cockpit
  • 발견 날짜: 2026-02-28
  • CVSS 점수: 7.7 (높음) — CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N

1. 요약

Cockpit CMS(Core Edition 버전 2.13.4)에서 SQL 인젝션 취약점이 확인되었습니다. 이 취약점은 MongoLite 집계 최적화 프로그램, 특히 toJsonExtractRaw() 메서드 내에 존재합니다. 사용자 제어 필드 이름이 적절한 검증 없이 SQL 쿼리에 직접 연결됩니다.

콘텐츠 모델에 대한 읽기 권한(API 키를 통해)을 가진 인증된 공격자는 /api/content/aggregate/{model} REST 엔드포인트를 통해 집계 파이프라인에 임의의 SQL 명령을 주입할 수 있습니다.

이 결함으로 인해 공격자는 다음을 수행할 수 있습니다:

  • 의도된 게시 콘텐츠 필터(_state=1)를 우회하여 게시되지 않은 초안을 읽습니다.
  • 동일한 SQLite 데이터베이스의 모든 컬렉션에서 전체 문서 내용을 추출합니다.
  • sqlite_master를 통해 내부 데이터베이스 스키마를 열거합니다.

2. 단계별 익스플로잇 재현

다음 단계는 공격자가 _state=1 권한 부여 필터를 우회할 수 있는 방법을 보여줍니다.

사전 요구 사항

  • Cockpit CMS 2.13.4 이하
  • 콘텐츠 컬렉션 모델에 대해 최소한 읽기 권한이 있는 API 키.

2.1: 콘텐츠 모델 구성

  1. 관리자로 Cockpit CMS 관리 대시보드에 로그인합니다.
  2. 콘텐츠 > 모델로 이동하여 testcol이라는 새 모델을 생성합니다.
  3. 모델에 title 및 body라는 두 개의 텍스트 필드를 추가합니다.

스크린샷: testcol 콘텐츠 모델 설정 testcol 콘텐츠 모델 설정

2.2: API 역할 및 키 구성

  1. 설정 > 역할로 이동합니다.
  2. testcol 모델에 대해 읽기 권한을 갖도록 역할(예: MasterRole)을 생성하거나 수정합니다.

스크린샷: 컬렉션에 대한 역할 권한 구성 컬렉션에 대한 역할 권한 구성

  1. 설정 > API 및 보안(API 키)으로 이동합니다.
  2. 새 API 키를 추가하고 방금 구성한 MasterRole을 할당합니다. 키 값을 복사합니다(예: API-b8e8...).

스크린샷: 읽기 권한 역할로 API 키 설정 읽기 권한 역할로 API 키 설정

2.3: 샘플 콘텐츠 생성(비밀 초안 포함)

  1. 콘텐츠 > testcol로 이동합니다.
  2. Public이라는 제목의 항목을 만들고 상태를 게시됨(녹색 아이콘)으로 설정합니다.
  3. SECRET_DRAFT라는 제목의 두 번째 항목을 만들고 상태를 게시 안 됨(빨간색 아이콘)으로 설정합니다.

스크린샷: 게시된 항목 하나와 게시되지 않은 항목 하나를 보여주는 항목 목록 게시된 항목 하나와 게시되지 않은 항목 하나를 보여주는 항목 목록

2.4: 익스플로잇 실행

기본적으로 표준 API 쿼리는 상태가 게시됨인 콘텐츠만 반환합니다. 그러나 집계 파이프라인에 SQL을 주입하면 게시 콘텐츠 필터를 우회할 수 있습니다.

  1. 다음 페이로드를 구성합니다. 페이로드는 json_extract() SQL 함수에서 빠져나와 SQL 주석 --를 추가하여 후행 SQL을 무력화하며, 특히 결과를 게시된 항목으로 제한하는 WHERE 절을 대상으로 합니다.

주입된 필드:

root@kitploit:~
$title') as _id FROM collections_testcol--

전체 파이프라인 JSON:

root@kitploit:~
[{"$group": {"_id": "$title') as _id FROM collections_testcol--", "c": {"$sum": 1}}}]
  1. 파이프라인 JSON을 URL 인코딩하고 브라우저(또는 curl)를 통해 GET 요청을 /api/content/aggregate/testcol 엔드포인트로 보냅니다. YOUR_API_KEY를 2.2단계에서 생성한 키로 바꾸십시오:
root@kitploit:~
curl "http://localhost:8080/api/content/aggregate/testcol?api_key=YOUR_API_KEY&pipeline=%5B%7B%22%24group%22%3A%20%7B%22_id%22%3A%20%22%24title%27%29%20as%20_id%20FROM%20collections_testcol--%22%2C%20%22c%22%3A%20%7B%22%24sum%22%3A%201%7D%7D%7D%5D"

2.5: 익스플로잇 검증

아래 최종 스크린샷에서 볼 수 있듯이 API 응답은 명시적으로 게시 안 됨으로 표시된 SECRET_DRAFT 항목을 성공적으로 반환합니다. 이는 SQL 인젝션이 애플리케이션의 핵심 권한 부여 메커니즘을 우회하고 API를 통해 무단 데이터 추출을 허용함을 확인합니다.

스크린샷: 게시되지 않은 'SECRET_DRAFT' 데이터의 성공적인 추출 게시되지 않은 'SECRET_DRAFT' 데이터의 성공적인 추출

3. 영향 -- 결과

일반적인 헤드리스 CMS 배포에서 공개 읽기 전용 API 키는 종종 프런트엔드 JavaScript에 포함/하드코딩됩니다. 공개 API 엔드포인트를 통해 이 취약점을 악용하면 공격자는 다음을 수행할 수 있습니다:

  • 게시 콘텐츠 필터를 우회하여 게시되지 않은 초안, 보관된 항목 및 숨겨진 콘텐츠를 읽습니다.
  • API 키가 권한이 없는 컬렉션을 포함하여 동일한 content.sqlite 데이터베이스의 모든 콘텐츠 컬렉션을 읽습니다.
  • sqlite_master를 통해 데이터베이스 스키마를 열거하여 모든 테이블 이름과 구조를 발견합니다.

4. 공개 타임라인

날짜조치
2026-02-28승인된 보안 연구 중 취약점 발견
2026-03-02공급업체에 보고서 제출
2026-03-02공급업체 수정 -- https://github.com/Cockpit-HQ/Cockpit/commit/b6a0b45c5e8fe16f3027b889583cc3a9127ab4b0
2026-03-09패치 릴리스 v 2.13.5 -- https://getcockpit.com/releases

부록:

  • https://github.com/Cockpit-HQ/Cockpit/security/advisories/GHSA-7x5c-vfhj-9628
  • https://www.cve.org/CVERecord?id=CVE-2026-31891
도구 다운로드