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

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
mysql-mysqlbinlog-raw-path — MySQL Community Server 26.7.0 - 높음 - mysqlbinlog --raw Rotate 경로 잔여물 - 클라이언트 파일 쓰기 | Kitploit
도구/GitHubGitHub/abraxas/mysql-mysqlbinlog-raw-path
Vulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationPenetration TestingLabs & Practice
GitHubabraxas/mysql-mysqlbinlog-raw-path

mysql-mysqlbinlog-raw-path

MySQL Community Server 26.7.0 - 높음 - mysqlbinlog --raw Rotate 경로 잔여물 - 클라이언트 파일 쓰기

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Abraxas Labs - mysql-mysqlbinlog-raw-path

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

mysql-mysqlbinlog-raw-path

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

MySQL Community Server mysqlbinlog 26.7.0 (06a5c1c) - Oracle

mysqlbinlog --raw --read-from-remote-server는 Rotate 이벤트의 new_log_ident를 basename 검사 없이 log_file_name에 복사합니다. 다음 FORMAT_DESCRIPTION 이벤트가 해당 경로를 my_fopen하고 BINLOG_MAGIC과 이벤트를 기록합니다. 실제 Rotate ident에 /를 포함하여 전송하는 악의적인 덤프는 클라이언트 UID로 해당 파일을 기록합니다.

--raw는 문서화된 원격 binlog 파일 복사입니다. 남는 문제는 ident를 경로로 취급한다는 점입니다.

ID아직 CVE 없음
분류파일 쓰기 (클라이언트 --raw BINLOG_MAGIC)
도달 범위원격 (피해자가 공격자 덤프에 대해 mysqlbinlog --raw -R 실행; UI:R)
CWECWE-22
CVSSHigh: 8.1 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N
제품MySQL Community Server mysqlbinlog
영향 받는 버전26.7.0 (06a5c1c99c377fc41b2eba1ea244e8b220bdc3c8)
인증피해자가 공격자 덤프에 대해 mysqlbinlog --raw -R 실행
라이선스GNU Affero GPL v3.0
랩127.0.0.1 전용. BINLOG_MAGIC이 있는 증거 파일. 파일 쓰기이며 RCE가 아님.

공격자가 할 수 있는 일

MySQL 프로토콜 서버를 세웁니다. COM_BINLOG_DUMP를 전송합니다. 덤프가 중단되지 않도록 일치하는 가짜 Rotate(타임스탬프 0, ident가 요청된 로그 이름과 동일)를 보냅니다. ident가 /abs/path인 실제 Rotate(타임스탬프 != 0)를 보냅니다. FORMAT_DESCRIPTION 이벤트를 보냅니다.

mysqlbinlog --raw -R ... mysql-bin.000001을 실행한 운영자는 클라이언트 UID로 /abs/path를 기록합니다. 내용은 binlog 바이트(\xfebin과 FD 이벤트)이며 임의 페이로드가 아닙니다. UID가 생성할 수 있는 모든 경로를 덮어쓸 수 있습니다.

실제 mysqld는 /가 포함된 Rotate ident를 내보내지 않습니다. 남는 문제는 클라이언트에 있습니다.

발견 방법

mysqldump SHOW TABLES 오버플로 및 mysqldump --tab 경로와 동일한 26.7.0 사냥입니다. 기본 데몬은 비어 있었습니다. 클라이언트 도구는 여전히 원격 이름을 신뢰했습니다.

if (raw_mode) {
  if (output_file != nullptr) {
    snprintf(log_file_name, sizeof(log_file_name), "%s%s", output_file,
             rev->new_log_ident);
  } else {
    my_stpcpy(log_file_name, rev->new_log_ident);
  }
}

ident가 요청된 로그와 일치하지 않는 가짜 Rotate(when.tv_sec == 0)는 덤프를 중단시킵니다. 일치하는 가짜 Rotate는 복사 후 건너뜁니다(continue). 실제 Rotate는 중단시키지 않습니다. 다음 FD:

if (!(result_file = my_fopen(
          log_file_name, O_WRONLY | MY_FOPEN_BINARY, MYF(MY_WME)))) {
  error("Could not create log file '%s'", log_file_name);

LOAD DATA 임시 파일은 tmpdir 아래 SQL_LOAD_MB로 유지됩니다. 닫힘. ident 길이는 FN_REFLEN-1로 제한됩니다. /는 제거되지 않습니다.

이미 기록된 잘못된 시도: ident가 경로인 가짜 Rotate 전송(덤프 중단); --result-file 사용(ident가 접두사가 되어 다른 문제 발생); 오라클로 실제 mysqld 사용; 체크섬 켜둔 채로.

랩

cd lab
./run.sh

이미지 mysql:26.7.0. 바이너리 /usr/libexec/mysqlsh/mysqlbinlog Ver 26.7.0 (해당 이미지의 PATH에 없음). 컨트롤 스텁: 가짜 Rotate mysql-bin.000001과 FD가 work/mysql-bin.000001을 기록. 트래버설 스텁: 일치하는 가짜 Rotate, 실제 Rotate ident /work/oracle/MYSQL-BINLOG-RAW-WITNESS, FD가 해당 경로를 기록(BINLOG_MAGIC). 공개된 127.0.0.1:18620 / 18621. 루프백에 바인딩. binlog 바이트의 파일 쓰기이며 RCE가 아님. --result-file 없음.

control-basename=yes
traversal-outside=yes
SUCCESS mysql-mysqlbinlog-raw-path ... MYSQL-BINLOG-RAW-WITNESS

수정 방법

log_file_name에 my_stpcpy / snprintf하기 전에 new_log_ident의 basename을 취하십시오. --raw는 cwd 또는 --result-file 접두사 아래에 기록해야 하며, /가 포함된 ident에 기록해서는 안 됩니다.

참고 자료

  • github.com/mysql/mysql-server 태그 mysql-26.7.0 (06a5c1c99c377fc41b2eba1ea244e8b220bdc3c8)
  • client/mysqlbinlog.cc dump_remote_log_entries
  • 형제 팩: abraxas/mysql-mysqldump-show-tables-overflow · abraxas/mysql-mysqldump-tab-path
도구 다운로드