finecms aip.php漏洞,finecms 最新版v2.3.3前台getshell

还是头像上传的地方,官方认为自己已经修复的很干净了,在我看来还是一点用处都没有。

不过demo站直接把头像上传的功能给阉割了,正常头像都没法上传了,所以我就不在demo上测试了,下载最新的v2.3.3,本地测试。

版本号:

843c2558d5d804511444bc05f948ddd4.png

看到头像上传的代码:

[php]

public function upload() {

if (!isset($GLOBALS['HTTP_RAW_POST_DATA'])) {

exit('环境不支持');

}

// 创建图片存储文件夹

$dir = FCPATH.'member/uploadfile/member/'.$this->uid.'/';

if (!file_exists($dir)) {

mkdir($dir, 0777, true);

}

// 创建图片存储的临时文件夹

$temp = FCPATH.'cache/attach/'.md5(uniqid().rand(0, 9999)).'/';

if (!file_exists($temp)) {

mkdir($temp, 0777);

}

$filename = $temp.'avatar.zip'; // 存储flashpost图片

file_put_contents($filename, $GLOBALS['HTTP_RAW_POST_DATA']);

// 解压缩文件

$this->load->library('Pclzip');

$this->pclzip->PclFile($filename);

if ($this->pclzip->extract(PCLZIP_OPT_PATH, $temp, PCLZIP_OPT_REPLACE_NEWER) == 0) {

@dr_dir_delete($temp);

exit($this->pclzip->zip(true));

}

@unlink($filename);

// 限制文件名称

$avatararr = array('45x45.jpg', '90x90.jpg', '180x180.jpg');

// 删除多余目录

$files = glob($temp.'*');

foreach($files as $_files) {

if (is_dir($_files)) {

dr_dir_delete($_files);

}

if (!in_array(basename($_files), $avatararr)) {

@unlink($_files);

}

}

// 判断文件安全,删除压缩包和非jpg图片

if($handle = opendir($temp)) {

while (false !== ($file = readdir($handle))) {

if ($file !== '.' && $file !== '..') {

if (!in_array($file, $avatararr)) {

@unlink($temp.$file);

} else {

$info = @getimagesize($temp.$file);

if (!$info || $info[2] !=2) {

@unlink($temp.$file);

} else {

copy($temp.$file, $dir.$file);

@unlink($temp.$file);

}

}

}

}

closedir($handle);

}

@rmdir($temp);

[/php]

我曾经用的一个方法是,构造一个部分出错的压缩包,在解压时出现错误,导致exit,但已有部分文件已解压成功,这样就能不被后面的unlink删除。另一个方法是竞争型,再php没来得及删除我们解压出来的文件时,先访问它,让它生成一个shell。

我们看finecms里是怎么修复的:

1.用一个随机目录来保存图片,这样就算我成功解压出来,猜不到目录名也访问不了,也无法产生竞争:

[php]

$temp = FCPATH.'cache/attach/'.md5(uniqid().rand(0, 9999)).'/';

[/php]

2.删除以后再exit出去,这样就算出错,也会删除残留的文件后再退出:

[php]

if ($this->pclzip->extract(PCLZIP_OPT_PATH, $temp, PCLZIP_OPT_REPLACE_NEWER) == 0) {

@dr_dir_delete($temp);

exit($this->pclzip->zip(true));

}

[/php]

看似已经万无一失。

但finecms没想到的是,我们可以构造一个“特别”的压缩包,这个压缩包里我的shell的文件名是“../../../shell.php”,这时我们就能够把shell直接解压到根目录下,我不用猜测目录名,不用惧怕被删除,直接拿下shell。

那么,请看我怎么构造这个压缩包。

漏洞证明:

先把自己的shell改名字成aaaaaaaaaaaaaaaaaaaa.php

之所以起这个名字,就是预留一些空间,方便我之后将文件名改成../../../aaaaaaaaaaa.php而不用怕字符串长度不对。

把文件直接打包成zip,用notepad++打开:

32713e7ff97138322cf668fb591bb79d.png

将我画框的俩文件名的前9个字符改成../../../

6325fb3f2b8035f9c9f5b88cc6f51994.png

然后就大功告成。

注册用户,来到头像上传处,上传头像:

a5a1c0c91acb49995828353205c1a187.png

抓包将刚才构造的压缩包贴进去:

466a11e6aac23b748b3cd955ddb0ae2f.png

然后,网站根目录下就会有你的shell了:aaaaaaaaaaa.php

bb9874aeb7cfafe0d870a149e743d46b.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FineCMS v2(简称v2海豚CMS)是一款开源的跨平台网站内容管理系统,以“实用+好用”为基本产品理念,提供从内容发布、组织、传播、互动和数据挖掘的网站一体化解决方 案。系统基于CodeIgniter框架,具有良好扩展性和管理性,可以帮助您在各种操作系统与运行环境中搭建各种网站模型而不需要对复杂繁琐的编程语言 有太多的专业知识,系统采用UTF-8编码,采取(语言-代码-程序)两两分离的技术模式,全面使用了模板包与语言包结构,为用户的修改提供方便,网站内 容的每一个角落都可以在后台予以管理,是一套非常适合用做系统建站或者进行二次开发的程序核心,史上灵活性最强的CMS系统。 运行环境 1、PHP版本:Php5.2.6 ~ php5.5 2、服务器环境:Nginx、Apache等 3、数据库软件:mysql5.x 4、系统框架程序:Codeigniter 3.0 适合行业 1、CMS内容管理系统 2、B2C网店系统 3、B2B电子商务网站 4、分类信息网站 6、小说、杂志网站 7、视频播放、点播系统 8、旅游类等垂直型网站 9、地方门户系统 基于FineCMS系统的任何网站都支持地区分站、行业分站功能 多站点国际化 每个站点均属独立的系统,模板与语言相互独立、权限互相独立、操作互不影响,共享会员中心,单点同步登录注册等,结合站点语言包能创建出多语言版本的网站,支持站点独立数据库存储,支持站点静态页面同步至指定服务器,可轻松实现强大的负载均衡。 自定义模块、模型、表单 各个模块相互独立,支持域名绑定,支持按栏目进行权限划分,无限分表存储让模块的负载能力更高,超强的自定义模块和字段功能则把系统灵活度发挥到了极致,可以不用编程就实现各种信息发布和检索,系统内置了文章、组图、下载等内容模块。 自定义URL规则、自动生成伪静态 自 定义URL一直是FineCMS系统的一个亮点,能够DIY出各种格式的URL,并支持函数与自定义运用到标签中,增强了自定义URL的灵活性。在v2中 支持自动生成伪静态规则,无需用户动手写规则,系统能自动帮你把规则写好,真正的傻瓜式操作,一键生成规则,并且完美支持主流web服务器。 OAuth、Ucenter 内 置腾讯QQ、新浪微博、百度、网易、Google、搜狐等OAuth一键登录功能,发布文章、评论自动发微博分享,还集成手机短信接口API通过手机短信 验证更安全,同时会员支持与Ucenter完美整合,会员空间支持域名绑定,用它可以创建标准的个人网站或者企业网站。 v2.3.5更新内容如下: 优化数据量达到500万以上时的部分延迟 增加文章内容同模块的复制功能 增加邀请好友注册功能,自动关注邀请者 增加发布动态、邀请好友赠送虚拟币和经验值 增加会员互动微博功能 增加会员动态转发功能 增加粉丝与关注功能 增加任务队列时执行自动更新模块缓存(3小时更新一次) 增加自动缓存、定时缓存,优化缓存机制,修改配置后可不用更新缓存 模块字段(非栏目字段)支持同步其他站点 增强模块和应用的安全性下载检测 修复微信模块在绑定移动端域名时的BUG 取消模块内容描述字段的空格清除 会员管理列表增加自定义字段数据筛选 改进后台首页统计显示方式,增加发布快捷入口 改进会员中心的宽屏显示样式 优化模块修改部分 list表情增加空置的查询值判断和随机排序方式 增加list查询标签参数NOT来匹配“不等于”的查询 增加会员空间创建时的默认模板选择 增加对远程附件服务器的远程URL有效性验证 添加单页时继承上级单页部分属性 增加文章内容水印功能开关
FineCMS v2(简称v2海豚CMS)是一款开源的跨平台网站内容管理系统,以“实用+好用”为基本产品理念,提供从内容发布、组织、传播、互动和数据挖掘的网站一体化解决方 案。系统基于CodeIgniter框架,具有良好扩展性和管理性,可以帮助您在各种操作系统与运行环境中搭建各种网站模型而不需要对复杂繁琐的编程语言 有太多的专业知识,系统采用UTF-8编码,采取(语言-代码-程序)两两分离的技术模式,全面使用了模板包与语言包结构,为用户的修改提供方便,网站内 容的每一个角落都可以在后台予以管理,是一套非常适合用做系统建站或者进行二次开发的程序核心,史上灵活性最强的CMS系统。 运行环境 1、PHP版本:Php5.2.6 ~ php5.5 2、服务器环境:Nginx、Apache等 3、数据库软件:mysql5.x 4、系统框架程序:Codeigniter 3.0 适合行业 1、CMS内容管理系统 2、B2C网店系统 3、B2B电子商务网站 4、分类信息网站 6、小说、杂志网站 7、视频播放、点播系统 8、旅游类等垂直型网站 9、地方门户系统 基于FineCMS系统的任何网站都支持地区分站、行业分站功能 多站点国际化 每个站点均属独立的系统,模板与语言相互独立、权限互相独立、操作互不影响,共享会员中心,单点同步登录注册等,结合站点语言包能创建出多语言版本的网站,支持站点独立数据库存储,支持站点静态页面同步至指定服务器,可轻松实现强大的负载均衡。 自定义模块、模型、表单 各个模块相互独立,支持域名绑定,支持按栏目进行权限划分,无限分表存储让模块的负载能力更高,超强的自定义模块和字段功能则把系统灵活度发挥到了极致,可以不用编程就实现各种信息发布和检索,系统内置了文章、组图、下载等内容模块。 自定义URL规则、自动生成伪静态 自 定义URL一直是FineCMS系统的一个亮点,能够DIY出各种格式的URL,并支持函数与自定义运用到标签中,增强了自定义URL的灵活性。在v2中 支持自动生成伪静态规则,无需用户动手写规则,系统能自动帮你把规则写好,真正的傻瓜式操作,一键生成规则,并且完美支持主流web服务器。 OAuth、Ucenter 内 置腾讯QQ、新浪微博、百度、网易、Google、搜狐等OAuth一键登录功能,发布文章、评论自动发微博分享,还集成手机短信接口API通过手机短信 验证更安全,同时会员支持与Ucenter完美整合,会员空间支持域名绑定,用它可以创建标准的个人网站或者企业网站。 v2.3.2更新内容如下: 修复百度编辑器在ie9以下浏览器不显示问题 增加网站导航选择模块或单页时的修改名称功能

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值