wordpress任意文件删除漏洞分析

本文内容比较多,建议点击https://blog.formsec.cn/2018/07/03/wordpress%E4%BB%BB%E6%84%8F%E6%96%87%E4%BB%B6%E5%88%A0%E9%99%A4%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90/

进行浏览。

0x00 综述

2018年6月28日,国外安全研究组织rips团队发布了一篇WordPress任意文件删除到代码执行的漏洞文章,文章中指出攻击者可以利用此漏洞删除任意文件,比如删除WordPress建站配置文件wp-config.php,通过删除此文件可导致界面进入网站安装页面,通过重装网站后进入管理员后台即可获取网站shell从而控制WordPress网站,故该漏洞的危害很大。唯一缺陷就是需要攻击者拥有操作多媒体文件的功能,一般作者权限就可以触发漏洞。

攻击难度:中。

危害程度:高。

影响的版本: ≤4.9.6

0x01 技术分析

在文件/wp-admin/posts.php中,当编辑附件时有如下代码:

首先通过wp_get_attachment_metadata函数获取当前post_id对应内容的metadata信息,也就是数据库表wp_postmeta中的信息,然后给metadata信息中添加一个thumb的内容,这个thumb的内容通过POST直接传递,没有经过处理,最后更新metadata的信息。

然后在删除媒体内容时,有如下代码:

当前用户有删除内容的权限时,调用了wp_delete_attachment函数,这里的post_type认就是attachment

然后跟进wp_delete_attachment函数,在文件/wp-includes/post.php

跟进次函数:

同样首先通过wp_get_attachment_metadata函数获取post_id对应内容的metadata信息,然后当thumb不为空时,到最后unlink文件:

meta[‘thumb’]thumbfile,再从thumbfile进入unlink函数,没有对文件进行过滤处理,导致直接删除文件。

通过上面的分析,我们首先通过修改媒体文件,给thumb赋值为你想删除的文件,然后再删除此媒体文件,既可以删除任意文件。

0x02 漏洞验证

首先我们注册一个author的作者权限用户,登陆后添加媒体文件,再编辑文件

并且找到修改图像时的wpnonce值

然后发送修改图像的请求,这里我们在网站根目录下新建了一个111111文件,然后修改要删除的文件为111111:

此时已经修改图像,并且图像的metadata中thumb的内容就是../../../../111111文件路径。

然后我们在删除该文件,首先找到删除文件时的wpnonce:

最后直接发送删除请求:

http://localhost/wordpress-4.7.4/wp-admin/post.php?post=12&action=delete&_wpnonce=d85e71ffa9

同下断点可以看到这里删除的具体文件:

最后成功删除我们新建的111111文件。

那么删除wp-config.php文件同理。

0x03 防护方案

目前官方没有提供修复方案,这里给出临时修复方案。

在/wp-admin/post.php中,当修改图像文件时,在wp_update_attachment_metadata更新metadata时对传入的thumb文件进行处理,如图:

0x04 参考链接

https://blog.ripstech.com/2018/wordpress-file-delete-to-code-execution/

Other

FormSec团队近期在筹建一支CTF战队,目标就是成为国内顶尖的CTF战队,参与国内外CTF赛事。我们可以尽我们所能为CTF战队成员提供一些我们可以提供的福利。目前,战队已经有数位web二进制等大牛,期待有更多的大佬加入!

如有兴趣请联系admin#formsec.cn详聊

往期精彩回顾

铁人三项2018 pwn [aleph1] Writeup

铁人三项2018 pwn [heapmain] Writeup

ISCC 2018 Writeup

原文发布于微信公众号 - 逢魔安全实验室(FormSec)

原文发表时间:2018-07-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏全栈之路

工作以来用过的工具和网站

这是一个特别棒的编辑器,支持各种语言,内部集成了插件下载工具和git版本管理工具,而且界面结构特别简洁优雅,重要的它还是免费的。目前用它来开发服务器端,使用语言...

11220
来自专栏FreeBuf

如何逆向破解HawkEye keylogger键盘记录器,进入攻击者邮箱?

这一切要从一次恶意邮件攻击活动开始。下图为我们最近监测到的一个以恶意文件为发送附件的邮件攻击,请注意邮件信息中的英语写作水平是多么差劲,其实,这也是恶意邮件的一...

29980
来自专栏编程之旅

Liunx的文件权限

之前讲过为了统一开发环境生产环境以及更换开发机器的情况,我把环境统一由Vagrant部署在Linux的虚拟机中,但是由于我对Linux系统没有系统的学习过,对于...

12110
来自专栏解Bug之路

解Bug之路-记一次JVM堆外内存泄露Bug的查找 顶

JVM的堆外内存泄露的定位一直是个比较棘手的问题。此次的Bug查找从堆内内存的泄露反推出堆外内存,同时对物理内存的使用做了定量的分析,从而实锤了Bug的源头。笔...

10840
来自专栏IT技术精选文摘

解Bug之路-记一次JVM堆外内存泄露Bug的查找

15130
来自专栏FreeBuf

文件监控程序V2.0改进版(网站防挂马好手)

前言 技多不压身,多掌握几种不同的编程语言,不但有助于开拓我们的视野,还可以让我们在工作时,自己写一些小程序来帮我们减少工作量。 前段时间给一个客户维护服务器,...

65450
来自专栏软件测试经验与教训

看图说话:持久式XSS(跨站)漏洞示例

读书与实践是获取知识的主要渠道,学习的权力只掌握在每个人自己手中,让学习成为一种生活的习惯,这比任何名牌大学的校徽重要得多!

27720
来自专栏北京马哥教育

centos7.0体验与之前版本的不同

今天下午,没事干,在一台机器上装了一个centos7玩一玩,发现与之前版本有很大不同,不知道rhel7是不是也是这样,毕竟现在centos属于redhat了。 ...

23670
来自专栏小狼的世界

HP-UX培训学习笔记

HP-UX操作系统全称为Hewlett Packard UniX,是惠普服务器上所有的操作系统。其发源自 AT & T SRV4系统,可以支持HP的PA-RIS...

18220
来自专栏FreeBuf

聊一聊万恶的锁首

当手持8倍镜的98K都不能在使用程序时干掉万恶的锁首时,内心是十万头羊驼奔跑的场景,那我们就来聊一聊市面上常见的锁首方式。 ① :设置OpenHomePage、...

22970

扫码关注云+社区

领取腾讯云代金券