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

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
sqlite-cli-go — SQLite 3.53.4 CLI - High - Local - Command injection - go 및 슬래시 종료자와 dot-command | Kitploit
도구/GitHubGitHub/abraxas/sqlite-cli-go
Vulnerability AnalysisExploitationSecurity VirtualizationCryptographyPenetration TestingLabs & Practice
GitHubabraxas/sqlite-cli-go

sqlite-cli-go

SQLite 3.53.4 CLI - High - Local - Command injection - go 및 슬래시 종료자와 dot-command

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Abraxas Labs - sqlite-cli-go

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

sqlite-cli-go

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

SQLite 3.53.4 (b09c88c) 기본 sqlite3 CLI는 여전히 SQL Server의 go와 Oracle의 /를 문장 종결자로 취급한다. line_is_command_terminator가 해당 줄을 ;로 재작성한다. SQL 버퍼가 비어 있는 다음 줄은 do_meta_command이므로 .shell / .output / .read가 운영자 UID로 실행된다.

--safe는 여전히 .shell을 차단한다. 그 통제는 유효하다. 기본 sqlite3는 --safe를 켜지 않는다. libsqlite3가 아니다. Oracle은 증인 문자열의 echo이다.

ID아직 CVE 없음
분류명령 주입 (CLI go / / 종결자 이후 뒤따르는 dot-command)
도달 범위로컬 (피해자가 --safe 없이 공격자 SQL/스크립트에 대해 기본 sqlite3를 실행; UI:R)
CWECWE-78
CVSSHigh: 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에 스크립트를 입력; --safe 없음
라이선스GNU Affero GPL v3.0
랩127.0.0.1:18920 전용. 증인 SQLITE-CLI-GO-WITNESS.

공격자가 할 수 있는 일

운영자가 --safe 없이 sqlite3에 입력한 스크립트에서 종결되지 않은 SQL 이후, go 또는 / 줄 다음에 .shell / .output / .read가 운영자 UID로 실행된다.

세미콜론은 이미 문장을 종료한다. 남은 것은 ;가 없는 종결 SQL이므로, 문장이 아직 열려 있다고 생각한 래퍼가 다음 dot-command를 계속 실행한다. .shell은 system()이다. 랩 오라클은 증인의 echo이다. 리버스 셸이 아니다.

발견 방법

OpenLiteSpeed 이후 3.53.4의 소스를 스무 번 탐색했다. 최신 GA이며 3.54.0 초안이 아니다. CLI 부가 기능은 기본 라이브러리가 아니다. --safe는 신뢰할 수 없는 스크립트에 대한 문서화된 싱크이다(CVE-2022-46908). 여전히 .shell을 차단한다. 기본 sqlite3는 이를 켜지 않는다.

src/shell.c.in에는 여전히 SQL Server / Oracle 호환성 경로가 있다. 트렁크 ac6ac0c22d (2026-10-08)는 SQLITE_SHELL_LEGACY_COMMAND_TERMINATOR가 없으면 이를 비활성화한다. 그 체크인은 이 GA 이후이다.

이미 기록된 잘못된 방향: 세미콜론을 동일한 잔여물로 취급; CVE-2022-46908 재신고; --safe가 기본일 것이라 기대; 이를 libsqlite3 RCE라고 부름; 리버스 셸을 오라클로 사용; 3.54.0(초안) 고정.

랩

cd lab
./run.sh

공식 sqlite-src-3530400을 기본 Unix sqlite3로 빌드한다(--disable-readline). Compose sqlite-cli-go. 127.0.0.1:18920의 더미 TCP. 기본 CLI가 go와 /를 종결자로 취급한 뒤 .shell echo SQLITE-CLI-GO-WITNESS를 실행했다. --safe는 cannot run .shell in safe mode를 출력했다. 루프백 바인드.

SUCCESS sqlite-cli-go how=go-then-dot-shell slash=yes safe=blocked SQLITE-CLI-GO-WITNESS

수정

go와 /를 종결자로 취급하는 것을 중단하는 것, 즉 트렁크 ac6ac0c22d가 -DSQLITE_SHELL_LEGACY_COMMAND_TERMINATOR가 없으면 하는 일이다. 그때까지는 신뢰할 수 없는 스크립트를 --safe로 실행하라. --safe는 여전히 유효한 통제이다.

참고

  • sqlite.org/src 태그 version-3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69)
  • 공식 zip https://www.sqlite.org/2026/sqlite-src-3530400.zip
  • src/shell.c.in line_is_command_terminator, process_input 재작성, do_meta_command, failIfSafeMode 이후 .shell system()
  • CVE-2022-46908 --safe
  • sqlite.org/cli.html CLI --safe
  • CWE-78
도구 다운로드