WordPress XSS漏洞复现

    xiaoxiao2025-07-13  16

    0x00 WordPress简介

    WordPress于2003年开始使用一段代码来增强日常写作的印刷效果,用户数量少于您可以依靠手指和脚趾的数量。自那时起,它已成长为世界上最大的自主托管博客工具,在数百万个网站上使用,每天都有数千万人看到。

    0x01 WordPress部署

    下载4.1版本以下

    https://cn.wordpress.org/wordpress-4.0.1-zh_CN.zip

    使用phpstudy搭建WordPress 放到跟目录直接一把梭

    安装

    先创建一个数据库create database wordpress; 进行安装 安装成功

    0x02 WordPress漏洞介绍

    漏洞出现在wordpress的留言处,不过问题是由mysql的一个特性引起的。在mysql的utf8字符集中,一个字符由1~3个字节组成,对于大于3个字节的字符,mysql使用了utf8mb4的形式来存储。如果我们将一个utf8mb4字符插入到utf8编码的列中,那么在mysql的非strict mode下,他的做法是将后面的内容截断。截断的话,就能绕过很多富文本过滤器了。比如,插入两个评论<img src=1,和οnerrοr=alert(1)//,这二者都不会触发某些富文本过滤器(因为前者并不含有白名单外的属性,后者并不是一个标签),但两个评论如果存在于同一个页面,就会拼接成一个完整的HTML标签,触发onerror事件。

    0x03 WordPress漏洞演示

    得先把Mysql的strict mode关闭 my.ini

    将其中的 sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" 修改为 sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

    攻击代码//P神博客的

    <abbr title="qweqw style=display:block;position:fixed;width:100%;height:100%;top:0; onmouseover=alert(1)// ?">

    0x04 WordPress漏洞修复

    对于这种有极端的方法就是,禁止任何标签,用实体化函数把输入的全部实体化。或者更新系统。影响范围较广。

    1.禁止任何标签

    把wp-includes/ksec.php中$allowedposttags下的全部标签删除非常极端。。

    2.更新cms系统

    更新最新版本官方已经修复

    3.Mysql开启strict mode

    开启严格模式,就会自动去过滤掉内个导致mysql误以为是utf8mb4编码

    最新回复(0)