Wordpress Plugin Woody Ad Snippets Rce 漏洞复现&分析
0x02 漏洞复现
安装wordpress,并且安装该插件2.2.4版本
使用exp进行攻击
刷新上面的网页,然后网页会自动请求js
生成jsp
0x03 漏洞分析
该RCE是组合漏洞,未授权导入代码+存储XSS(管理员访问触发)+模拟管理员上传插件getshell
未授权写入
从该poc分析
跟到admin-post.php,可以看到do_action函数,该函数属于wordpress中的hook机制,即调用时,通过寻找所有绑定了该方法的函数。关于勾子的机制可以看这篇文章
https://www.wpdaxue.com/wordpress-hook.html
跟如该常见的导入逻辑wp-content\plugins\insert-php\admin\includes\class.import.snippet.php,可以看出在加载该插件的时候便会通过registerHook注册勾子,通过绑定admin_init和自己本身的adminInit,及admin_init被hook的时候将会调用adminInit,且该勾子的调用时在admin初始化的时候,且不需要检查是否为登陆页面,其登陆检查逻辑在is_user_logged_in中。
继续查看functuon adminInit()
继续跟到processImportFiles方法
该方法仅仅判断上文件内容是否为空,若不为空则进入正常的逻辑,而且没有任何校验。
2、存储xss
上面说可以通过未授权写入我们的payload,但是需要通过点击才能触发执行上传的代码
因此该漏洞作者发现了Description(描述字段)是不做过滤的,因此,在上面第一次插入payload的时候,直接将插入到Description字段。一旦管理员访问该页面,则直接解析Description中的script标签
通过该存储xss,最终请求远程xsspayload,而该xss执行的操作是模拟上传一个php后门的wordpress插件