WordPress 5.1 CSRF to RCE 漏洞详解( 二 )


 
普通用户提交过滤函数:

WordPress 5.1 CSRF to RCE 漏洞详解

文章插图
 
 
超级管理员无nonce提交过滤函数:
WordPress 5.1 CSRF to RCE 漏洞详解

文章插图
 
 
可以看出只是wp_kses中第二个参数不同 , 一个是current_filter() , 一个是’post’
这里不同的 , 对应wp_kses中 , 应该是allowed_html参数值
 
这里举个普通用户评论的例子 , 普通用户提交评论 , current_filter()方法返回的值是pre_comment_content , 也就是说allowed_html参数值为pre_comment_content 。可见下图动态调试结果
WordPress 5.1 CSRF to RCE 漏洞详解

文章插图
 
对应的 , 超级管理员无nonce提交时 , 这里的allowed_html参数值为”post”
 
那么allowed_html值不同 , 到底会有什么区别呢?
$allowed_html被传入wp_kses_split方法
WordPress 5.1 CSRF to RCE 漏洞详解

文章插图
 
 
进一步看wp_kses_split
WordPress 5.1 CSRF to RCE 漏洞详解

文章插图
 
注意到这里$pass_allowed_html = $allowed_html;
现在$allowed_html传给了$pass_allowed_html
我们要看看这两个不同的$allowed_html最终传递到哪里被用到
 
跟进_wp_kses_split_callback , $allowed_html传给了wp_kses_split2
WordPress 5.1 CSRF to RCE 漏洞详解

文章插图
 
跟进wp_kses_split2 , $allowed_html被传给了wp_kses_attr
WordPress 5.1 CSRF to RCE 漏洞详解

文章插图
 
跟进wp_kses_attr , $allowed_html被传给了wp_kses_allowed_html
WordPress 5.1 CSRF to RCE 漏洞详解

文章插图
 
跟进wp_kses_allowed_html
一路跟踪 , 到了这里 , $allowed_html终于有作用了
WordPress 5.1 CSRF to RCE 漏洞详解

文章插图
 
回顾一下 , 
超级管理员无nonce提交时 , 这里的allowed_html参数值为”post”
普通用户提交评论时 ,  allowed_html参数值为”pre_comment_content” 。
首先看超级管理员无nonce提交吗 , allowed_html参数值为”post” , 进入post分支
WordPress 5.1 CSRF to RCE 漏洞详解

文章插图
 
可以看到这里有一个wp_kses_allowed_html方法 , 跟进去看看
WordPress 5.1 CSRF to RCE 漏洞详解

文章插图
 
相当于一个白名单机制 , 再看看白名单上都有什么 , 看看$allowedposttags
WordPress 5.1 CSRF to RCE 漏洞详解

文章插图
 
这里’a’标签运行’rel’属性
 
再看看普通用户提交评论时 ,  allowed_html参数值为”pre_comment_content”情况 。
WordPress 5.1 CSRF to RCE 漏洞详解

文章插图
 
 
这里白名单是$allowedtags
WordPress 5.1 CSRF to RCE 漏洞详解

文章插图
 
只允许’href’与’title’
看到这里 , 明白wp_filter_post_kses 、wp_filter_ kses两个过滤函数有什么区别了吗?
 
可以用’rel’属性与不可以用’rel’,有什么区别呢?如何造成这次的csrf呢?看下图
wp-includesformatting.php
WordPress 5.1 CSRF to RCE 漏洞详解

文章插图
 
可以看到属性值在没有被转义处理的情况下就再次拼接在一起 , 
在a标签最终被拼接时 , title的属性会被封装到双引号中 , 这样我们就可以构造数据使其闭合 , 从而执行js
Payload:
WordPress 5.1 CSRF to RCE 漏洞详解

文章插图
 
被双引号包裹后
WordPress 5.1 CSRF to RCE 漏洞详解

文章插图
 
单鼠标放置时 , js执行
 


推荐阅读