免责声明: 本仓库仅用于教育目的和道德披露。该漏洞已负责任地报告给厂商并已修复。请勿在没有适当授权的情况下利用此信息攻击系统。
在 WordPress 的 Contact List - Online Staff Directory & Address Book 插件(版本 <= 3.0.17)中发现了一个**存储型跨站脚本(XSS)漏洞。该漏洞允许具有作者(Author)**或更高权限的已认证用户,通过一个隐藏的自定义字段向联系人卡片中注入恶意 JavaScript。
当联系人卡片在面向公众的目录中渲染时,注入的载荷会在任意访问者的浏览器中执行。如果管理员查看了该页面,此漏洞可升级为完全账户接管(ATO)和网站入侵。
<= 3.0.17该漏洞源于对 _cl_map_iframe 自定义字段的不当清理和不安全的输出处理,该字段本用于嵌入地图 iframe。
1. 不安全的存储:
在 includes/class-contact-list-custom-fields.php(位于 saveCustomFields() 内)中,插件使用正则表达式处理 _cl_map_iframe 输入,以提取 ```
6. 转发请求。服务器会存储恶意 iframe。
7. 触发: 访问嵌入了 [contact_list] 的公共目录页面。警告框将立即弹出,确认代码执行。
POST /wp-admin/post.php HTTP/1.1
Host: TARGET
Content-Type: application/x-www-form-urlencoded
Cookie: [Author_Session_Cookies]
post_title=Hacked+Contact&post_type=contact&action=editpost&_cl_map_iframe=
要修补此漏洞,插件开发者必须:
_cl_map_iframe 时,使用带有严格允许 HTML 标签和属性数组的 wp_kses()。禁止使用 onload、onerror 或 javascript: URI 等属性。