🇰🇷 한글 설명
Grav Admin2 플러그인 2.0.4 이전 버전은 /grav/admin 경로의 SPA 부트스트랩 페이지에 전역 JavaScript 변수 window.__GRAV_CONFIG__를 포함합니다. 이 객체는 인증 없이도 서버 URL, API 접두사, 관리자 경로, 런타임 환경, Grav 및 Admin2의 정확한 버전 정보를 노출하여 공격자가 정찰 없이 버전별 익스플로잇을 선택할 수 있게 합니다.
💡 쉬운 설명
이 문제는 로그인하지 않은 사람도 관리 페이지에서 웹사이트가 어떤 프로그램과 버전으로 만들어졌는지 알아낼 수 있게 합니다. 공격자는 이 정보를 이용해 해당 버전의 취약점을 골라 공격할 수 있습니다.
🇺🇸 원문 (English)
The Grav Admin2 plugin (getgrav/grav-plugin-admin2) before 2.0.4 embeds a global JavaScript variable window.__GRAV_CONFIG__ in the Admin2 SPA bootstrap page at /grav/admin (and its subroutes). This object is returned in every unauthenticated response and discloses the server URL, API prefix, admin base path, runtime environment type, and exact Grav and Admin2 version numbers, allowing an unauthenticated attacker to fingerprint the deployment and select version-specific exploits without reconnaissance.
📍 영향받는 시스템
Grav CMS의 getgrav/grav-plugin-admin2 플러그인 2.0.4 미만 버전
⚔️ 공격 벡터
인증 없이 /grav/admin 페이지 소스를 조회해 window.__GRAV_CONFIG__의 버전 정보를 확인한 뒤, 해당 버전에 맞는 알려진 익스플로잇을 실행
🛡️ 대응 방법
grav-plugin-admin2를 2.0.4 이상으로 업데이트하고 가능하면 관리자 페이지 접근을 IP 등으로 제한
🔧 검증 코드
출력된 Admin2 버전이 2.0.4 미만이면 취약하며, 2.0.4 이상이면 패치된 상태입니다. 결과가 없으면 플러그인이 설치되지 않았을 가능성이 있습니다.
grep -rE "version" $(find / -path '*grav*' -name 'blueprints.yaml' -path '*admin2*' 2>/dev/null | head -1) 2>/dev/null | head -5