禅知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 ...
随机推荐
- redis命令Keys(九)
常用命令 1>keys 返回满足给定pattern 的所有key redis 127.0.0.1:6379> keys mylist* 1) "mylist" 2) & ...
- 博三F5第二次站立会议(2019-03-21)
时间:2019-03-21(第五周) 地点:博三414寝室 时长:一个半小时 到勤:全员到勤 谈论内容: 大致确定本周计划与下周打算 本周计划: 杨澳:做出整个游戏软件开发过程的大致时间规划,做出需求 ...
- java数组的定义
class ArrayDome { public static void main(String[] args) { //元素类型[] 数组名 创建一个 元素类型[元素个数或数组长度] /* 需要一个 ...
- CSS学习笔记_day3
一.浮动的清除 1.给祖先元素加高度 <style> * { padding: 0; margin: 0; } .box1 { height: 100px; /**/ } ul { /*去 ...
- DashBoard创建各种表(一)
创建透视表 1.首先需要创建一个DashBoard,然后点击开始导航栏中的透视,创建一个透视表,透视表可以交叉式的显示报告,让我们可以更直观的看到多维数据. 2.把CategroyName和Categ ...
- Maven,gradle的搭建工具
Glassfish安装.基本使用 一.glassfish简介 glassfish是一款web应用服务器,和tomcat一样,也是一款优秀的Servlet容器. 二.glassfish知识点 1.dom ...
- C# 代码补全
cw + Tab + Tab 输出 Console.WriteLine(); try +Tab+Tab 输出 try catch代码块 foreach + Ta ...
- mininet的学习之三----------mininet中流表应用实战
我们看的同一个视频,工整的整理见以下网址 https://blog.csdn.net/weixin_36372879/article/details/86371583#commentBox
- bugku 密码学一些题的wp
---恢复内容开始--- 1.滴答滴 摩斯密码,http://tool.bugku.com/mosi/ 2.聪明的小羊 从提示猜是栅栏密码,http://tool.bugku.com/jiemi/ 3 ...
- 软件开发者路线图梗概&书摘chapter7
软件工程是一门技艺 原因:理解不足以系统化 技能:为交付可以工作的软件 重要的原因:了解不足以将它写成可供别人直接运用并得到相同成果的格式 大多数程序员低于平均水平 工艺:一套高度重视技能的训练和传统 ...