根据CVE官方漏洞通报得知wordpress新出一个组合式rce漏洞,漏洞编号分别为CVE-2019-8943和CVE-2019-8942,下载漏洞版本源码,分析漏洞触发过程,注:漏洞复现时一定要断网搭建,wordpress在联网状态时会自动更新代码包。找到漏洞发生文件 post.php,wordpress有多个post.php文件,这里简要说明一下各自的作用,wp-includes/post.php为post的源文件,wp-admin/includes/post.php为有后台权限的post接口,wp-admin/post.php为后台post的请求处理,具体调用代码如下:

wp-admin/post.php:require_once( dirname( __FILE__ ) . '/admin.php' );
wp-admin/admin.php:require_once(ABSPATH . 'wp-admin/includes/admin.php');
wp-admin/includes/admin.php:require_once(ABSPATH . 'wp-admin/includes/post.php');
wp-admin/admin.php::require_once(dirname(dirname(__FILE__)) . '/wp-load.php');
wp-load.php:require_once( dirname( ABSPATH ) . '/wp-config.php' );
wp-config.php:require_once(ABSPATH . 'wp-settings.php');
wp-settings.php:require( ABSPATH . WPINC . '/post.php' );
define( 'WPINC', 'wp-includes' );

根据以上调用流程,漏洞利用流程为上传一个图片到媒体库,然后进行更新操作,调用wp-admin/post.php函数,并根据switch到case:editpost,如下图所示:

其中edit_post为漏洞函数,进入函数声明,如下图所示:

$post_data为post数组,并未作任何过滤防护,对此产生了之后的漏洞,对比修复后的代码,如下图所示:

在此我多说两句,因一开始并未发现wordpress在联网时会进行自动更新,所以,我定位了另一个类似漏洞点,如下图所示:

以上代码会根据传入的meta数组进行update_meta,根据代码中的$key(数据库中的meta_id),$value[‘key’](数据库中的meta_key),$value[‘value’](数据库中的meta_value),构造meta[1][key]=_wp_attached_file&meta[1][value]=123,最终执行类似以下数据库语句UPDATE `wp_postmeta` SET `meta_key` = '_wp_attached_file', `meta_value` = '123' WHERE `meta_id` = 2,实现过程,如下图所示:

根据meta_id更新wp_postmeta表中内容,最终执行do_action函数,如下图所示 :

但是由于第三个和第四个if的限制,导致无法执行成功,这也算是一个漏洞复现上的一个有趣的点吧,继续跟踪,如下图所示:

找到可利用的点,并根据代码所示,进入wp_updae_post函数,如下图所示:

此函数会经过一些获取参数的操作,将数组中的变量提取出来并进行赋值,跟踪到漏洞发生点,如下图所示:

发现返回wp_insert_attachment函数,跟踪此函数,如下图所示:

返回wp_insert_post函数,跟踪此函数,在此函数中定位到漏洞发生点,如下图所示:

所以根据以上漏洞点,可传入meta_input[_wp_attached_file] =../evil.jpg?shell.php,执行SQL语句为UPDATE `wp_postmeta` SET `meta_value` = '../evil.jpg?shell.php ' WHERE `post_id` = 8 AND `meta_key` = '_wp_attached_file',测试条件为前提必须知道post_id,不过正常情况下更新图片时会自带此参数,如果是测试的话,可以观察数据库填写相关内容。具体SQL语句嵌套执行方法,如下图所示:

通过传入参数,赋值到相对应的表名和列名,最终执行do_action函数,如下图所示:

在此完成wordpress目录遍历漏洞,并在之后利用本地文件包含漏洞执行rce,wordpress官方使用图像库为GD和Imagick,如下图所示:

其中Imagick并不是wordpress自带,需要下载插件,所以默认可以使用绕过GD库的方法执行任意代码

参考链接:

https://blog.ripstech.com/2019/wordpress-image-remote-code-execution/

作者:二胖

欢迎来安全脉搏查看更多的干货文章和我们一起交流互动哦!

脉搏地址:安全脉搏 | 分享技术,悦享品质

微博地址:Sina Visitor System

php post 漏洞_WordPress漏洞分析相关推荐

  1. 【安全漏洞】简要分析复现了最近的ProxyShell利用链

    前言 近日,有研究员公布了自己针对微软的Exchange服务的攻击链的3种利用方式.微软官方虽然出了补丁,但是出于种种原因还是有较多用户不予理会,导致现在仍然有许多有漏洞的服务暴露在公网中,本文主要在 ...

  2. 适合新手入门的漏洞调试与分析—CVE-2010-3333

    这是第二次在tools发帖,为了响应管理猿的号召,也为了爱好应用程序安全新手的需要.在此,我初步研究了一下微软3333漏洞的成因,并试着定位到了样本中的shellcode,现在就对这个入门级的漏洞做个 ...

  3. Windows Print Spooler服务最新漏洞CVE-2021-34527详细分析

    近日,有安全研究员在github上公开了"CVE-2021-1675"的exp PrintNightmare,后经验证公开的exp是一个与CVE-2021-1675不同的漏洞,微软 ...

  4. Microsoft RTF栈溢出漏洞(CVE-2010-3333)漏洞分析

    文章目录 漏洞描述 分析环境 RTF文件格式 基于栈回溯的漏洞分析方法 漏洞利用 Office 2003与Office 2007 Exploit通用性研究 漏洞描述 Microsoft Office ...

  5. 安全扫描失败无法上传_Apache Solr 未授权上传(RCE)漏洞的原理分析与验证

    漏洞简介 Apache Solr 发布公告,旧版本的ConfigSet API 中存在未授权上传漏洞风险,被利用可能导致 RCE (远程代码执行). 受影响的版本: Apache Solr6.6.0 ...

  6. 【java】log4j2核弹级漏洞原理和分析

    1.概述 转载:log4j2核弹级漏洞原理和分析 并且补充. 2.漏洞是怎么发现的? 3.漏洞问题重现 依赖如下 <dependencies><!-- https://mvnrepo ...

  7. Windows PrintNightmare 漏洞和补丁分析

     聚焦源代码安全,网罗国内外最新资讯! 一.背景 CVE-2021-34527是发生在windows打印服务中的漏洞,攻击者可以利用该漏洞使用低权限用户加载恶意DLL,实现远程代码执行.该漏洞于6月2 ...

  8. Apache Shiro权限绕过漏洞 (CVE-2020-11989) 挖掘分析和复现

     聚焦源代码安全,网罗国内外最新资讯! 1.1 状态 完成漏洞挖掘条件分析.漏洞复现. 1.2 简介 Apache Shiro作为Java框架,可被用于身份认证.授权等任务. 整合Apache Shi ...

  9. MS17-010(永恒之蓝)漏洞复现和分析

    MS17-010(永恒之蓝)漏洞复现和分析 一.漏洞简介 1.永恒之蓝介绍: 永恒之蓝是指2017年4月14日晚,黑客团体Shadow Brokers(影子经纪人)公布一大批网络攻击工具,其中包含&q ...

最新文章

  1. python基础语法合集-Python基础语法介绍
  2. 【风控模型】融合模型Bagging构建信用评分卡模型
  3. python中的几种copy用法_Python3中copy模块常用功能及其他几种copy方式比较
  4. 【☀️Linux什么姿势最舒服?简单讲讲☀️】嵌入式Linux入门
  5. kotlin为什么比java编译慢_为什么Kotlin编译速度比Scala快? [关闭]
  6. Linux创建anaconda-navigator快捷图标并固定在dock上
  7. properties 配置回车_Dell?H730P?Raid1?配置方法
  8. java replace stringbuilder_Java StringBuilder replace()方法
  9. 一文弄懂nginx反向代理和负载均衡
  10. 【图像隐写】基于matlab GUI DWT+SVD数字水印 【含Matlab源码 939期】
  11. vmware funsion 共享网络模式下PPTP拨号问题
  12. win10系统如何设置局域网服务器,win10系统设置局域网地址的操作方法
  13. 魔兽世界WOW服务器端的模拟器【2010】
  14. 计算机浏览器无法上网怎么办,电脑有网络,但是浏览器不能上网怎么办
  15. 【技巧】如何修改PDF文件?
  16. sort()函数基本用法
  17. 百度携手重庆渝中区,打造区块链大数据智能化应用示范城区
  18. office右键没有新建word,Visio等解决办法
  19. (笔记)SLF4J: No SLF4J providers were found.解决方法
  20. ChatGPT持续火爆,对区块链有什么影响?

热门文章

  1. 单链表的逆置-C++实现(ok)
  2. jstring转换到C语言所用的char
  3. 28181之安装SPVMN的视频插件
  4. go gorm 关联模式_Beego 结合 GORM 操作 Mysql 数据库
  5. login控件authenticate_关于asp:login控件和验证码的问题?(转)
  6. idea 自动加头部注释
  7. tcl之quartus 脚本学习 · 1 quartus tcl packages 介绍
  8. winform 的exe为什么移动之后不能使用_C++MyDock配置要求、所需运行库、常见问题 初次使用必看...
  9. 普通办公用计算机,工业计算机与普通办公用的电脑有什么区别?
  10. android只有域名打包封装成apk,一个Android Studio工程根据网址打包出不同的apk