Eswlnk Blog Eswlnk Blog
  • 资源
    • 精彩视频
    • 破解专区
      • WHMCS
      • WordPress主题
      • WordPress插件
    • 其他分享
    • 极惠VPS
    • PDF资源
  • 关于我
    • 论文阅读
    • 关于本站
    • 通知
    • 左邻右舍
    • 玩物志趣
    • 日志
    • 专题
  • 热议话题
    • 游戏资讯
  • 红黑
    • 渗透分析
    • 攻防对抗
    • 代码发布
  • 自主研发
    • 知识库
    • 插件
      • ToolBox
      • HotSpot AI 热点创作
    • 区块
    • 快乐屋
    • 卡密
  • 乱步
    • 文章榜单
    • 热门标签
  • 问答中心反馈
  • 注册
  • 登录
首页 › 渗透分析 › WordPress 任意文件删除漏洞分析与防御

WordPress 任意文件删除漏洞分析与防御

Eswlnk的头像
Eswlnk
2023-05-30 12:15:40
WordPress 任意文件删除漏洞分析与防御-Eswlnk Blog
智能摘要 AI
本文讨论了一个WordPress漏洞,该漏洞允许攻击者通过上传并编辑图片文件来删除任意文件,包括`wp-config.php`,从而获取管理员权限。攻击仅需作者权限,无需管理员权限。漏洞利用步骤包括上传图片、编辑图片并构造HTTP请求以删除目标文件。漏洞成因在于`wp-admin/post.php`中未对`$_POST['thumb']`进行过滤,导致可控文件路径被写入数据库。修复建议包括过滤危险字符和使用`basename()`函数限制文件路径。

前言

这个漏洞在去年就已经批露,但是wordpress官方一直没有修复。攻击者可以通过该漏洞删除wp-config.php,进而重装wordpress充值admin密码来getshell。唯一的一点限制就是需要媒体文件的修改权限,这里只需要作者权限即可,不需要管理员。看完之后,就想起了不久前的铁三,被wordpress支配的恐惧。。。

漏洞利用

WordPress 任意文件删除漏洞分析与防御-Eswlnk Blog

首先上传一个图片文件,然后编辑这个图片。

WordPress 任意文件删除漏洞分析与防御-Eswlnk Blog

从源码中找到_wpnonce的值,然后使用curl或burp构造http请求。

WordPress 任意文件删除漏洞分析与防御-Eswlnk Blog

thumb参数为想删除的文件,接下来在编辑页面,点击永久删除。

WordPress 任意文件删除漏洞分析与防御-Eswlnk Blog

若成功删除,页面会直接跳转到安装界面。

漏洞分析

既然是任意文件删除漏洞,那我们就从删除功能入手,先来看wp-admin/post.php的246-268行:

case 'delete':
	check_admin_referer('delete-post_' . $post_id);

	if ( ! $post )
		wp_die( __( 'This item has already been deleted.' ) );

	if ( ! $post_type_object )
		wp_die( __( 'Invalid post type.' ) );

	if ( ! current_user_can( 'delete_post', $post_id ) )
		wp_die( __( 'Sorry, you are not allowed to delete this item.' ) );

	if ( $post->post_type == 'attachment' ) { //删除附件
		$force = ( ! MEDIA_TRASH );
		if ( ! wp_delete_attachment( $post_id, $force ) )
			wp_die( __( 'Error in deleting.' ) );
	} else {
		if ( ! wp_delete_post( $post_id, true ) )
			wp_die( __( 'Error in deleting.' ) );
	}

	wp_redirect( add_query_arg('deleted', 1, $sendback) );
	exit();

由于我们删除的是图片附件,所以程序会进入wp_delete_attachment函数,跟进:

wp-include/post.php,函数太长,只截取关键部分,5061-5088行。

/*
前面的代码基本都是准备工作,从数据库将图片的各种信息取出来,删除与图片相关的评论、缓存等。然后到达关键部分
*/

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) );
    }
}

// Remove intermediate and backup images if there are any.
if ( isset( $meta['sizes'] ) && is_array( $meta['sizes'] ) ) {
    foreach ( $meta['sizes'] as $size => $sizeinfo ) {
        $intermediate_file = str_replace( basename( $file ), $sizeinfo['file'], $file );
        /** This filter is documented in wp-includes/functions.php */
        $intermediate_file = apply_filters( 'wp_delete_file', $intermediate_file );
        @ unlink( path_join( $uploadpath['basedir'], $intermediate_file ) );
    }
}

if ( is_array($backup_sizes) ) {
    foreach ( $backup_sizes as $size ) {
        $del_file = path_join( dirname($meta['file']), $size['file'] );
        /** This filter is documented in wp-includes/functions.php */
        $del_file = apply_filters( 'wp_delete_file', $del_file );
        @ unlink( path_join($uploadpath['basedir'], $del_file) );
    }
}

if ( is_array($backup_sizes) ) {
    foreach ( $backup_sizes as $size ) {
        $del_file = path_join( dirname($meta['file']), $size['file'] );
        /** This filter is documented in wp-includes/functions.php */
        $del_file = apply_filters( 'wp_delete_file', $del_file );
        @ unlink( path_join($uploadpath['basedir'], $del_file) );
    }
}

wp_delete_file( $file );

整个wp_delete_attachment函数只有这几处调用了unlink函数,虽然表面上我们只上传了一张图片,但是wordpress后端为了其他功能将图片处理成了很多张图片。

WordPress 任意文件删除漏洞分析与防御-Eswlnk Blog

这几处中只有第一个,即删除thumbfile时,文件名是可能可控的。那么可控点在哪呢?还记得漏洞利用的第一步吗?现在我们就回到wp-admin/post.php看一下具体代码。

//178-189行
case 'editattachment':
	check_admin_referer('update-post_' . $post_id);

	// Don't let these be changed
	unset($_POST['guid']);
	$_POST['post_type'] = 'attachment';

	// Update the thumbnail filename
	$newmeta = wp_get_attachment_metadata( $post_id, true ); //获取附件的属性
	$newmeta['thumb'] = $_POST['thumb'];

	wp_update_attachment_metadata( $post_id, $newmeta ); //更新数据库中的信息

可以看到这里$_POST['thumb']没有经过任何过滤直接赋值,然后进入了数据库中。

WordPress 任意文件删除漏洞分析与防御-Eswlnk Blog

漏洞防御

  1. 过滤. \等关键字符
  2. $newmeta['thumb'] = $_POST['thumb'];改为$newmeta['thumb'] = basename($_POST['thumb']);
本站默认网盘访问密码:1166
本站默认网盘访问密码:1166
声明:本站原创文章文字版权归本站所有,转载务必注明作者和出处;本站转载文章仅仅代表原作者观点,不代表本站立场,图文版权归原作者所有。如有侵权,请联系我们删除。
WordPress插件渗透分析漏洞网络安全
0
0
Eswlnk的头像
Eswlnk
一个有点倒霉的研究牲站长
赞赏
文件上传如何绕过网络应用防火墙(WAF)的限制?
上一篇
智能手机指纹破解攻击技术BrutePrint的发现,可能带来哪些危害?如何防范?
下一篇

评论 (0)

请登录以参与评论
现在登录
    发表评论

猜你喜欢

  • 「漏洞资讯」CVE-2025-12914:宝塔面板曝出注入漏洞
  • 插件分享:新增自助购买卡密功能
  • 今日热点:伪Clash软件下载陷阱曝光,附防范建议
  • 漏洞资讯:Ollama 未授权访问漏洞分析与防护指南
  • 主题改造计划:手动模块化网站首页
Eswlnk的头像

Eswlnk

一个有点倒霉的研究牲站长
1108
文章
319
评论
679
获赞

随便看看

「主题分享」Mango 主题 | WordPress 瀑布流主题
2022-11-25 22:47:47
智能手机指纹破解攻击技术BrutePrint的发现,可能带来哪些危害?如何防范?
2023-05-30 12:44:42
如何使用Kyverno保护Kubernetes保护用户免受网络攻击
2021-09-08 12:18:05

文章目录

专题展示

WordPress53

工程实践37

热门标签

360 AI API CDN java linux Nginx PDF PHP python SEO Windows WordPress 云服务器 云服务器知识 代码 免费 安全 安卓 工具 开发日志 微信 微软 手机 插件 攻防 攻防对抗 教程 日志 渗透分析 源码 漏洞 电脑 破解 系统 编程 网站优化 网络 网络安全 脚本 苹果 谷歌 软件 运维 逆向
  • 首页
  • 知识库
  • 地图
Copyright © 2023-2025 Eswlnk Blog. Designed by XiaoWu.
本站CDN由 壹盾安全 提供高防CDN安全防护服务
蜀ICP备20002650号-10
页面生成用时 0.611 秒   |  SQL查询 33 次
本站勉强运行:
友情链接: Eswlnk Blog 网站渗透 倦意博客 特资啦!个人资源分享站 祭夜博客 iBAAO壹宝头条
  • WordPress142
  • 网络安全64
  • 漏洞52
  • 软件52
  • 安全48
现在登录
  • 资源
    • 精彩视频
    • 破解专区
      • WHMCS
      • WordPress主题
      • WordPress插件
    • 其他分享
    • 极惠VPS
    • PDF资源
  • 关于我
    • 论文阅读
    • 关于本站
    • 通知
    • 左邻右舍
    • 玩物志趣
    • 日志
    • 专题
  • 热议话题
    • 游戏资讯
  • 红黑
    • 渗透分析
    • 攻防对抗
    • 代码发布
  • 自主研发
    • 知识库
    • 插件
      • ToolBox
      • HotSpot AI 热点创作
    • 区块
    • 快乐屋
    • 卡密
  • 乱步
    • 文章榜单
    • 热门标签
  • 问答中心反馈