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

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
phpmyadmin-issuperuser — phpMyAdmin 5.2.3 - 높음 - 원격 - 잔여 - isSuperUser 검사 건너뜀 | Kitploit
도구/GitHubGitHub/abraxas/phpmyadmin-issuperuser
Privilege EscalationVulnerability AnalysisExploitationWeb Application ExploitationWeb SecurityPenetration TestingLabs & Practice
GitHubabraxas/phpmyadmin-issuperuser

phpmyadmin-issuperuser

phpMyAdmin 5.2.3 - 높음 - 원격 - 잔여 - isSuperUser 검사 건너뜀

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Abraxas Labs - phpmyadmin-issuperuser

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

phpmyadmin-issuperuser

분류: 권한 잔여 도달: 원격

phpMyAdmin 5.2.3 (RELEASE_5_2_3 / 962857e) - phpMyAdmin

DatabaseInterface::isSuperUser()는 SUPER / SYSTEM_USER 검사가 아니다. 이는 SELECT 1 FROM mysql.user LIMIT 1이다. mysql.user를 읽을 수 있는 모든 계정은 세션 내내 슈퍼유저로 캐시된다. $cfg['AllowUserDropDatabase']의 기본값은 false이다. DestroyController, SqlController, ImportController, 그리고 databases 페이지는 모두 해당 플래그를 우회하여 isSuperUser 지름길을 사용한다.

새로운 MySQL 권한이 아니라 phpMyAdmin 정책 우회이다. mysql.user에 대한 SELECT와 DROP이 있고 SUPER가 없으면 PMA를 통해 Drop하기에 충분하다.

ID아직 CVE 없음
분류권한 잔여
도달원격 (MySQL 계정으로 인증된 쿠키 로그인)
CWECWE-863
CVSS중간: 6.3 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L
제품phpMyAdmin
영향받음5.2.3 태그 RELEASE_5_2_3 (962857e4f63d42e38f11ff4d63f5e722018add76)
인증MySQL 계정으로 인증된 쿠키 로그인
라이선스GNU Affero GPL v3.0
랩127.0.0.1 전용

공격자가 할 수 있는 일

mysql.user를 읽을 수 있고(일반적인 백업/모니터링 SELECT) SUPER 없이 DROP 권한을 가진 로그인된 MySQL 계정은 phpMyAdmin 슈퍼유저로 취급된다.

권한메서드 / 싱크정찰 / 무결성 / 가용성랩 입증 또는 추론
$cfg['AllowUserDropDatabase']=false를 우회하고 databases 페이지에서 Drop을 본다GET index.php?route=/server/databasesDrop UI 정찰랩 입증. selectuser에 대해 bulkActionDropButton / selected_dbs[] 존재; plaindrop에는 없음
PMA destroy 핸들러를 통해 데이터베이스 삭제POST index.php?route=/server/databases/destroy selected_dbs[]=dropme ajax_request=true해당 데이터베이스의 무결성 / 가용성랩 입증. JSON success:true, "1 database has been dropped successfully." dropme 사라짐
SQL 상자에서 DROP DATABASE 실행POST index.php?route=/sql sql_query=DROP DATABASE \dropme_sql``해당 데이터베이스의 무결성 / 가용성랩 입증. 데이터베이스 사라짐. 부정 계정은 "DROP DATABASE statements are disabled."를 받음
isSuperUser()로 게이트된 다른 PMA 화면 잠금 해제Privileges, replication, status, user groups, engines, binlog, variables해당 화면의 정찰 / 무결성호출 지점에서 추론. 실행되지 않음
mysql.user 읽기PMA가 SUPER 오라클로 사용하는 MySQL SELECTPMA가 SUPER로 착각하는 카탈로그 정찰랩 입증. 그 권한 부여가 잔여가 SUPER로 착각하는 것임

이 랩에서 닫힘: 실제 MySQL SUPER (SHOW GRANTS는 USAGE + 테이블 DROP + mysql.user에 대한 SELECT로 유지됨). FILE, GRANT OPTION, shutdown, ALL PRIVILEGES는 부여되지 않음. DROP은 있지만 mysql.user에 대한 SELECT가 없는 계정은 여전히 PMA를 통해 삭제할 수 없다. 이는 새로운 MySQL 권한이 아니며 RCE도 아니다.

동일 핀: WebAuthn CustomServer 잔여.

발견 방법

phpMyAdmin RELEASE_5_2_3을 고정했다. SUPER처럼 말하는 권한 게이트는 SUPER처럼 보여야 한다. 이것은 카탈로그 SELECT처럼 보인다:

$result = $this->tryQuery('SELECT 1 FROM mysql.user LIMIT 1');
$isSuperUser = false;
if ($result) {
    $isSuperUser = (bool) $result->numRows();
}
SessionCache::set('is_superuser', $isSuperUser);

AllowUserDropDatabase(기본값 false) 주변에서 이 플래그를 사용하는 게이트:

  • Controllers/Server/DatabasesController.php is_drop_allowed
  • Controllers/Server/Databases/DestroyController.php (AJAX destroy)
  • Controllers/Sql/SqlController.php / Sql::hasNoRightsToDropDatabase
  • Controllers/Import/ImportController.php
  • Controllers/Database/OperationsController.php

이미 기록된 잘못된 방향: 실제 MySQL SUPER라고 주장; DROP만 있는 계정을 버그로 취급(그 계정은 부정 통제); 이를 RCE로 과장; 리버스 셸. 연극.

랩

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

대상은 오직 http://127.0.0.1:19270. 이미지 phpmyadmin:5.2.3 및 mysql:8.0. Compose 프로젝트 phpmyadmin-issuperuser. $cfg['AllowUserDropDatabase']=false. 실행 후 스택은 해체된다.

selectuser는 mysql.user에 대한 SELECT와 dropme / dropme_sql에 대한 DROP을 가지며 SUPER는 없다. plaindrop은 nodropme에 대한 DROP만 가진다. Databases 페이지는 selectuser에 대해 Drop을 그린다. POST /server/databases/destroy는 dropme를 삭제한다. DROP DATABASE dropme_sql을 사용한 POST /sql도 실행된다. plaindrop은 여전히 destroy에서 Error JSON을 받았고 /sql에서 "DROP DATABASE statements are disabled"를 받았다.

SUCCESS phpmyadmin-issuperuser drop-ui=yes destroy=ok sql-drop=ok grants-no-super=yes mysql.user-select=yes neg-drop-ui=no neg-destroy=denied PMA-ISSUPERUSER-WITNESS

수정

INFORMATION_SCHEMA 또는 SHOW GRANTS를 통해 실제 SUPER / SYSTEM_USER를 테스트하라. 실제로 해당 카탈로그가 필요한 UI를 위해 별도의 "mysql.user를 읽을 수 있음" 플래그를 유지하라. 카탈로그 SELECT를 슈퍼유저로 캐시하지 마라.

참고

  • github.com/phpmyadmin/phpmyadmin 태그 RELEASE_5_2_3 (962857e4f63d42e38f11ff4d63f5e722018add76)
  • libraries/classes/DatabaseInterface.php isSuperUser()
  • 동일 핀: PMA-5.2.3-WebAuthn-2FA
  • CWE-863

라이선스

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

도구 다운로드