🇰🇷 한글 설명
InstaWP Connect 플러그인이 권한 상승 취약점을 가지고 있어, 인증된 낮은 권한의 사용자가 마스터 API 키를 탈취할 수 있습니다. 탈취한 키를 통해 REST API를 호출하여 관리자 권한의 로그인 URL을 생성함으로써 사이트의 관리자 권한을 완전히 획득할 수 있습니다.
💡 쉬운 설명
낮은 권한을 가진 사용자가 플러그인의 설정 오류를 이용해 관리자의 비밀 열쇠를 훔칠 수 있는 문제입니다. 이 열쇠를 사용하면 마치 관리자인 것처럼 사이트의 모든 권한을 마음대로 휘두를 수 있습니다.
🇺🇸 원문 (English)
The InstaWP Connect – 1-click WP Staging & Migration plugin for WordPress is vulnerable to Privilege Escalation in all versions up to, and including, 0.1.4.1 This is due to the plugin registering its admin page via `add_management_page()` using a role name returned by `InstaWP_Setting::get_allowed_role()` as the required capability — which WordPress resolves as a real capability match for any user holding that role — combined with `generate_section_field()` rendering the master API key from the `instawp_api_options` option directly as the `value` attribute of a plain-text HTML input with no additional `manage_options` or equivalent capability check. This makes it possible for authenticated attackers with Subscriber-level access and above to read the plaintext master API key, use its SHA-256-derived secret as a bearer token accepted by the plugin's REST API `validate_api_request()`, and call `POST /wp-json/instawp-connect/v2/auto-login` to mint a 30-second single-use login URL that sets an administrator authentication cookie — fully escalating their privileges. Exploitation requires the site to be actively connected to InstaWP and an administrator to have added the attacker's role to the plugin's Sync Tab Access list (`instawp_sync_tab_roles`); notably, the settings tab suppression logic only hides the tab when `administrator` is absent from the list entirely, meaning a mixed configuration retaining administrator alongside a lower role still serves the full settings page — including the API key — to the lower-privileged user.
📍 영향받는 시스템
InstaWP Connect – 1-click WP Staging & Migration plugin (버전 0.1.4.1 및 그 이하 모든 버전)
⚔️ 공격 벡터
낮은 권한의 사용자가 노출된 API 키를 이용해 REST API로 관리자 로그인 URL을 생성하는 방식
🛡️ 대응 방법
플러그인을 최신 버전으로 업데이트하고, Sync Tab Access 설정에서 불필요한 역할의 접근을 제한하십시오.
🔧 검증 코드
출력된 플러그인 버전이 0.1.4.1 이하인지 확인하여 취약 여부를 판단합니다.
wp plugin list --status=active | grep -i 'instawp-connect' && wp plugin list --all | grep -E 'instawp-connect' | awk '{print $2 " " $3}'