昨天好多安全平台发布了WordPress插件WP File Manager的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行这个给误导了
因为断点调试到这一行,就会跳转到一个叫elFinderConnector.class.php的文件里,然后在这个文件160行发现exec()函数,我以为关键点就在这里,然后一直研究这个函数,然后并没有什么实际发现。。。
然后 我开始怀疑人生,可能是我太菜了吧,挖不到漏洞,别人都说了这里有0day我都挖不到,我也太菜了吧。。。
当我快要放弃的时候,我又看了一眼漏洞预警,其中几个字打开了我的思路,“这段代码来自elFinder项目”,这个意思是不是说WP File Manager插件使用了elFinder项目的代码,然后elFinder有漏洞。
于是,我又去百度elFinder漏洞
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。应该是这个意思
然后就下载这个poc来验证我搭建的环境。
因为前面说了那个WP File Manager插件的作者直接搬运了elFinder的代码,所以连示例文件的名字都没有改,所以要稍微修改一下poc,将connector.php改成connector.minimal.php,然后将一句话改为eval,同时为方便调试将print的注释去掉
下面是漏洞验证环节:
可以看到在\wp-content\plugins\wp-file-manager\lib\files目录下成功生成了文件,内容为一句话。与漏洞预警中说明的目录是一样的。
以上操作都是在未登录的情况下,也就是说是未授权RCE。这里贴一下poc
1 | #[+] Author: TUNISIAN CYBER |
这里更新pocsuit版本
https://blog.csdn.net/ordar123/article/details/110670335
- 本文作者: ordar
- 本文链接: https://mrwq.github.io/WordPress文件管理器插件0day漏洞解析-CVE-2020-25213/
- 版权声明: 本文作者: ordar123 转载请注明出处!