Loading

Wordpress Plugin Woody Ad Snippets Rce 漏洞复现&分析

0x02 漏洞复现

安装wordpress,并且安装该插件2.2.4版本

image-20201202170451180

使用exp进行攻击

image-20201203010855121

刷新上面的网页,然后网页会自动请求js

image-20201203011937050

生成jsp

image-20201203013155304

0x03 漏洞分析

该RCE是组合漏洞,未授权导入代码+存储XSS(管理员访问触发)+模拟管理员上传插件getshell

未授权写入

从该poc分析

image-20201203144049329

跟到admin-post.php,可以看到do_action函数,该函数属于wordpress中的hook机制,即调用时,通过寻找所有绑定了该方法的函数。关于勾子的机制可以看这篇文章

https://www.wpdaxue.com/wordpress-hook.html

image-20201203144241129

跟如该常见的导入逻辑wp-content\plugins\insert-php\admin\includes\class.import.snippet.php,可以看出在加载该插件的时候便会通过registerHook注册勾子,通过绑定admin_init和自己本身的adminInit,及admin_init被hook的时候将会调用adminInit,且该勾子的调用时在admin初始化的时候,且不需要检查是否为登陆页面,其登陆检查逻辑在is_user_logged_in中。

image-20201203144835255

继续查看functuon adminInit()

image-20201203145141869

继续跟到processImportFiles方法

image-20201203145430421

该方法仅仅判断上文件内容是否为空,若不为空则进入正常的逻辑,而且没有任何校验。

2、存储xss

上面说可以通过未授权写入我们的payload,但是需要通过点击才能触发执行上传的代码

image-20201203160242615

因此该漏洞作者发现了Description(描述字段)是不做过滤的,因此,在上面第一次插入payload的时候,直接将插入到Description字段。一旦管理员访问该页面,则直接解析Description中的script标签

image-20201203160519013

通过该存储xss,最终请求远程xsspayload,而该xss执行的操作是模拟上传一个php后门的wordpress插件

image-20201203160640256

3、Getshell

image-20201203160903869

0x04 参考链接

https://blog.nintechnet.com/multiple-vulnerabilities-in-wordpress-woody-ad-snippets-plugin-lead-to-remote-code-execution/

https://blog.nintechnet.com/multiple-vulnerabilities-in-wordpress-woody-ad-snippets-plugin-lead-to-remote-code-execution/

posted @ 2021-02-06 01:21  0x28  阅读(148)  评论(0编辑  收藏  举报