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

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
phpmyadmin-designer-json-sqli — phpMyAdmin 5.2.3 - 높음 - 원격 - SQLi - Designer JSON 미살균 식별자 | Kitploit
도구/GitHubGitHub/abraxas/phpmyadmin-designer-json-sqli
Vulnerability AnalysisExploitationWeb Application ExploitationWeb SecurityPenetration TestingDatabase SecurityLabs & Practice
GitHub
abraxas/phpmyadmin-designer-json-sqli

phpmyadmin-designer-json-sqli

phpMyAdmin 5.2.3 - 높음 - 원격 - SQLi - Designer JSON 미살균 식별자

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Abraxas Labs - phpmyadmin-designer-json-sqli

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

분석 문서: https://abraxaslabs.tech/research/phpmyadmin-designer-json-sqli

phpmyadmin-designer-json-sqli

분류: SQLi 도달 범위: 원격

phpMyAdmin 5.2.3 (태그 RELEASE_5_2_3, 커밋 962857e). Designer AJAX save_setting_value는 설정 블롭을 json_encode한 뒤, 컨트롤 사용자 링크에 대한 단일 인용부호 UPDATE/INSERT에 연결합니다. 사용자 이름은 이스케이프됩니다. JSON은 그렇지 않습니다. json_encode는 단일 인용부호를 이스케이프하지 않습니다.

로그인한 사용자가 operation=save_setting_value와 value에 인용부호를 넣어 index.php?route=/database/designer로 POST합니다. 그러면 queryAsControlUser가 해당 문자열을 pma 컨트롤 사용자로 pma__designer_settings에 대해 실행합니다. 해당 계정은 구성 저장소이며, 로그인한 SQL 박스가 아닙니다. phpMyAdmin 6.x는 ControlUser에서 이 블롭을 quoteString으로 감쌉니다. 5.2.3은 여전히 그대로 연결합니다.

이전 designer CVE들(2016-6616, 2019-11768, 2019-18622)은 사용자 이름 / 데이터베이스 이름이었습니다. 이번 잔여 취약점은 JSON settings_data 컬럼입니다.

ID아직 CVE 없음
분류SQLi (pma__designer_settings에 대한 컨트롤 사용자)
도달 범위원격 (인증된 쿠키 로그인; Designer + pma__designer_settings 활성화)
CWECWE-89
CVSS높음: 8.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
제품phpMyAdmin
영향받는 버전5.2.3 태그 RELEASE_5_2_3 (962857e)
인증인증된 쿠키 로그인. Designer + pma__designer_settings 활성화.
라이선스GNU Affero GPL v3.0
랩127.0.0.1:19220 전용

공격자가 할 수 있는 일

Designer를 열 수 있는 로그인한 phpMyAdmin 사용자는 pma__designer_settings에 대해 컨트롤 사용자로서 SQL을 주입할 수 있습니다.

권한메서드 / 경로랩에서 입증 또는 추론
컨트롤 사용자 UPDATE/INSERT 문자열 깨기 (pmadb SQL 무결성)POST index.php?route=/database/designer operation=save_setting_value에 value 내 인용부호 포함랩에서 입증. 일반 로그: SET settings_data = '{"snap_line":"PMA-DESIGNER-JSON-SQLI-WITNESS'#" }' 원시. quoteString 부재
자신의 settings_data를 잘라 더 이상 JSON이 아니게 만들기 (자신의 행 무결성)동일 POST; #가 문의 나머지를 주석 처리랩에서 입증. appuser 블롭에 위트니스가 포함되며 유효한 JSON이 아님. 정상 저장 grid-ok가 사라짐
스택 쿼리 없이 다른 사용자의 designer 행 덮어쓰기 (피해자 행 무결성)동일 #가 WHERE username = '...'를 주석 처리랩에서 입증. 시드 victim {"keep":"safe"}가 잘린 위트니스 블롭이 됨
컨트롤 사용자로서 추가 문 실행컨트롤 mysqli 링크가 다중 쿼리를 허용하는 경우 동일 싱크추론. 기본 mysqli::query는 단일 문. 여기서는 활성화되지 않음
다른 pmadb 테이블(북마크, 히스토리, pma__userconfig)에 도달스택 쿼리 또는 쓰기 방식의 탈출이 가능한 경우에만추론. 이 랩의 컨트롤 사용자는 phpmyadmin.* DML만 보유
이 랩에서 차단된 것: 비인증 접근, 로그인한 appuser SQL 박스(appdb 전용; appuser는 phpmyadmin에 대한 GRANT 없음), OS 셸, 스택 쿼리. pmadb / designer 설정이 꺼져 있으면 기능이 무력화됨(이는 FAIL이며, 이번 잔여 취약점이 아님).

발견 경위

RELEASE_5_2_3에 대한 8개의 병렬 소스 탐색. saveSetting은 json_encode를 '...'에 연결합니다. 사용자 이름은 escapeString입니다. 6.x는 이미 이 블롭을 quoteString합니다. 5.2.3은 그렇지 않습니다.

잘못된 시도: username에 주입(이스케이프됨); #1064을 기대함(#이 나머지를 주석 처리하므로 MySQL은 잘린 UPDATE를 받아들임); 스택 쿼리를 입증된 것으로 간주함(mysqli 기본값은 단일 문장).

실습

python3 phpmyadmin-designer-json-sqli-Abraxas-Labs.py

또는

cd lab
./run.sh

루프백 전용: http://127.0.0.1:19220. 이미지 phpmyadmin:5.2.3 및 mysql:8.0. Compose 프로젝트 phpmyadmin-designer-json-sqli. Witness PMA-DESIGNER-JSON-SQLI-WITNESS.

SUCCESS phpmyadmin-designer-json-sqli version=5.2.3 how=live raw-concat=yes truncated=true sql-error=false quoteString=no PMA-DESIGNER-JSON-SQLI-WITNESS

수정 사항

JSON blob에 대해 quoteString(..., ControlUser) / escapeString을 적용하며, 이는 RecentFavoriteTable::saveToDb() 및 이 컬럼에 대한 phpMyAdmin 6.x와 동일합니다. json_encode 출력을 작은따옴표로 묶인 SQL 리터럴 안에 넣지 마십시오.

참고 자료

  • github.com/phpmyadmin/phpmyadmin 태그 RELEASE_5_2_3 (962857e)
  • libraries/classes/Database/Designer/Common.php saveSetting
  • Controllers/Database/DesignerController.php POST operation=save_setting_value
  • 라우트 GET|POST /database/designer
  • 동일한 핀 잔여물: phpmyadmin-webauthn · phpmyadmin-pmadb-central-sqli · phpmyadmin-setup-validate · phpmyadmin-csrf-sql
  • CWE-89

라이선스

GNU Affero GPL v3.0. LICENSE를 참조하십시오. 루프백 실습 환경 전용입니다. 보증하지 않습니다.

도구 다운로드