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

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
mysql-mysqldump-tab-path — MySQL Community Server 26.7.0 - High - mysqldump --tab 경로 잔여물 - 클라이언트 파일 쓰기 | Kitploit
도구/GitHubGitHub/abraxas/mysql-mysqldump-tab-path
Vulnerability AnalysisExploitationWeb Application ExploitationInformation GatheringPenetration TestingDatabase SecurityLabs & Practice
GitHubabraxas/mysql-mysqldump-tab-path

mysql-mysqldump-tab-path

MySQL Community Server 26.7.0 - High - mysqldump --tab 경로 잔여물 - 클라이언트 파일 쓰기

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Abraxas Labs - mysql-mysqldump-tab-path

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  mysql-mysqldump-tab-path

mysql-mysqldump-tab-path

분류: 파일 쓰기 (클라이언트) 도달 범위: 원격 (UI:R)

MySQL Community Server mysqldump 26.7.0 (06a5c1c) - Oracle

mysqldump --tab=DIR은 MY_REPLACE_DIR 없이 fn_format을 사용하여 테이블당 하나의 .sql을 작성합니다. / 또는 ..가 포함된 악의적인 SHOW TABLES 이름은 해당 디렉터리를 유지합니다. DIR은 무시됩니다. 덤프 UID가 해당 경로를 my_fopen합니다.

--tab은 .txt가 서버 INTO OUTFILE을 거치기 때문에 동일 머신 모드로 문서화되어 있습니다. .sql은 여전히 클라이언트 쓰기입니다.

ID아직 CVE 없음
분류파일 쓰기 (클라이언트 --tab .sql)
도달 범위원격 (피해자가 공격자 MySQL을 대상으로 mysqldump --tab 실행; UI:R)
CWECWE-22
CVSS높음: 8.1 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N
제품MySQL Community Server mysqldump
영향받는 버전26.7.0 (06a5c1c99c377fc41b2eba1ea244e8b220bdc3c8)
인증피해자가 공격자 MySQL을 대상으로 mysqldump --tab=DIR 실행
라이선스GNU Affero GPL v3.0
랩127.0.0.1 전용. DIR 외부의 .sql 증거 확인.

공격자가 할 수 있는 일

MySQL 프로토콜 서버를 세웁니다. SHOW TABLES에 /abs/path 또는 ../outside로 응답합니다. mysqldump --tab=/backup testdb를 실행한 운영자는 덤프 UID로 /abs/path.sql(또는 cwd 기준 상대 경로)을 작성하게 됩니다.

해당 UID가 생성할 수 있는 모든 파일을 덮어쓸 수 있습니다. 원격 파일 이름을 신뢰하는 백업 클라이언트와 동일한 부류입니다. .txt INTO OUTFILE 경로는 서버 측 FILE입니다. 남는 것은 클라이언트 .sql입니다.

실제 mysqld는 /가 포함된 테이블 이름을 내보내지 않습니다. 남는 것은 클라이언트입니다.

발견 경위

mysqldump SHOW TABLES 오버플로와 동일한 26.7.0 사냥입니다. 기본 데몬은 비어 있었습니다. 클라이언트 도구들은 여전히 SHOW TABLES를 신뢰했습니다. 오버플로가 하나의 잔여물이었습니다. --tab이 그다음이었습니다.

static FILE *open_sql_file_for_table(const char *table, int flags) {
  FILE *res;
  char filename[FN_REFLEN], tmp_path[FN_REFLEN];
  convert_dirname(tmp_path, path, NullS);
  res = my_fopen(fn_format(filename, table, tmp_path, ".sql",
                           MYF(MY_UNPACK_FILENAME | MY_APPEND_EXT)),
                 flags, MYF(MY_WME));
  return res;
}

mysys/mf_format.cc: dirname_part(name)이 비어 있지 않고 MY_REPLACE_DIR가 꺼져 있으면 주어진 dir은 사용되지 않습니다.

이미 기록된 잘못된 접근: 실제 mysqld를 오라클로 취급; SHOW CREATE TABLE 전에 SHOW TABLE STATUS에서 중단 (.sql은 CREATE가 성공한 후에만 열림); INTO OUTFILE .txt를 잔여물로 지칭; G1 오버플로를 다시 건드리는 64KiB 이름.

MariaDB CVE-2025-13699(mariadb-dump 뷰 이름 트래버설)가 아닙니다. 동일한 부류, MySQL Community 사본입니다.

랩

cd lab
./run.sh

이미지 mysql:26.7.0. --tab=/work/tabdir. 대조 스텁 테이블 t는 work/tabdir/t.sql을 작성합니다. 트래버설 스텁 테이블 /work/oracle/MYSQL-DUMP-TAB-TRAVERSAL-WITNESS는 work/oracle/MYSQL-DUMP-TAB-TRAVERSAL-WITNESS.sql을 작성합니다. 공개된 127.0.0.1:18610 / 18611. 루프백에 바인딩하십시오.

control-sql=yes
traversal-outside=yes
SUCCESS mysql-mysqldump-tab-path ... MYSQL-DUMP-TAB-TRAVERSAL-WITNESS

수정 방법

--tab 클라이언트 파일에 대해 fn_format에 MY_REPLACE_DIR를 전달하거나, 먼저 테이블 이름의 basename을 취하십시오. --tab=DIR은 DIR을 의미해야 합니다.

참고 자료

  • github.com/mysql/mysql-server 태그 mysql-26.7.0 (06a5c1c99c377fc41b2eba1ea244e8b220bdc3c8)
  • client/mysqldump.cc open_sql_file_for_table
  • mysys/mf_format.cc
  • 형제 오버플로 팩: abraxas/mysql-mysqldump-show-tables-overflow
도구 다운로드