PHP代码审计学习(1)——代码设计及流程
杂言
一直计划学PHP代码审计但一直不在状态,翻了一下王叹之师傅的博客发现人家是体系化的学习,对比起来我实在是太浮躁了,回想起之前的面试,很多问题都是似懂非懂的,很多东西都太零碎,是要好好静下心来学东西了,要把这个PHP代码审计好好学,这里我是参照着教程和吴翰清的《代码审计 企业级Web代码安全架构》学习的,因为之前读DVWA源代码的时候配置好了环境,我这里直接用WAMP+seay审计系统了跳过环境配置了,
MVC架构
MVC是一种使用MVC设计创建的WEB应用程序的模式,MVC同时提供HTML,CSS,JS的完全控制
V即View视图是指用户看到并与之交互的界面。比如由html元素组成的网页界面,或者软件的客户端界面。MVC的好处之一在于它能为应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,它只是作为一种输出数据并允许用户操纵的方式。
M即model模型是指模型表示业务规则。在MVC的三个部件中,模型拥有最多的处理任务。被模型返回的数据是中立的,模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
C即controller控制器是指控制器接受用户的输入并调用模型和视图去完成用户的需求,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。
常见PHP框架
1、zendframwork: (ZF)是Zend公司推出的一套PHP开发框架
2、Yii由国人开发的重量级的框架
3、CakePHP是国外的框架
4.Symfony,是一套国外的PHP开源框架
5、CodeIgniter(CI)轻量级框架,运行速度快
6、CanPHP框架是一个简洁,实用,高效,遵循apache协议的php开源框架
7、Laravel 是一个简单优雅的 PHP web 开发框架
8、SlimFramework是一个简单的 PHP5 框架用来创建 RESTful 的 Web 应用
9、ThinkPHP是一个快速、简单、面向对象的轻量级PHP开发框架
10、PHPUnit是一个轻量级的PHP测试框架
11、KYPHP支持多数据库,多语言,多模版,多app,多缓存,多编码格式,模板布局,自定义类,自动加载公共类库
12、initPHP是一款轻量级的php开发框架
13、SpeedPHP是一款全功能的国产PHP应用框架系统
处理流程
获取请求=》全局过滤=》模块文件=》C函数内容=》M函数内容=》V显示
审计方法
通读原文
网站目录结构、函数集文件、配置文件、安全过滤文件、index文件
优点:了解程序的架构和业务逻辑,挖掘高质量漏洞,一般适合企业对自身的铲平审计
缺点:耗费时间多,程序比较大
敏感关键字回溯
优点:可以快速高效挖出想要的漏洞,最常用的方法,判断敏感触发点的位置及上下文,追踪参数源头
缺点:覆盖不到逻辑漏洞的挖掘,不能了解程序的基本框架
查找可控变量
功能定向审计(推荐)
程序安装、文件上传、文件管理、登陆验证、备份恢复、找回密码
一切皆有可能
一切输入都是有害的,可以控制的变量
一切进入函数的变量都是有害的,有的变量到达有利用价值的函数(危险函数)