PHP代码审计(行云海CMS v3.5)


前言

最近突然想搞代码审计,拿行云海3.5练练手,感觉对新手还是挺友好的,搞得我这小菜鸡信心倍增

点击下载行云海v3.5源码(仅提供下载链接,不负责文件的安全性)

rips、seay打包(我记得我设的免费的来着,不知道为什么给我变成要积分了,而且积分要得时多时少)

一、debug环境配置

虽说是环境配置,其实也就是记录一下我自己遇到的一些问题,具体的就不写了


phpstudy 可以直接开启 Xdebug 扩展,不需要自己去下载对应版本的 dll 文件,但是配置文件默认关闭了debug模式,需要将 xdebug.remote_enable 的值设为1

在这里插入图片描述

在这里插入图片描述
当时搞了半天也不知道哪里出了问题,结果一看配置文件人都傻了,总之一个字,还是太菜了


打开apache配置文件,在末尾添加 FcgidIOTimeout 360000 不然debug时间长了容易报500错误



二、准备好审计工具

1. rips

在这里插入图片描述
rips 将verbosity level:调为 1.仅用户污染 准确率很高,但有些扫不出来

rips最棒的地方在于可以自动回溯,看着很舒服



2. seay源代码审计系统

在这里插入图片描述
能扫出很多漏洞,同时误报率也就搞了

这里有个小技巧(听师傅们说的):对于MVC模式的网站,主要看后台目录下的 Controller 文件夹,可能表述不太清楚,就是下图这个地方
在这里插入图片描述



三、任意文件下载

  1. 使用rips扫到一个 File Disclosure,很清楚的说明了漏洞在 DatabaseController.class.php 文件(截图没截到)中的 downfile() 方法中,同时说明了漏洞点以及参数来源

在这里插入图片描述

  1. 在phpstorm中打开代码,找到漏洞所在位置在这里插入图片描述

在这里插入图片描述

  1. 分析代码
  • 首先要以 GET方式 传入 file 和 type,其中 type 必须是 ‘zip’ 或者 ‘sql’ ,否则回显 “下载地址不存在”
  • $path 为一个数组,固定为(“zip” => “./Data/resource/backupdata”; “sql” => “./Data/resource/backupdata”)
  • 如果 type 的值为 zip, 则 $filepath 为 ./Data/resource/backupdata/ + 传入的文件名;若为 sql,则 $filepath 为 ./Data/resource/backupdata + 传入的文件名(所以这里可能存在目录穿越)
  • 如果文件存在则会去下载文件

  1. 其实可以直接下断点观察

访问 http://localhost/xyh35/xyhai.php?s=Database/downFile&file=…/…/…/index.php&type=zip
观察各变量变化

在这里插入图片描述
最后成功下载web根目录下的 文件 index.php



四、任意文件读取

seay扫到不少,我把 home 和 manage 目录下的都分析了一遍,大部分漏洞点的参数都是从数据库读取,可能能配合其他漏洞打个组合拳,但是难度就比较大了,不适合我这种萌新

在这里插入图片描述


分析第二十五点,双击查看源码,定位到94行,在phpstorm中找到对应代码

在这里插入图片描述
做一下简单分析,第63行 IS_POST 虽然不知道他怎么实现的,但是看名字可以知道是判断是否以POST的方式传入,POST方式传入过滤挺严谨的,目录穿越不能用,而且文件扩展名必须为 html。而下面 GET 方式并没有进行过滤,随便传个参数进去可以观察到 $file_path 有三层,使用 …/…/…/ 即可以跳转到web根目录

其中第85行对fname进行了一次base64解码,所以直接构造payload http://localhost/xyh35/xyhai.php?s=Templets/edit/fname/Li4vLi4vLi4vaW5kZXgucGhw
在这里插入图片描述
如此,通过目录穿越,可以读取到web目录下的 index.php 文件,构造类似的payload,即可以读取任意文件

五、任意文件删除

继续查看 seay 扫出的漏洞,在 TempletsController.class.php 的第134行存在任意文件删除
在这里插入图片描述在这里插入图片描述
打开phpstorm找到对应代码,如下图所示,还是那句老话,虽然不知道 127 行怎么实现的,但是很容易理解是将传入的 fname 的值进行 base64 解码。或者 debug 看一下也很容易发现确实如此

在这里插入图片描述
跟前面的任意文件读取差不多,传入 payload ?s=/Templets/del/fname/Li4vLi4vLi4vMS50eHQ= ,Li4vLi4vLi4vMS50eHQ= base64解码后为 …/…/…/1.txt,可以删除根目录下的 1.txt

这个一开始我还以为是个损人不利己的洞,但是师傅说,在web根目录下的 Install 目录下有一个,install.lock 文件,删除这个文件就可以重装CMS

总结

这个CMS确实都是些挺简单的漏洞,用于入门练手的绝佳CMS,可能作者就是给我们入门用的吧,哈哈,说笑了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
云海CMS(XYHCMS)网站内容管理系统 v3.5 bulid0508更新日志 [√]增加全局文档搜索(所有模型文档[单页除外])。 [√]增加Tag。 [√]增加通用配置标签:cfg。方便调用自己手动添加的配置项。 [√]增加上传图片水印功能。 [√]增加已上传的图片缩略图重新生成功能(在附件管理处),方便进缩略图尺寸调整后使用。 [√]栏目增加css样式设置,方便前台调用(如果不同的栏目不同的图标样式等) [√]权限系统由原来的RBAC换成AUTH权限 [√]增加部门(网站后台),可设置后台内部用户(原管理员)所属于部门(原管理组),及对应职位(权限)。 [√]增加栏目权限统一设置,包括职位(原管理员组)及会员组的栏目权限。 [√]增加 添加文档时 点击数起始值可设置为随机数或固定数。 [√]增加文档的权重,权重越大的默认排前(用于文档的排序)。 [√]增加type标签调用范围,可调用对应栏目的信息,可调用对应栏目的父级栏目信息,可调用对应栏目的顶级栏目信息,使用时可3选1。 [√]增加栏目的状态,满足个性化需求。由原来的2种状态(显示、隐藏),变为3种状态:显示,隐藏(导航不显示,能访问),禁止(禁止访问) [√]增加栏目不存在的访问优化(属于SEO优化)。当栏目不存在/栏目禁止访问时,提示404(原来提示栏目不存在) [√]增加对应栏目的文档数标签:typenum。 [√]列表标签(如list,piclist等)增加对多栏目的支持,如typeid='2,3,4'。 [√]数据库表进规范。如表名/字段名统一以小写和下划线分割。同时时间字段统一由原来时间截变为日期字段。 [√]自由块标签block调整为freeblock。解决跟框架模板block重名问题。 [√]跟国家言论政策接规,留言本和评论增加审核功能。新发布留言或评论需要审核后才会显示(默认)。当然如果有需求不审核能正常显示也可以,调用对应标签时,指定对应属性值即可。 [√]增加选择站内图片时,友好显示对应缩略图,同时可自由选择各尺寸图片(原来需要点击图片才会展示图片预览)。 [√]图片上传生成缩略图尺寸配置项,由原来2个合并成1个。 [√]客服代码全面升级。去除原来IE6的支持。新版本客服代码更现代,更美观。 [√]修改catlist标签不指定flag时(默认由原来为0变为1),则默认显示全部栏目。增加hideflag属性,当hideflag为0时,不包含隐藏的栏目。 [√]增强清除系统缓存功能,可以全部清除,也可以部份数据清除。如果清除过程有失败,也会及时提示,方便用户进一步处理。 [√]“更新静态缓存”功能进合并优化(并不是所有人都会使用到,所以进合并,同时有相关文字友好提示)。 [√]增加栏目/文档/留言/评论等标签的json接口,方便移动端使用数据。 [√]解决TP3.X在缓存使用却存在缺陷的安全问题 [√]禁止XYHCMS配置项填写php代码的等安全问题 云海CMS(XYHcms)简介 云海CMS(XYHcms)是完全开源的一套CMS内容管理系统,使用简单,轻松建站。 是企业建站、个人博客、个性网站的首选。系统简洁,高效,易用,一般的开发人员能够使用本系统以最低的成本、最少的人力投入,在最短的时间内架设一个功能齐全、性能优异的网站。 注:XYHCMS3.0要求php5.3及以上,如果php版本较低,请下载XYHCMS2.0 XYHCMS是基于PHP Mysql开发的网站内容管理系统,提供了单页模块,文章类模块,产品类模块,图片类模块,下载类模块等。你在使用过程中可选择任意模块来建设您的网站。 同时集成电脑版及手机版网站,方便各种终端访问。 伪静态一键设置,简单实用。 静态缓存设置,缓解服务器压力。 云海CMS(XYHcms)前台页面   云海CMS(XYHcms)后台管理 后台地址:域名/xyhai.php?s=/Index/index 用户名与密码:安装时可设置 后台页面: 相关阅读 同类推荐:CMS系统 企业网站

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值