WordPress于2003年开始使用一段代码来增强日常写作的印刷效果,用户数量少于您可以依靠手指和脚趾的数量。自那时起,它已成长为世界上最大的自主托管博客工具,在数百万个网站上使用,每天都有数千万人看到。
使用phpstudy搭建WordPress 放到跟目录直接一把梭
先创建一个数据库create database wordpress; 进行安装 安装成功
漏洞出现在wordpress的留言处,不过问题是由mysql的一个特性引起的。在mysql的utf8字符集中,一个字符由1~3个字节组成,对于大于3个字节的字符,mysql使用了utf8mb4的形式来存储。如果我们将一个utf8mb4字符插入到utf8编码的列中,那么在mysql的非strict mode下,他的做法是将后面的内容截断。截断的话,就能绕过很多富文本过滤器了。比如,插入两个评论<img src=1,和οnerrοr=alert(1)//,这二者都不会触发某些富文本过滤器(因为前者并不含有白名单外的属性,后者并不是一个标签),但两个评论如果存在于同一个页面,就会拼接成一个完整的HTML标签,触发onerror事件。
得先把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)// ?">
对于这种有极端的方法就是,禁止任何标签,用实体化函数把输入的全部实体化。或者更新系统。影响范围较广。
把wp-includes/ksec.php中$allowedposttags下的全部标签删除非常极端。。
更新最新版本官方已经修复
开启严格模式,就会自动去过滤掉内个导致mysql误以为是utf8mb4编码