## 关键漏洞信息 ### 受影响的产品 - Train Station Ticketing System Project ### 厂商主页 - [https://www.sourcecodester.com/php/14572/train-station-ticketing-system-using-phpmysql-source-code.html](https://www.sourcecodester.com/php/14572/train-station-ticketing-system-using-phpmysql-source-code.html) ### 受影响/已修复版本 - V1.0 ### 软件链接 - [https://www.sourcecodester.com/download-code?nid=14572&title=Train+Station+Ticketing+System+using+PHP%2FMySQL+with+Source+Code](https://www.sourcecodester.com/download-code?nid=14572&title=Train+Station+Ticketing+System+using+PHP%2FMySQL+with+Source+Code) ### 漏洞类型 - SQL Injection ### 根本原因 - 在 `/ajax.php?action=save_ticket` 文件中,由于对 `price[1]` 参数未进行足够的用户输入验证,导致SQL注入漏洞。攻击者可以注入恶意SQL代码,从而操纵SQL查询并执行未授权操作。 ### 影响 - 通过利用此SQL注入漏洞,攻击者可以获取未经授权的数据库访问权限,导致敏感数据泄露、数据篡改、系统控制及服务中断,严重威胁系统安全和业务连续性。 ### 描述 - 在对 "Train Station Ticketing System Project PHP" 的安全审查中,发现关键SQL注入漏洞,位于 `/ajax.php?action=save_ticket` 文件中。此漏洞源于对 `price[1]` 参数的用户输入验证不足,允许攻击者注入恶意SQL查询。 ### 漏洞详情和POC #### 漏洞别名 - `price[1]` 参数 #### Payload ``` origin_station=2&destination_id=3&pax[1]=2&price[1]=15.00' AND (SELECT 3817 FROM (SELECT(SLEEP(5))))g3]=13.00&total_amount=82 ``` ### 建议修复 1. **使用预编译语句和参数绑定**: - 预编译语句可以防止SQL注入,因为它将SQL代码与用户输入数据分离。使用预编译语句时,用户输入的值被视为纯数据,不会被解释为SQL代码。 2. **输入验证和过滤**: - 严格验证和过滤用户输入数据,确保其符合预期格式。 3. **最小化数据库用户权限**: - 确保用于连接数据库的账户具有最小必要权限,避免使用具有高级权限的账户(如root或admin)进行日常操作。 4. **定期安全审计**: - 定期进行代码和系统安全审计,及时发现和修复潜在的安全漏洞。