失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > linux调用ocx插件_Wordpress file manager插件任意文件上传

linux调用ocx插件_Wordpress file manager插件任意文件上传

时间:2019-11-25 21:56:40

相关推荐

linux调用ocx插件_Wordpress file manager插件任意文件上传

白斩鸡@卫兵实验室

近日,Wordpress 插件file manager被爆出严重0day漏洞,本着技术研究角度,和大家分享、探讨其漏洞原因。

该修复程序已在同一天发布,并且WP File Manager插件6.9版通过删除允许未经授权的文件上传访问的端点来解决当前问题。影响版本。

该安全漏洞存在于文件管理器版本,范围从6.0到6.8。WordPress的统计数据表明,目前约有52%的安装易受攻击。由于File Manager的700,000个站点中已安装的漏洞中有一半以上,因此损坏的可能性很高。运行任何这些版本的网站都应尽快更新到6.9

影响范围

file manager 6.0至6.8

漏洞报告

漏洞的文件为connector.minimal.php.

首先对$opts进行了初始化,这里存储了后面上传文件存储路径root信息。

通过创建elFinderConnector对象,进而调用$connector->run();

elFinderConnector::run()

方法限制了请求为POST。并且读取了所有的请求参数保存到$src中。其中$cmd为传递cmd变量

随后对通过循环foreach ($this->elFinder->commandArgsList($cmd) as $name => $req)来对$src进行校验,需要符合请求方法的参数类型。

通过elFinder::commandArgsList($cmd)中我们查看$this->commands发现了可以调用的方法(意味着我们可以直接调用以下列表的所有方法,例如创建文件、创建文件夹、删除文件等等)

完成变量校验后就进行一次input_filter(addslashes和去除\00截断)随后进入$this->output($this->elFinder->exec($cmd, $args));执行真正调用的方法代码。

根据上面可用方法的array,我们控制$cmd=upload,即可调用upload方法。

具体exec方法如下介绍

elFinder::exec(\$cmd, \$args)

当我们控制$cmd=upload时,遇到第一个分支。意味着我们需要传入一个$target变量或$dst变量。

进入$this->volume($dst)可以看到是对$this-volume进行了选择。

id分别为t1_l1_,我们将选择l1_,即传入的$target必定为l1_前缀。

之所以这么做的理由是由于l1_中的root=/Users/steven/Desktop/code/phpCode/wordpress/wp-content/plugins/wp-file-manager/lib/files,而t1_中为root=/Users/steven/Desktop/code/phpCode/wordpress/wp-content/plugins/wp-file-manager/lib/files/.trash

而这个$root将会成为后面文件上传路径的前缀。

之后进入动态调用,通过$result = $this->$cmd($args);调用upload方法。

elFinder::upload(\$args)

一开始初始化很多变量,但是我们不必要传入。并且也对volume进行了取值,后续还进行了校验。

在3313行foreach ($files['name'] as $i => $name)通过foreach对每个上传的文件进行处理。

许多分支并没有执行,直接来到以下代码if (!$_target || ($file = $volume->upload($fp, $_target, $name, $tmpname, ($_target === $target) ? $hashes : array())) === false),执行真正的upload函数。

elFinderVolumeDriver::upload(\$fp, \$dst, \$name, \$tmpname, \$hashes = array())

在这个if判断中,需要关注dir($dst)

跟进dir($dst)

跟进file($hash)

state(\$path)

decode(\$hash)

从上面的代码看来就是把$target的值截取前面volume的id,剩下的做一个base64解码,之后与volume['root']进行拼接,如果解码之后的值为\\则直接设volume['root']为上传路径,如果不是则需要cache索引。如果直接$target解码为../../css等则会校验不通过,直接报错。

最终调用到if (($path = $this->saveCE($fp, $dstpath, $name, $stat)) == false)实现了文件的上传。上传路径为wp-content/plugins/wp-file-manager/lib/files/bzj.php

补丁修复方式

删除了connector.maximal.php-distconnector.maximal.php两个文件

增加了.htaccess

关于我们

人才招聘

二进制安全研究员(Windows内核方向)

工作地点:

1.杭州;

岗位职责:

1、负责研究Window内核相关漏洞利用技术;

2、负责分析Window内核漏洞的原理及缓解措施;

任职要求:

1、2年以上windows逆向工作经验。

2、熟悉windows底层架构、运行机制,熟悉汇编语言C/C++语言,熟悉win32/64开发,并有相关开发经验;

3、熟悉windows驱动开发、熟悉windows平台内核架构;能熟练运用Windows平台下的软件调试方法。

4、熟练使用ida、windbg等调试软件工具调试分析漏洞。

5、有CVE编号、内核研究成果者优先;

6、具备良好的团队沟通、协作能力、良好的职业道德。

二进制安全研究员(Linux内核方向)

工作地点:

1.杭州;

岗位职责:

1、负责研究Linux内核相关漏洞利用技术;

2、负责分析Linux内核漏洞的原理及缓解措施;

任职要求:

1、2年以上Linux逆向工作经验。

2、熟悉Linux底层架构、运行机制,熟悉汇编语言C/C++语言,熟悉x86/64开发,并有相关开发经验;

3、熟悉Linux驱动开发、熟悉Linux平台内核架构;能熟练运用Linux平台下的软件调试方法。

4、熟练使用ida、gdb、lldb等调试软件工具调试分析漏洞。

5、有CVE编号、内核研究成果者优先;

6、具备良好的团队沟通、协作能力、良好的职业道德。

二进制安全研究员(系统应用方向)

工作地点:

1.杭州;

岗位职责:

1、负责安全技术研究,跟踪国内外最新的安全技术以及安全漏洞的追踪;

2、负责进行二进制漏洞挖掘,包括不限于浏览器、chakara引擎、js引擎、office、pdf等等各种二进制类应用;

任职要求:

1、能主动关注国内外最新安全攻防技术,并在自己擅长和兴趣的领域能够进行深入的学习、研究;

2、熟练掌握windbg、ida、gdb等调试工具;

3、熟悉各类二进制安全漏洞原理(堆溢出、栈溢出、整数溢出、类型混淆等等)以及各种利用技术;

4、能够无障碍阅读英文技术文档;

5、具备良好的团队沟通、协作能力、良好的职业道德。

Web安全研究员

工作地点:

1.杭州;

岗位职责:

1、安全攻防技术研究,最新web应用及中间件(tomcat、jetty、jboss等等)、框架(struts、spring、guice、shiro等等)组件(freemarker、sitemesh等等)漏洞挖掘研究;

2、跟踪分析国内外的安全动态,对重大安全事件进行快速响应;

任职要求:

1、了解常见的网络协议(TCP/IP,HTTP,FTP等);

2、熟练使用Wireshark等抓包工具,熟悉正则表达式;

3、掌握常见漏洞原理,有一定的漏洞分析能力;

4、具备php、python、java或其他相关语言编码能力;

5、对常见waf绕过有一定的基础经验;

6、具备一定的文档编写能力,具备良好的团队共同能力;

7、对安全有浓厚的兴趣,工作细致耐心。

感兴趣的小伙伴请联系Nike,或将简历投送至下方邮箱。(请注明来源“研究院公众号”,并附带求职岗位名称)

联系人:Nike

邮箱:nike.zheng@

如果觉得《linux调用ocx插件_Wordpress file manager插件任意文件上传》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。