入门MVC结构代码审计

入门MVC结构代码审计

  • **Model :**模型层(用于数据库打交道)
  • **View :**视图层(用于展示内容给用户看)
  • **Controller :**控制层(控制业务逻辑)

M是指业务模型,V是指用户界面,C则是控制器

MVC各部分的职能:

  • 模型Model – 管理大部分的业务逻辑和所有的数据库逻辑。模型提供了连接和操作数据库的抽象层。
  • 控制器Controller - 负责响应用户请求、准备数据,以及决定如何展示数据。
  • 视图View – 负责渲染数据,通过HTML方式呈现给用户。

MVC流程图

一个典型的Web MVC流程:

  1. Controller截获用户发出的请求;
  2. Controller调用Model完成状态的读写操作;
  3. Controller把数据传递给View;
  4. View渲染最终结果并呈献给用户。

MVC 一般有两种审计模式:

直接审计控制器

也就C的内容,再追踪一些函数。全局搜索一下**filt__**,因为 filt 的英文意思为过滤,可以通过全局搜索这样式的函数来查看一下过滤规则。这种一般是比较快速审计。

但是这种情况一般建立在你可以清晰明白该款CMS的路由规则,适合老鸟,方便根据审计出来的漏洞的点去回溯验证

从index页面通读审计

从头到尾,新手入门审计方式

使用MVC模式开发我们在代码审计中需要注意:文件路径不等于访问的url。

例如:

http://127.0.0.1/index.php?s=member&c=account&m=avatar

使用MVC开发的程序,路由形式并不是文件路径,而是以传参的方式进行访问,那么我们如果通过路由定位到该头像上传的函数呢???

打开审计系统导入源码

1、访问index.php —> define(‘FCPATH’, dirname(FILE).’/finecms/‘); // 得到程序路径为finecms

2、进入finecms目录下查看init.php初始化文件 —> define(‘VIEWPATH’, FCPATH . ‘dayrui/‘); // 得到主项目目录

image-202208121611927

3、进入dayrui目录下根据参数s=member&c=account&m=avatar进行搜索方法
s –> 目录
c –> 文件
m –> 方法

image-202208121612998

定位到相关文件和方法后即可继续分析代码是否存在漏洞。

参考与引用:

https://blog.csdn.net/weixin_44032232/article/details/113975234

https://cloud.tencent.com/developer/article/1942815

https://www.cnblogs.com/wsybky/p/8638876.html