74cms后台rce分析

渗透技巧 2年前 (2022) admin
523 0 0

74cms后台rce分析

背景

在打https://qsnctf.com/平台,给团队号刷榜,小奇师傅在群里丢了一个题目,闲客师傅直接梭哈,然后小奇师傅《骂我》,所以我就写了这篇文章

前期

74cms是基于tp框架开发的,对于tp框架开发的cms审计个人认为有2条线路

基于tp框架本身的tp框架安全(难)

基于tp框架开发的cms,重点审计开发者基于tp加的自定义功能

因为有些功能需要开发者自己开发

不推荐上手tp我们就去审计sql注入,因为他有特殊的安全写法,基本全局过滤

一般审计对于文件和写入的审计,大多过滤和操作都是二次开发者自定义书写的

审计

首先丢到seay里面去扫一下

74cms后台rce分析

众所周知file_put_contents这个函数可以执行写入文件的操作

用phpstorm点进去看下

74cms后台rce分析

对应的定义方法是update_config发现这个方法接收两个参数$new_config, $config_file,这段代码执行的操作就是,is_file方法就是检查指定的文件是否是常规的文件,并且经行路径重写,

74cms后台rce分析

Figure 3:

重写到/Application/Home/Conf/目录下的config.php文件

之后$config_file变量会进入一个if判断,is_writable方法做用是判断可不可写

74cms后台rce分析

然后进入if语句中包含一次复制给$config变量,然后进入multimerge方法

74cms后台rce分析

用seay看下这个方法的定义

74cms后台rce分析

Figure 6:

multimerge方法接收a和b两个变量然后进入if判断,分别判断b是否为数组,并且返回数组中元素的数目,然后遍历下,然后所搜索session_options的数组值

大概意思明白了,emmm似乎没啥用

74cms后台rce分析

file_put_contents函数中的另外两个函数也没啥用直接跳过

截至到现在的分析可以看出,只要我们控制了$config就可以实现RCE,接下来我们看下update_config方法在哪儿有调用

74cms后台rce分析

我们系统的看下一set方法

74cms后台rce分析

发现会进入一个I的方法,我们看下I方法写的什么

74cms后台rce分析

图没截图全,I方法是tp框架中内置的一个方法,它主要的作用是进行tp请求格式书写,以及过滤操作

如:

正常:$_GET['id'];
tp:echo I('get.id')

所以上文中set方法中有个参数叫tpl_dir

74cms后台rce分析

并且我们发现对tpl_dir过滤很简单去除两边的空格

然后回放进_get_templates_info方法

74cms后台rce分析

看下_get_templates_info方法定义

74cms后台rce分析

这块执行的操作就是获取模板的一些信息

74cms后台rce分析

然后我们看下setField方法

74cms后台rce分析

没啥用

接下来$tpl_dir又会进入ads_init方法,我们看下

74cms后台rce分析

这块发现就是对模板配置信息的获取

在看tpl控制器文件

74cms后台rce分析

执行完操作1之后(也就是货期完配置信息)就会进入我们开头看到的东西update_config

路由

tp路由书写:

地址/index.php?m=模块&c=控制器&a=方法名

本案例路由+poc:

地址/index.php?m=Admin&c=Tpl&a=set&tpl_dir=', 'a',phpinfo(),'

74cms后台rce分析



原文始发于微信公众号(HashRun安全团队):74cms后台rce分析

版权声明:admin 发表于 2022年10月9日 下午8:36。
转载请注明:74cms后台rce分析 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...