php wordpress漏洞,wordpress会有漏洞吗

c09183412c8f63086eb7860b5af1cdff.png

根据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,如下图所示:

f4f47fab6669bd6b5555f3b0034357ab.png

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

49127ca244a35ecb2d9b10f0f2f5449c.png

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

efee4223e39ff92161647e21bcfa8adf.png

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

9a11b01022523c8501b351f3c257d67e.png

以上代码会根据传入的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,实现过程,如下图所示:

a38becff88a8c6a67ea060d0606a54c8.png

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

44de274754f77d3c5681fb6cdd5a07d5.png

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

d108df33cc568bbfe255a7c71d3c8edd.png

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

8b2c8413196124ff141fb2ae1c4cb11d.png

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

a46429dc7ca8fce54e28af498d537df3.png

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

dee00de9b8577839095f4cd2f446d57f.png

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

55fbd14240ce4f1cec5605e6599514f6.png

所以根据以上漏洞点,可传入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语句嵌套执行方法,如下图所示:

f785f2b1c30a90952e230fe626c3e56e.png

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

05da4d9c5b9d62c8a188225a37aa140b.png

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

83fc248e5bea1f341924a7875fda6b01.png

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值