热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

无框架的phpcms审计,第一次代码审计之HsycmsV2.0—MVC框架

1.从开始出发—初步介绍MVC框架MVC顾名思义是三个单词的首字母放在一起的简称,M-model(模型),V-view(试图),C-con

1.从开始出发—初步介绍MVC框架

MVC顾名思义是三个单词的首字母放在一起的简称,M-model(模型),V-view(试图),C-controller(控制器),其间的联系又是怎么样的呢,日常贴图

99879d4dca5a

至于MVC框架的具体运作方式,会在后面的文章的介绍,在此不做过多赘述。

2.写配置文件

在mvc框架中,需重点审核的就是控制器下所对应的php文件。从安装开始,

99879d4dca5a

index.php是入口文件,install是模块,index控制器,check.html对应的是方法,详细介绍见

99879d4dca5a

《ThinkPHP5快速入门》

代码审计

99879d4dca5a

在app/install/controller/index.php文件中,首先是config()方法,

99879d4dca5a

在此处,变量$DB被赋值,已经是一个数组,可以看到,$db是可控的,继续跟进$DB,发现在后面的session()方法中,将$DB的值赋给db_config作用是设置session。见图

99879d4dca5a

99879d4dca5a

跟进db_config,发现其进入sql方法,并赋值给变量$dbconfig,并通过write_config()方法赋值给变量$conf,利用seay全局搜索write_config(),

99879d4dca5a

发现此方法在app/install/common.php文件中,并且只是做简单的替换,没有任何过滤或者别的处理,直接写入database.php文件,于是便可以任意写配置文件。

99879d4dca5a

99879d4dca5a

在这里写。

但道路纵使曲折的,写进去了,但安装失败。参考Jokuuy师傅的文章发现,只有在write_config()之前的所有执行不报错的情况下,该方法才会执行。且如果想在数据表前缀处写一句话,则必须结合sql语句进行构造,否则安装数据库失败

99879d4dca5a

就像这样。

此处又看了师傅们的文章,水平有限,真的定位不到这里了

99879d4dca5a

之后就知道了,构造如下payload,

99879d4dca5a

sy_user` set password=1 or '.@eval($_POST["q"]).'#

99879d4dca5a

成功getshell,

99879d4dca5a

该文章参考Jokuuy师傅。



推荐阅读
author-avatar
时间熔金-岁月铅华_758
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有