CVE-2025-11481CVE-2025-11481是varunsardana004开发的Blood-Bank-And-Donation-Management-System(血库与献血管理系统)中存在的一个SQL注入安全漏洞。该漏洞的CVSS 3.1评分为6.3,属于中危级别。该系统的核心功能之一是管理献血者的信息和献血记录,其中/donate_blood.php文件负责处理献血登记相关的业务逻辑。
根据漏洞披露信息,该漏洞存在于/donate_blood.php文件中,具体涉及对fullname参数的处理逻辑存在缺陷。攻击者可以通过精心构造的恶意SQL语句作为fullname参数的值提交给服务器,从而触发SQL注入漏洞。由于该系统采用滚动发布(rolling release)模式进行持续交付,因此官方未明确披露受影响的具体版本号或已修复的版本信息。
该漏洞的攻击向量为网络(AV:N),攻击复杂度低(AC:L),仅需要低权限认证(PR:L),无需用户交互(UI:N)。一旦成功利用,攻击者可以在数据库上下文中执行任意SQL语句,对系统的机密性、完整性和可用性均造成低级别影响。攻击者可能通过该漏洞窃取数据库中的敏感信息(如献血者个人信息、医疗记录等),篡改数据,或者通过进一步的数据库操作(如写入Webshell、读取文件等)实现更高级别的攻击。该漏洞的利用代码已被公开披露,潜在的安全风险较高。
该漏洞的根因在于/donate_blood.php文件在处理用户提交的fullname参数时,未对该参数进行充分的输入验证和过滤,直接将其拼接到SQL查询语句中执行,导致SQL注入漏洞的产生。
从技术层面分析,当用户访问/donate_blood.php并提交献血信息时,系统会接收fullname等表单字段作为输入参数。由于fullname参数未经过参数化查询(Prepared Statement)或适当的转义处理(如使用mysqli_real_escape_string等函数),攻击者可以通过在fullname参数中注入SQL元字符(如单引号'、注释符--、UNION关键字等)来改变原始SQL语句的语义和结构。
例如,正常的SQL查询可能类似于:
INSERT INTO donations (fullname, ...) VALUES ('$fullname', ...)
攻击者可以构造如下payload:
fullname=test' OR '1'='1' --
这将导致SQL语句变为:
INSERT INTO donations (fullname, ...) VALUES ('test' OR '1'='1' -- ', ...)
通过类似的技术,攻击者可以实现:1)绕过认证和授权检查;2)提取数据库中的敏感数据(如管理员凭证、献血者信息);3)通过UNION查询获取其他表的数据;4)利用MySQL的INTO OUTFILE等功能写入Webshell;5)通过堆叠查询(stacked queries)执行任意SQL命令。
由于该漏洞仅需要低权限认证即可利用(PR:L),这意味着已注册用户(如普通献血者账户)即可发起攻击,攻击门槛相对较低。漏洞的利用代码已在GitHub上公开(github.com/sanin-s1r3n/CVE-Research),使得该漏洞面临较高的被大规模利用的风险。