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

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
phpmyadmin-importldi — phpMyAdmin 5.2.3 - 높음 - 원격 - SQLi - ImportLdi TERMINATED BY 잔여물 | Kitploit
도구/GitHubGitHub/abraxas/phpmyadmin-importldi
Vulnerability AnalysisExploitationWeb Application ExploitationWeb SecurityPenetration TestingLabs & Practice
GitHubabraxas/phpmyadmin-importldi

phpmyadmin-importldi

phpMyAdmin 5.2.3 - 높음 - 원격 - SQLi - ImportLdi TERMINATED BY 잔여물

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Abraxas Labs - phpmyadmin-importldi

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  phpmyadmin-importldi

phpmyadmin-importldi

Class: SQLi Reach: Remote

phpMyAdmin 5.2.3 (RELEASE_5_2_3 / 962857e) - phpMyAdmin

ImportLdi.php는 POST ldi_terminated와 ldi_new_line로부터 FIELDS/LINES TERMINATED BY를 사용해 LOAD DATA를 구성합니다. 이 두 문자열은 작은따옴표로 감싼 SQL에 그대로 연결됩니다. ldi_enclosed와 ldi_escaped는 escapeString을 거칩니다. phpMyAdmin은 /import에서 PMA_ENABLE_LDI를 설정하므로 MYSQLI_OPT_LOCAL_INFILE이 켜집니다.

로그인한 사용자가 ldi_terminated에 따옴표를 넣어 format=ldi를 POST합니다. 발행된 LOAD DATA는 TERMINATED BY 안에 원시 POST 값을 포함합니다. 제어 사용자가 아닌 사용자 연결에 대한 SQL 인젝션입니다.

ID아직 CVE 없음
ClassSQLi
ReachRemote (인증된 쿠키 로그인, 테이블 가져오기, ldi 형식)
CWECWE-89
CVSSMedium: 6.5 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N
ProductphpMyAdmin
Affected5.2.3 태그 RELEASE_5_2_3 (962857e4f63d42e38f11ff4d63f5e722018add76)
Auth인증된 쿠키 로그인. 테이블 가져오기, ldi 형식
LicenseGNU Affero GPL v3.0
Lab127.0.0.1 전용

공격자가 할 수 있는 일

테이블 가져오기를 열 수 있는 로그인한 phpMyAdmin 사용자는 자신의 MySQL 연결에서 LOAD DATA ... TERMINATED BY에 SQL을 주입할 수 있습니다.

PrivilegeMethod / sinkRecon / integrity / availabilityLab-proven or inferred
FIELDS TERMINATED BY 리터럴 깨기POST index.php?route=/import format=ldi ldi_terminated에 따옴표PMA가 구성하는 구문의 무결성실험실 입증. HTML SQL 박스: TERMINATED BY '',PMA-IMPORTLDI-WITNESS'
ENCLOSED BY를 대역 내로 유지동일 POST, ldi_enclosed에 따옴표음성 대조실험실 입증. ENCLOSED BY는 이스케이프됨
사용자 연결에 추가 SQL (INTO OUTFILE / 허용 시 스택)문자열이 닫힌 후 동일 sink사용자 연결의 무결성추론. 실험실은 깨진 구분자에서 중단. 기본 mysqli::query는 단일 구문
MySQL 측 파일 읽기/쓰기계정에 FILE 또는 웹 서버로의 LOCAL INFILE이 있는 경우 동일 LOAD DATAmysqld가 접근할 수 있는 파일의 무결성추론. 여기서는 부여되지 않음. 주장하지 않음

이 실험실에서 배제된 것: 비인증 접근, 제어 사용자 / pmadb, OS include LFI, FILE로 제한된 읽기/쓰기. 로그인한 사용자는 이미 SQL 박스를 가지고 있으며, 이 잔여물은 PMA가 그들을 위해 구성하는 구문 내부의 이스케이프되지 않은 구분자입니다.

동일 핀: WebAuthn CustomServer 잔여물.

발견 방법

phpMyAdmin RELEASE_5_2_3을 핀했습니다. LOAD DATA를 직접 구성하는 가져오기 플러그인은 인용 감사 대상입니다. 네 개의 구분자 필드 중 두 개는 이스케이프되었고, 두 개는 그렇지 않았습니다:

$sql .= ' FIELDS TERMINATED BY \'' . $ldi_terminated . '\'';
...
$sql .= ' LINES TERMINATED BY \'' . $ldi_new_line . '\'';

ldi_enclosed / ldi_escaped는 $dbi->escapeString을 호출합니다. Common.php는 /import + format=ldi에서 PMA_ENABLE_LDI를 설정합니다. 라우트 GET|POST /import 및 GET|POST /table/import.

이미 기록된 잘못된 방향: FILE 권한 없이 LFI를 주장; SQL 박스를 발견으로 취급(PMA가 연결하는 이스케이프되지 않은 구분자가 잔여물임); 제어 사용자 / pmadb 주장; 리버스 셸. 연극.

실험실

python3 phpmyadmin-importldi-Abraxas-Labs.py
# or: cd lab && ./run.sh

오직 http://127.0.0.1:19290만 대상으로 합니다. 이미지 phpmyadmin:5.2.3 및 mysql:8.0. Compose 프로젝트 phpmyadmin-importldi. 실행 후 스택은 해체됩니다.

쿠키 로그인. format=ldi와 ldi_terminated에 따옴표를 넣어 /import에 POST합니다. 발행된 LOAD DATA LOCAL INFILE ... INTO TABLE \ldi_target` FIELDS TERMINATED BY '',PMA-IMPORTLDI-WITNESS'. ldi_enclosed에 동일한 따옴표는 이스케이프된 ENCLOSED BY로 저장됩니다. 5.2.3 이미지의 핀 소스에는 여전히 '.$ldi_terminated.'와 $dbi->escapeString($ldi_enclosed)`가 있습니다.

SUCCESS phpmyadmin-importldi pin=RELEASE_5_2_3 how=live TERMINATED-BY-raw ENCLOSED-escaped PMA-IMPORTLDI-WITNESS

수정

ldi_terminated와 ldi_new_line에 escapeString을 적용하며, enclosed와 escaped와 동일합니다. skip_queries는 int로 캐스트합니다.

참고 자료

  • github.com/phpmyadmin/phpmyadmin 태그 RELEASE_5_2_3 (962857e4f63d42e38f11ff4d63f5e722018add76)
  • libraries/classes/Plugins/Import/ImportLdi.php
  • 동일 핀: PMA-5.2.3-WebAuthn-2FA
  • CWE-89

라이선스

GNU Affero GPL v3.0. LICENSE 참조. 루프백 실험실 전용. 보증 없음.

도구 다운로드