🇰🇷 한글 설명
Exponent CMS 2.4에서 PHP reflection을 사용한 메서드 호출 시 권한 검사가 case-insensitive한 메서드명에 대해 제대로 작동하지 않는 문제가 있다. 정의되지 않은 액션의 기본 실행 허용과 결합되어 메서드명의 대소문자 변경으로 인증 우회가 가능하다.
💡 쉬운 설명
Exponent CMS의 권한 검사 방식이 대문자/소문자를 구분하지 않아 특정 단어를 대문자로 바꾸면 접근 제한을 무시할 수 있다. 권한 없는 사용자도 제한된 기능을 실행할 수 있게 된다.
🇺🇸 원문 (English)
Exponent CMS 2.4 uses PHP reflection to call a method of a controller class, and then uses the method name to check user permission. But, the method name in PHP reflection is case insensitive, and Exponent CMS permits undefined actions to execute by default, so an attacker can use a capitalized method name to bypass the permission check, e.g., controller=expHTMLEditor&action=preview&editor=ckeditor and controller=expHTMLEditor&action=Preview&editor=ckeditor. An anonymous user will be rejected for the former but can access the latter.
📍 영향받는 시스템
Exponent CMS 2.4 이하
⚔️ 공격 벡터
HTTP 요청의 action 파라미터에서 메서드명을 대문자로 변경하여 권한 검사 우회 (예: preview → Preview)
🛡️ 대응 방법
Exponent CMS를 최신 버전으로 업그레이드하거나 메서드명 비교를 case-insensitive하게 정규화하고 미정의 액션 실행 차단
🔧 검증 코드
Exponent CMS 설치 경로를 찾은 후 2.4 버전 문자열이 발견되면 취약한 버전이 설치된 상태다. 결과가 없으면 더 신규 버전이거나 미설치 상태다.
find /var/www -name '*exponent*' -type d 2>/dev/null | head -1 && grep -r '2\.4' /var/www/ 2>/dev/null | grep -i exponent | head -1