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

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
sqlite-cli-recover — SQLite 3.53.4 CLI - High - Local - 명령어 주입 - recover dump가 악성 스키마를 dot-command로 출력 | Kitploit
도구/GitHubGitHub/abraxas/sqlite-cli-recover
Vulnerability AnalysisExploitationPenetration TestingCommand and ControlPapers & ResearchDatabase SecurityLabs & Practice
GitHubabraxas/sqlite-cli-recover

sqlite-cli-recover

SQLite 3.53.4 CLI - High - Local - 명령어 주입 - recover dump가 악성 스키마를 dot-command로 출력

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Abraxas Labs - sqlite-cli-recover

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  sqlite-cli-recover

sqlite-cli-recover

분류: 명령 주입 도달 범위: 로컬

SQLite 3.53.4 (b09c88c) CLI .recover는 악의적인 sqlite_schema.sql을 이후 dot-command로 출력한다. recoverOneStmt는 첫 번째 구문만 준비한다. 삽입된 CREATE TABLE과 개행 뒤의 .shell은 여전히 기록된다. 문서화된 복원 파이프는 이를 운영자 UID로 실행한다.

.dump의 printSchemaLine은 동일한 출력 클래스다. libsqlite3가 아니다. --safe도 아니다. 오라클은 증인 문자열의 echo다.

ID아직 CVE 없음
분류명령 주입 (CLI .recover / .dump 스키마 출력)
도달 범위로컬 (피해자가 문서화된 복원 파이프를 실행; UI:R)
CWECWE-78
CVSS높음: 7.8 CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
제품SQLite (sqlite3 CLI)
영향받는 버전3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69) SOURCE_ID 2026-07-24 19:02:57 bf7c7f30031888f4e796e429ab3978879485813aaca6f641c7b33e4e09459bcc
인증피해자가 sqlite3 hostile.db .recover | sqlite3 restored.db 실행
라이선스GNU Affero GPL v3.0
랩127.0.0.1:18930 전용. 증인 SQLITE-CLI-RECOVER-WITNESS.

공격자가 할 수 있는 일

유효한 첫 번째 CREATE와 이후의 .shell을 sqlite_schema.sql에 삽입한다. 해당 db를 두 번째 sqlite3로 복원하는 피해자는 자신의 UID로 dot-command를 실행하게 된다.

삽입물은 .db 파일이다. 피해자 행동은 문서화된 복원 파이프이며, 붙여넣은 go 라인도 아니고 실수로 --safe를 끈 것도 아니다. .shell은 system()이다. 랩 오라클은 증인의 echo다. 리버스 셸이 아니다.

발견 방법

3.53.4의 소스 헌트 20회. Recover 자체의 헌트는 recoverOneStmt를 첫 구문만 준비한다고 판단하고 넘어갔다. 남은 것은 출력 경로다: recoverSqlCb가 여전히 추가 텍스트를 출력한다. 그 스크립트를 파이프로 연결하는 것이 sqlite.org가 복원하라고 알려주는 방법이다.

이미 기록된 잘못된 방향: 첫 구문 준비를 제거로 간주한 것; 3.54.0(초안)에 고정한 것; CVE-2022-46908 --safe를 다시 제출한 것; 이것을 libsqlite3 RCE라고 부른 것; 리버스 셸을 오라클로 사용한 것.

랩

cd lab
./run.sh

sqlite-src-3530400을 기본 Unix CLI recover(OPT_SHELL / SQLITE_ENABLE_DBPAGE_VTAB)로 sqlite3에 빌드한다. .dbconfig defensive off 후 writable_schema. 삽입된 CREATE TABLE t(x);와 개행 뒤의 .shell echo SQLITE-CLI-RECOVER-WITNESS. .recover가 .shell을 출력했다. 두 번째 sqlite3로 파이프되자 실행되었다. 루프백 바인드.

SUCCESS sqlite-cli-recover how=recover-pipe-dot-shell recover-has-shell=yes restore-echo=yes SQLITE-CLI-RECOVER-WITNESS

수정 방법

단일 구문이 아닌 스키마 SQL을 출력하지 말 것. 첫 번째 prepare에서 분할하여 해당 구문만 출력하거나, 해당 행을 거부할 것. 일반 CREATE를 가상 테이블 덤프가 이미 사용하는 %q 방식으로 인용할 것. 이후의 . 라인을 악의적인 것으로 간주하고 버릴 것. 복원 sqlite3에서 --safe는 .shell을 차단하지만, 문서화된 파이프에서는 켜져 있지 않다.

참고 자료

  • sqlite.org/src 태그 version-3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69)
  • Recovering Data From A Corrupt SQLite Database - 문서화된 .recover 후 복원
  • ext/recover/sqlite3recover.c recoverOneStmt / recoverWriteSchema1
  • src/shell.c.in recoverSqlCb, .dump printSchemaLine
도구 다운로드