CVE-2024-44654CVE-2024-44654是PHPGurukul Complaint Management System 2.0中的一个中等严重性安全漏洞,CVSS评分6.5。该漏洞存在于reset-password.php页面,由于对用户输入的email和mobileno参数缺乏充分的输入验证和过滤,攻击者可以通过构造恶意的SQL语句片段实现SQL注入攻击。
PHPGurukul Complaint Management System是一款基于PHP和MySQL开发的在线投诉管理系统,广泛应用于各类企业和组织的客户服务部门。该系统提供了用户注册、登录、提交投诉、查看投诉状态等功能模块。其中密码重置功能允许用户通过邮箱或手机号码验证身份后重置密码。
然而,由于开发人员在实现密码重置功能时对用户输入参数处理不当,攻击者可以在email或mobileno字段中注入SQL代码,从而在数据库查询中执行任意SQL语句。这可能导致以下风险:未经授权访问用户账户、窃取敏感用户数据(包括用户名、密码哈希、邮箱地址等)、修改或删除数据库中的投诉记录、在某些情况下甚至可能通过MySQL的LOAD_FILE、INTO OUTFILE等函数实现系统文件读取或写入,进一步可能导致服务器被完全控制。
该漏洞的CVSS向量显示攻击复杂度低,无需认证和用户交互即可利用,攻击者可以通过网络直接发起攻击。虽然机密性和完整性影响仅为低级别,但大量用户数据面临泄露风险,仍需及时修复。
漏洞位于PHPGurukul Complaint Management System 2.0的reset-password.php文件中的密码重置功能模块。系统在处理用户请求时,直接将用户输入的email和mobileno参数拼接到SQL查询语句中,而未进行充分的输入验证或使用参数化查询。
攻击者可以通过在email或mobileno参数中注入SQL代码片段,如使用单引号(')闭合原始字符串,然后添加UNION SELECT、布尔盲注、时间盲注等SQL注入技术来提取数据库中的敏感信息。
常见的注入payload包括:
1. 使用单引号测试注入点:email=' OR '1'='1
2. 使用UNION注入提取数据:email=' UNION SELECT user(),database(),3-- -
3. 使用布尔盲注:email=' OR (SELECT COUNT(*) FROM users)>0--
4. 使用时间盲注:email=' OR SLEEP(5)--
由于该系统使用MySQL数据库,攻击者可能通过注入获取users表中的用户名和密码哈希。如果管理员密码强度不足,攻击者可快速破解并获得后台管理权限,进一步扩大攻击面。
此外,通过SQL注入,攻击者还可以:
- 枚举数据库结构和表名
- 读取任意数据库记录
- 写入恶意文件到Web目录(如果MySQL权限允许)
- 在某些配置下执行系统命令