MainWP插件"添加联系人"名称字段存储型XSS漏洞分析与修复

本文详细分析了MainWP WordPress插件客户端管理功能中存在的存储型跨站脚本漏洞,攻击者可通过联系人名称字段注入恶意代码,导致管理员会话劫持和系统完全控制,并记录了漏洞从发现到修复的全过程。

存储型跨站脚本(XSS)漏洞报告 - MainWP插件

漏洞概述

在测试MainWP WordPress插件(https://github.com/mainwp/mainwp)时,发现客户端管理功能中存在存储型XSS漏洞,具体位于"添加联系人" > 联系人姓名字段。

技术细节

漏洞成因

应用程序在将用户输入渲染回DOM之前未进行清理过滤,导致攻击者可以注入恶意JavaScript载荷。这些载荷存储在数据库中,并在任何查看受感染客户端配置文件的用户(通常是管理员)浏览器中执行。

漏洞验证

通过编辑客户端时在联系人姓名字段插入以下载荷进行验证:

1
</TITLE><SCRIPT>alert("XSS By Rishail 2025");</SCRIPT>

保存更改后,载荷按原样存储,并在重新加载客户端详情页面时立即执行JavaScript,证实了XSS漏洞的存在。

影响分析

该漏洞允许攻击者在查看受影响页面的任何用户浏览器中执行任意JavaScript,导致用户会话和操作的完全控制。

攻击者可利用此漏洞:

  • 窃取管理员会话cookies
  • 以管理员身份执行未授权操作(例如添加恶意客户端或插件)
  • 如果攻击者在联系人姓名字段存储恶意脚本,任何查看或编辑该客户端的管理员都会无意中触发载荷

攻击链分析

虽然初始注入可能需要管理员级别访问权限,但攻击影响链会快速升级:

  • 载荷存储在数据库中并在UI的多个部分呈现
  • 任何查看或编辑客户端的管理员都会触发载荷,无需攻击者在注入后采取任何操作
  • 如果攻击者通过钓鱼、凭据泄露或插件配置错误获得低权限MainWP用户访问权限,他们可以植入此载荷并等待完全管理员触发

修复过程

开发团队提供了mainwp.zip修复文件,经测试确认已成功修复该存储型XSS漏洞。

协调披露

厂商请求30天的协调期以确保用户有足够时间更新,之后将进行CVE分配和技术细节公开。

赏金争议

尽管漏洞得到确认和修复,但厂商认为该漏洞需要管理员权限才能利用,因此只提供了50美元赏金,远低于报告者的预期。厂商解释其赏金计划主要关注无需管理员权限即可利用的漏洞。


漏洞状态:已修复 严重等级:中等 赏金金额:50美元 CVE ID:未分配

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计