禅知Pro 1.6 前台任意文件读取 | 代码审计
禅知 Pro v1.6 前台任意文件读取 | 代码审计
蝉知专业版是基于蝉知企业门户系统开源版开发,继承了蝉知本身的优秀功能。相对于蝉知开源版增强了商品的属性自定义、属性价格定制、物流跟踪、微信支付、微信登录、手机短信等功能。蝉知专业更加注重企业网站的营销推广。
文件读取漏洞好好分析下。禅知Pro 1.6.1 已经修复了这个漏洞。
首先安装,安装成功,文末分享源码。
接下来开始代码审计,漏洞分析。
路径:D:\wamp\www\test\chanzhiPro1.6.php5\chanzhieps\www\file.php

首先是初始化了一些配置,定义我们传进来的参数。
第19行,dirname() 函数返回路径中的目录部分。rtrim() 函数移除字符串右侧的空白字符或其他预定义字符。
$dataRoot 是我们可读取文件的路径

接着走到了 21--32 行,可以看到这段代码中我们可控的参数有 $objectType 和 $pathname
$objectType 传入字符串 source 或者 slide 后,$savePath = $dataRoot ,$dataRoot 会赋值给 $savePath
接下来跳出 if 判断语句,$realPath = $savePath . $pathname; 传入的 $savePath . $pathname 拼接给了 $realPath
再接着往下看,33--56行

判断 $realPath 是否存在,然后再经过 php 的三元运算。把 $realPath 变量再次赋值给 $filePath ;
strpos() 函数查找字符串在另一字符串中第一次出现的位置。
接着又是一些判断,直接来看第53行。
来到 $mime 这里,进入 getMimetype() 函数

这个函数特别长,从125行到最后。函数定义了 http mime 头,这里没什么要分析的,接着上面的往下分析
在代码开头第14行,$objectType 变量被定义为$_GET['o'] ,
在代码开头第16行,$extension 变量被定义为$_GET['t'] ,
我们读文件的话自然以txt的格式读。
然后再接着往下走,走到了第56行。fopen() 函数打开文件或者 URL。
fopen() 函数直接读取了我们的文件路径。到这里就够了,就可以直接读取文件了。下面的57行--123行是对 $handle 和 $mime 做一些判断和操作。就不分析了。
这里我们直接构造文件读取的 payload :
http://127.0.0.1/chanzhiPro1.6.php5/chanzhieps/www/file.php?pathname=../file.php&t=txt&o=source

读取 system/config/config.php
http://127.0.0.1/test/chanzhiPro1.6.php5/chanzhieps/www/file.php?pathname=../../system/config/config.php&t=txt&o=source

数据库的账号密码在 system/config/my.php 文件里,所以读取下数据库账号密码。
http://127.0.0.1/test/chanzhiPro1.6.php5/chanzhieps/www/file.php?pathname=../../system/config/my.php&t=txt&o=source

至此,任意文件读取漏洞分析结束!
漏洞修复:
在最新版拼接路径处加入 realpath() 函数去除目录跳跃的操作
并使用 strpos() 函数判断我们传入的路径 $realPath 是否在可读取的路径 $dataRoot 中

源码分享(链接: https://pan.baidu.com/s/1X-9zfSZk05B0OTvJoUytKA 密码: w5tp)
本文链接(http://www.cnblogs.com/Oran9e/p/9055004.html),转载请注明!
禅知Pro 1.6 前台任意文件读取 | 代码审计的更多相关文章
- 蓝凌OA前台任意文件读取漏洞利用
		
近期CNVD爆出漏洞编号:CNVD-2021-28277,首次公开日期为2021-04-15,蓝凌oa存在多个漏洞,攻击者可利用该漏洞获取服务器控制权.今天挑选一个蓝凌OA前台任意文件读取漏洞进行分析 ...
 - Discuz!X 3.4 前台任意文件删除漏洞复现
		
Discuz!X 3.4 前台任意文件删除漏洞复现 参考链接: http://www.freebuf.com/vuls/149904.html http://www.freebuf.com/artic ...
 - feifeicms后台任意文件读取
		
前台大略看了下,本身内容比较简单,经过“洗礼”后以及没什么问题了,基本上输入都过滤了. 这次审计找到了一个后台的任意文件读取,可以读取数据库配置文件. 在DataAction.class.php文件中 ...
 - PHPMailer命令执行及任意文件读取漏洞
		
今天在thinkphp官网闲逛,无意下载了一套eduaskcms,查看了一下libs目录中居然存在PHPMailer-5.2.13,想起了之前看到的PHPMailer的漏洞,可惜这套CMS只提供了一个 ...
 - 应用服务器Glassfish任意文件读取漏洞
		
catalogue . 前言和技术背景 . Glassfish安装配置 . 漏洞利用 . 漏洞缓解(修复) 1. 前言和技术背景 0x1: GlassFish是什么 GlassFish 是用于构建 J ...
 - 安全研究 | Jenkins 任意文件读取漏洞分析
		
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由云鼎实验室 发表于云+社区专栏 一.漏洞背景 漏洞编号:CVE-2018-1999002 漏洞等级:高危 Jenkins 7 月 18 ...
 - python从任意文件读取邮件地址输出的代码
		
如下的资料是关于python从任意文件读取邮件地址输出的代码. # This script takes whatever you throw at stdin and outputs email ad ...
 - 【代码审计】大米CMS_V5.5.3 任意文件读取漏洞分析
		
0x00 环境准备 大米CMS官网:http://www.damicms.com 网站源码版本:大米CMS_V5.5.3试用版(更新时间:2017-04-15) 程序源码下载:http://www ...
 - 【代码审计】XYHCMS V3.5任意文件读取漏洞分析
		
0x00 环境准备 XYHCMS官网:http://www.xyhcms.com/ 网站源码版本:XYHCMS V3.5(2017-12-04 更新) 程序源码下载:http://www.xyhc ...
 
随机推荐
- 【oracle入门】SQL的命令动词
			
SQL的功能 命令动词 数据定义 CREATE,DROP,ALTER 数据操纵 SELECT,INSERT,UPDATE,DELETE 数据控制 CRANT,REVOKE
 - 博三F5第一次站立会议(2019-03-09)
			
时间:2017-03-09 地点:博三414寝室 时长:一个小时 到勤:全员到勤.(注:寝室有点乱,不敢附上会议图片~~~) 谈论内容: 大致确定本周计划与下周打算(注:后期可能有所改变) 本周计划: ...
 - ps 处理gif
			
ps打开gif后,做了修改(去掉了背景色),但之后发现本来是动图的gif不动了. 解决该问题需要注意两点: 一:保存时,要选择保存为web格式 二:在ps中打开时间轴,在时间轴中选中某一帧时,只能有多 ...
 - [2019BUAA软件工程]结对作业
			
Tips Link 作业链接 [2019BUAA软件工程]结对作业 GitHub地址 WordChain PSP表格 psp2.1 预估耗时(分钟) 实际耗时(分钟) Planning 计划 60 ...
 - mysql 导入数据库问题
			
今天数据库迁移测试,发现存储过程导入不了,提示如下错误: Cannot load from mysql.proc. The table is probably corrupted 原因是mysql5. ...
 - jdk的环境变量配置
			
首先下载jdk,下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html 可以选择下载jdk的版本,按照提示一步一 ...
 - 二、Windows 下 ShellCode 编写初步
			
第二章.Windows 下 ShellCode 编写初步 (一)shellcode 定义:最先的 Shell 指的是人机交互界面,ShellCode 是一组能完成我们想要的功能的机器代码,通常以十六进 ...
 - 小程序之hover-class
			
hover-class 属性主要是用来来指定元素的点击态效果.但是在在使用中要注意,大部分组件是不支持该属性的. 目前支持 hover-class 属性的组件有三个:view.button.navig ...
 - 百度编辑器UEditor 点击上传图片选择框会延迟几秒才会显示 反应很慢(转)
			
转自:http://www.blogxuan.com/php/show/323.html UEditor 编辑器点击上传文件选择框会延迟几秒才会显示,反应很慢,上传图片选择框显示很慢. 1.uedit ...
 - 数据库中无数据时查询数据为空,但出现空指针异常的解决方案(转载https://blueskator.iteye.com/blog/2096026)
			
异常:java.lang.NullPointerException 解决方案: try{ hotelImageList = ihotelImgManager.query(hiqc); }catch(E ...