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

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
stirling-h2-import-leftover — Stirling-PDF v3.2.0 - 치명적 - 원격 - H2 RUNSCRIPT 잔여물 - CREATE OR REPLACE ALIAS import-database | Kitploit
도구/GitHubGitHub/abraxas/stirling-h2-import-leftover
Vulnerability AnalysisExploitationWeb Application ExploitationSecurity VirtualizationPenetration TestingDatabase Security
GitHubabraxas/stirling-h2-import-leftover

stirling-h2-import-leftover

Stirling-PDF v3.2.0 - 치명적 - 원격 - H2 RUNSCRIPT 잔여물 - CREATE OR REPLACE ALIAS import-database

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Abraxas Labs - stirling-h2-import-leftover

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  stirling-h2-import-leftover

stirling-h2-import-leftover

Stirling-PDF 3.2.0 - Stirling Tools

분류: GHSA-mrr8의 H2 RUNSCRIPT 잔여 취약점. 도달 범위: 원격 ROLE_ADMIN.

POST /api/v1/database/import-database는 @PreAuthorize("hasRole('ADMIN')")로 보호됩니다. validateSqlContent는 CREATE ALIAS를 차단하도록 설계되었습니다. 거부 목록은 CREATE\s+(FORCE\s+)?ALIAS입니다. H2의 parseCreate는 ALIAS 앞에 OR REPLACE를 허용하므로, CREATE OR REPLACE ALIAS … FOR "java.lang.…"는 허용 목록 \bCREATE\b에는 일치하지만 거부 목록은 회피합니다. 검증기는 복사본을 정제합니다. verifyBackup과 프로덕션의 RUNSCRIPT FROM ?는 원본 파일을 사용합니다.

GHSA-mrr8-934j-4g8m / CVE-2026-85714는 원래의 FILE_READ / CREATE ALIAS / CSVWRITE 문자열을 차단했습니다. 이 잔여 취약점은 동일한 검증기에 존재하는 OR REPLACE 우회 경로입니다.

ROLE_ADMIN 권한으로 임포트하면 거부 목록이 차단해야 할 Java 별칭이 생성됩니다. 이후 백업 다운로드에는 공격자의 SQL이 포함됩니다. 원래 권고의 호스트 FILE_READ / FileUtils RCE는 추론된 것이며, 이 팩에서 실험실로 입증된 것은 아닙니다.

ID아직 CVE 없음
CWECWE-94 / CWE-184
CVSS9.1 CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H
제품Stirling-PDF
영향받는 버전v3.2.0 (a7e593728dd9aa81e75318a949789d3c2e9ee754), 이미지 stirlingtools/stirling-pdf:3.2.0-fat
인증ROLE_ADMIN, 기본 내장 H2. 변경 전까지 기본 첫 관리자 계정은 admin / stirling
라이선스GNU Affero GPL v3.0
실험실127.0.0.1:18152 전용

Stirling-PDF v3.2.0 잔여 취약점 시리즈의 잔여 취약점입니다. 자매 항목: stirling-storage-folder-idor (처리 폴더가 암시하는 스토리지 루트). 이 팩은 H2 임포트 잔여 취약점입니다.

공격자가 할 수 있는 일

login-on proprietary/fat에서 기본 내장 H2를 사용하는 ROLE_ADMIN 권한입니다. initialLogin이 비어 있을 때 기본 첫 관리자는 admin / stirling입니다. 인증되지 않은 접근은 필요하지 않습니다. Lite 이미지와 PostgreSQL 데이터소스에는 이 컨트롤러가 포함되지 않습니다.

권한 표 (전체). Signal-Server Dropwizard admin과 동일한 기준: 메서드 + 경로, 해당 호출이 부여하는 권한, 정찰 대 무결성 대 가용성, 실험실 입증 대 추론, 차단된 상태로 유지되는 인접 공격 표면.

축메서드 + 경로권한출처
무결성ROLE_ADMIN POST /api/v1/database/import-database와 CREATE OR REPLACE ALIAS lab_nano FOR "java.lang.System.nanoTime" 및 INSERT INTO lab_w VALUES('STIRLING-H2-IMPORT-WITNESS')200 importIntoDatabaseSuccessed. Java 별칭 생성됨. 공격자 SQL이 RUNSCRIPT 아래에서 커밋됨실험실 입증
정찰ROLE_ADMIN GET /api/v1/database/createDatabaseBackup 후 GET /api/v1/database/download/backup_202610172328.sql50432바이트 백업에 STIRLING-H2-IMPORT-WITNESS 포함실험실 입증
정찰 / 호스트 파일동일한 import로 EXECUTE IMMEDIATE 안에 FILE_READ('/etc/os-release')를 감쌈500 Backup verification failed. 호스트 바이트가 백업에 없음실험실 추가 FAIL
무결성 / RCE별칭 org.h2.store.fs.FileUtils와 Python user-site .pth의 CSVWRITE, 이후 office convert서비스 계정으로 명령 실행GHSA-mrr8에서 추론. 여기서는 실험실 검증 안 함
가용성주장 없음Import가 애플리케이션 테이블을 교체할 수 있음추론. 실험실 오라클 아님

이 핀에서는 닫힌 상태 유지

축메서드 + 경로닫힌 이유
무결성비인증 POST /api/v1/database/import-database401 Authentication required. HTTP가 permitAll일 때도 메서드 보안 ADMIN은 유지됨
무결성ROLE_ADMIN이 순수 CREATE ALIAS를 import500 SQL script contains disallowed operations and was rejected
무결성lite / DISABLE_ADDITIONAL_FEATURES 이미지DatabaseController 없음
무결성사용자 정의 PostgreSQL 데이터소스@Conditional(H2SQLCondition.class)

리버스 셸을 주장하는 것이 아니며, 호스트 FILE_READ를 실험실 입증으로 주장하지도 않는다. 남은 것은 CREATE OR REPLACE ALIAS … FOR "java.lang.…"가 RUNSCRIPT를 통과하도록 허용하는 거부 목록 누락이다.

발견 방법

v3.2.0은 여전히 GHSA-mrr8 검증기를 포함한다. 나는 그 태그에 머물며 DENIED_PATTERNS를 읽었다. 별칭 줄은 CREATE\s+(FORCE\s+)?ALIAS이다. H2의 파서는 CREATE OR REPLACE ALIAS를 허용한다. 테스트는 명백한 CREATE ALIAS / FILE_READ( 문자열을 다룬다. OR REPLACE는 다루지 않는다.

실험실은 기본 관리자로 로그인하고, change-password-on-login을 완료한 뒤, 거부된 CREATE ALIAS를 import하고(500), 이어서 CREATE OR REPLACE ALIAS와 INSERT 증인을 import한다(200). 백업 다운로드에 증인이 포함된다.

잘못된 방향: 비인증 import를 범위 내로 취급함(401); EXECUTE IMMEDIATE + FILE_READ를 남은 문제로 취급함(verifyBackup 500); 원래 난독화되지 않은 CREATE ALIAS를 여전히 유효하다고 취급함(거부됨).

실험실

python3 stirling-h2-import-leftover-Abraxas-Labs.py

또는

cd lab
./run.sh

오직 http://127.0.0.1:18152만 대상으로 합니다. 이미지 stirlingtools/stirling-pdf:3.2.0-fat. Docker가 필요합니다. 로그인 켜짐. 런처는 lab/로 chdir한 후 run.sh를 exec합니다.

IOC unauth-import http=401
IOC negative-import http=500 ... disallowed operations ...
IOC leftover-import bypass=create-or-replace-alias http=200 ... importIntoDatabaseSuccessed
IOC download file=backup_202610172328.sql http=200 bytes=50432 witness=1
SUCCESS stirling-h2-import-leftover negative-denied=yes bypass=create-or-replace-alias backup-has-witness=yes file=backup_202610172328.sql unauth-import=401 STIRLING-H2-IMPORT-WITNESS

수정 방법

OR REPLACE가 CREATE와 ALIAS 사이에 위치할 수 없도록 denylist를 확장합니다. RUNSCRIPT가 실행할 동일한 바이트에 대해 validateSqlContent를 실행합니다. 내부 SQL도 스캔되지 않는 한 EXECUTE IMMEDIATE를 거부합니다.

Pattern.compile("(?i)\\bCREATE\\s+(OR\\s+REPLACE\\s+)?(FORCE\\s+)?ALIAS\\b")

패치된 빌드에 대해 루프백 클라이언트를 다시 실행하세요: 남은 import는 순수 CREATE ALIAS가 이미 그러하듯이 400/500을 반환해야 합니다.

그때까지는 "내가 CREATE ALIAS를 금지했다"를 "내가 H2 Java 별칭을 금지했다"로 취급하지 마세요.

참고 자료

  • github.com/Stirling-Tools/Stirling-PDF 태그 v3.2.0 (a7e593728dd9aa81e75318a949789d3c2e9ee754)
  • GHSA-mrr8-934j-4g8m / CVE-2026-85714
  • abraxaslabs.tech/research/stirling-h2-import-leftover
  • abraxaslabs.tech/research/stirling-pdf-3.2.0-leftovers

벤더 접수: GitHub Security Advisory 탭 또는 [email protected]. 저는 Stirling-Tools/Stirling-PDF에 공개 이슈를 열지 않습니다.

Abraxas Labs https://abraxaslabs.tech https://github.com/abraxas [email protected]

도구 다운로드