入门MVC结构代码审计
入门MVC结构代码审计
- **Model :**模型层(用于数据库打交道)
- **View :**视图层(用于展示内容给用户看)
- **Controller :**控制层(控制业务逻辑)
M是指业务模型,V是指用户界面,C则是控制器
MVC各部分的职能:
- 模型Model – 管理大部分的业务逻辑和所有的数据库逻辑。模型提供了连接和操作数据库的抽象层。
- 控制器Controller - 负责响应用户请求、准备数据,以及决定如何展示数据。
- 视图View – 负责渲染数据,通过HTML方式呈现给用户。
一个典型的Web MVC流程:
- Controller截获用户发出的请求;
- Controller调用Model完成状态的读写操作;
- Controller把数据传递给View;
- 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/‘); // 得到主项目目录
3、进入dayrui目录下根据参数s=member&c=account&m=avatar进行搜索方法
s –> 目录
c –> 文件
m –> 方法
定位到相关文件和方法后即可继续分析代码是否存在漏洞。
参考与引用:
https://blog.csdn.net/weixin_44032232/article/details/113975234