在 Grocery Store Management System 1.0(一个由 anirudhkannan 开发的基于 PHP/MySQL 的 Web 应用程序)的 search_products.php 组件中,发现了一个高严重性的 SQL 注入 漏洞。
该问题源于对用户控制的 scost 参数输入验证不当以及不安全的 SQL 查询构建方式。此漏洞使攻击者能够操纵底层 SQL 逻辑,可能导致敏感数据泄露、数据篡改或数据库完全沦陷。
Grocery/search_products.php该漏洞源于将未经验证的用户输入直接拼接进 SQL 查询。
本应表示数值型产品成本值的 POST 参数 scost,在未进行以下操作的情况下被嵌入到 SQL WHERE 子句中:
这使得攻击者能够注入任意 SQL 布尔表达式,改变查询行为,并利用基于布尔的 SQL 注入技术提取数据库内容。
该漏洞可通过向 search_products.php 发送标准 POST 请求进行利用。当提供恶意表达式时,后端会返回可测量的响应差异(TRUE/FALSE 变化),证实了用户输入对 SQL 逻辑产生了影响。
scost 输入字段的服务端验证这些条件共同使攻击者能够修改预期的 SQL 逻辑。
该漏洞被评定为高危,原因是其攻击复杂度低、无需认证,且对数据库具有完全读写能力。
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
预估严重性:高危 (9.8)
该漏洞可通过向 scost 参数传递精心构造的值进行利用。
攻击者可:
(为防范滥用,已故意省略详细载荷。)
修复该漏洞:
scost 仅接受数值在补丁可用前: