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

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
mysql-install-component-scheme — MySQL Community Server 26.7.0 - 높음 - INSTALL COMPONENT 정규화된 스킴 - plugin_dir 건너뛰기 | Kitploit
도구/GitHubGitHub/abraxas/mysql-install-component-scheme
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingRemote Access ToolDatabase SecurityLabs & Practice
GitHub
abraxas/mysql-install-component-scheme

mysql-install-component-scheme

MySQL Community Server 26.7.0 - 높음 - INSTALL COMPONENT 정규화된 스킴 - plugin_dir 건너뛰기

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Abraxas Labs - mysql-install-component-scheme

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  mysql-install-component-scheme

mysql-install-component-scheme

분류: RCE 도달 범위: 원격

MySQL Community Server mysqld 26.7.0 (06a5c1c) - Oracle

기본 file:// INSTALL COMPONENT는 mysql_server_path_filter로 감싸져 plugin_dir 아래로 강제된다. 필터링되지 않은 libminchassis 로더는 dynamic_loader_scheme_file.mysql_minimal_chassis로 계속 등록되어 있다. URN 스킴 file.mysql_minimal_chassis가 해당 구현을 획득하고 mysqld UID로 절대 경로를 dlopen한다. INSTALL PLUGIN / CREATE FUNCTION SONAME은 여전히 /를 거부한다. mysql.component에 대한 INSERT 권한이 필요하다 (PR:H).

랩은 기본 제공 component_query_attributes.so를 /tmp/MYSQL-INSTALL-COMPONENT-SCHEME-WITNESS.so로 복사한다. 사용자 정의 컴포넌트는 없다.

FieldValue
ID아직 CVE 없음
ClassRCE (컴포넌트가 mysqld로 dlopen; PR:H; 랩은 기본 제공 .so를 로드함)
Reach원격 (인증된 SQL; INSTALL COMPONENT / PR:H)
CWECWE-427
CVSSHigh: 7.2 CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H
ProductMySQL Community Server mysqld
Affected26.7.0 (06a5c1c99c377fc41b2eba1ea244e8b220bdc3c8)
AuthINSTALL COMPONENT (mysql.component에 대한 INSERT)
LicenseGNU Affero GPL v3.0
Lab127.0.0.1 전용. 사용되지 않는 기본 제공 컴포넌트를 plugin_dir 밖으로 복사함.

공격자가 할 수 있는 일

INSTALL COMPONENT 권한을 보유한다. 컴포넌트 .so를 plugin_dir 밖에 배치한다 (secure_file_priv 하의 FILE DUMPFILE, 또는 로컬 쓰기). INSTALL COMPONENT 'file.mysql_minimal_chassis:///abs/name' (.so 접미사 없음; 로더가 이를 추가한다). mysqld UID로 dlopen한다. 동일한 URN이 mysql.component에 영속화되어 재시작 시 다시 로드된다.

file:///abs/name은 거부된다 (3529). INSTALL PLUGIN ... SONAME '/abs/...'는 거부된다 (1124). 정규화된 스킴이 남은 부분이다.

발견 방법

동일한 26.7.0 추적. set_default("dynamic_loader_scheme_file.mysql_server_path_filter")가 문서화된 경계이다. 필터링되지 않은 구현은 래퍼가 이를 호출할 수 있도록 계속 등록되어 있다. get_scheme_service_from_urn은 :// 앞의 바이트를 스킴으로 취한다.

my_service<SERVICE_TYPE(dynamic_loader_scheme)> service(
    (my_string("dynamic_loader_scheme_") + scheme).c_str(),
    &imp_mysql_minimal_chassis_registry);

file.mysql_minimal_chassis는 실제 스킴이다. component.test는 이를 시도하지 않는다.

잘못된 시도: 3-슬래시 URN (scheme:///tmp/...)이 로드됨; 4-슬래시는 필요하지 않았다. URN 스템은 .so를 생략해야 한다.

랩

cd lab
./run.sh

이미지 mysql:26.7.0. 게시 127.0.0.1:18650. plugin_dir=/usr/lib64/mysql/plugin. 기본 제공 component_query_attributes.so를 /tmp/MYSQL-INSTALL-COMPONENT-SCHEME-WITNESS.so로 복사한다.

SUCCESS mysql-install-component-scheme file-slash-denied=yes qualified-load=yes component-urn=yes dump=26.7.0 image=mysql:26.7.0 MYSQL-INSTALL-COMPONENT-SCHEME-WITNESS

수정 방법

SQL URN으로부터 dynamic_loader_scheme_file.mysql_minimal_chassis를 획득하지 말 것. file만을 경로 필터 구현에 매핑할 것. 구현을 지명하는 스킴을 거부할 것. 모든 파일 로더에 check_valid_path를 유지할 것.

참고 자료

  • github.com/mysql/mysql-server 태그 mysql-26.7.0 (06a5c1c99c377fc41b2eba1ea244e8b220bdc3c8)
  • components/libminchassis/dynamic_loader.cc get_scheme_service_from_urn
  • sql/server_component/dynamic_loader_path_filter.cc
  • 형제 팩: abraxas/mysql-mysqldump-show-tables-overflow · abraxas/mysql-mysqldump-tab-path · abraxas/mysql-mysqlbinlog-raw-path · abraxas/mysql-set-role-leftover
도구 다운로드