热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linux调用ocx插件_Wordpressfilemanager插件任意文件上传

白斩鸡卫兵实验室近日,Wordpress插件filemanager被爆出严重0day漏洞,本着技术研究角度,和大家分享、探讨其漏洞原因。该

白斩鸡@卫兵实验室

近日,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();

437f841460a943cb7a47213b49aaf661.png

elFinderConnector::run()

dcd3411ffa1f848102ecbc8185d96c22.png

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

ceae550dd50857f9de9b3f42a4d84821.png

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

d1a43c4746357836a3a12e464ec54f33.png

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

138795273f9186bea049ca1f9769ab73.png

4f5919f3ccc4c7c455369a0fe51c1fb2.png

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

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

具体exec方法如下介绍

a46acbcd724b64c5a7192c10c71e511b.png

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

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

644d84695ce9c260c8fa9f9738ea41b7.png

进入$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将会成为后面文件上传路径的前缀。

53483eb63a5805471eaf9e4672668c10.png

4e53b55d07aeac96c52e7e2d2adaf22a.png

37037299ee1eaf78d4ee1d69fdb0d34a.png

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

f2be7398f8f45cc963ac64e8c0e6164f.png

elFinder::upload(\$args)

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

0b1043150b9adc562a38038ff2cba162.png

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

207afcf714dbb83bd090ee274112e22a.png

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

b84f2a6c4539abe86b20e4b7187f2aab.png

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

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

ee995d84d56407b45be31bcbc07f7ac5.png

跟进dir($dst)

d2991c00664afc2f493d666cc75f8f1b.png

跟进file($hash)

d64d0550c03f302873829064bf72b14e.png

state(\$path)

f04a2d26f279b99d9f0cb0e2d7d5e90d.png

decode(\$hash)

9bbb00c3977dd57c6282aa7a5fc84b4d.png

从上面的代码看来就是把$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

b2540854e756f20e323eab9bac2e96c5.png

补丁修复方式

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

  2. 增加了.htaccess

cfce9c0b3463cb0b8cebe97ee8115070.png

关于我们

bd9a3b92168457db7d15dece9adbd0d3.png

人才招聘

二进制安全研究员(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@dbappsecurity.com.cn



推荐阅读
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
  • 本文详细介绍了git常用命令及其操作方法,包括查看、添加、提交、删除、找回等操作,以及如何重置修改文件、抛弃工作区修改、将工作文件提交到本地暂存区、从版本库中删除文件等。同时还介绍了如何从暂存区恢复到工作文件、恢复最近一次提交过的状态,以及如何合并多个操作等。 ... [详细]
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • MVC设计模式的介绍和演化过程
    本文介绍了MVC设计模式的基本概念和原理,以及在实际项目中的演化过程。通过分离视图、模型和控制器,实现了代码的解耦和重用,提高了项目的可维护性和可扩展性。详细讲解了分离视图、分离模型和分离控制器的具体步骤和规则,以及它们在项目中的应用。同时,还介绍了基础模型的封装和控制器的命名规则。该文章适合对MVC设计模式感兴趣的读者阅读和学习。 ... [详细]
  • Postgresql备份和恢复的方法及命令行操作步骤
    本文介绍了使用Postgresql进行备份和恢复的方法及命令行操作步骤。通过使用pg_dump命令进行备份,pg_restore命令进行恢复,并设置-h localhost选项,可以完成数据的备份和恢复操作。此外,本文还提供了参考链接以获取更多详细信息。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
author-avatar
草莓顽子该_589
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有