本公众号所发布的文章及工具只限交流学习,本公众号不承担任何责任!如有侵权,请告知我们立即删除。
代码审计就是对目标的源代码进行分析,发现其程序错误、安全漏洞和违反程序规范的地方。提前做好代码审计工作,非常大的好处就是限于黑客发现系统的安全隐患,提前部署好安全防御措施,保证系统的每个环节在未知环境下都能经得起挑战。
通读全文源码:通读全文发作为一种最麻烦的方法也是最全面的审计方法。特别是针对大型程序,源码成千上万行。当然了解整个Web应用的业务逻辑,才能挖掘到更多更有价值的漏洞。
功能点审计:根据漏洞对应发生函数进行功能行审计,常会用到逆向溯源数据流方法进行审计。
正向追踪数据流:跟踪用户输入参数 -> 来到代码逻辑 -> 最后审计代码逻辑缺陷 -> 尝试构造payload。
逆向溯源数据流:字符串搜索指定操作函数 -> 跟踪函数可控参数 -> 审计代码逻辑缺陷 -> 尝试构造payload。
单入口cms:不管访问哪个模块都使用同一个入口文件,常见的MVC框架采用这种模式。
多入口cms:每个模块都有一个入口文件(可以前端设置一个入口文件 index.php,后端创建一个入口文件admin.php,前后端的入口文件是独立的)。
小编建议如果要进行代码审计,最好去熟悉你要进行代码审计的语言,亲自去开发一个程序,从程序员的角度出发做代码审计,能够更好的去思考问题,能够更为快速的定位问题。
代码审计通用思路:确定审计源码种类->确定cms类->(1)根据敏感关键字回溯参数传递过程/(2)查找可控变量,正向追踪变量传递过程/(3)寻找敏感功能点,通读功能点代码/(4)直接通读全文代码(确定该语言的各种漏洞诞生的函数)
优点:只需搜索相应敏感关键字,即可以快速地挖掘想要的漏洞,具有可定向挖掘和高效、高质量的优点。
缺点:为由于没有通读代码,对程序的整体框架了解不够深入,在挖掘漏洞时定位利用点会花费一点时间,另外对逻辑漏洞挖掘覆盖不到。
查找可控变量,正向追踪变量传递的过程,查找可能存在安全漏洞的变量,从变量处发现安全问题
常见的可操控变量:name、id、password、pwd、select、search等
通读功能点的代码,尤其关注于易出现漏洞的功能点
如:文件上传、留言板、登录认证功能、找回密码等通过从敏感功能点入手来查找安全问题。
需了解网站目录结构、函数集文件、配置文件、安全过滤文件、index文件
优点:了解程序的架构和业务逻辑,挖掘高质量漏洞,一般适合企业对自身的铲平审计。
缺点:耗费时间多,程序比较大。
zendframwork: (ZF)是Zend公司推出的一套PHP开发框架
Yii由国人开发的重量级的框架
CakePHP是国外的框架
Symfony,是一套国外的PHP开源框架
CodeIgniter(CI)轻量级框架,运行速度快
CanPHP框架是一个简洁,实用,高效,遵循apache协议的php开源框架
Laravel 是一个简单优雅的 PHP web 开发框架
SlimFramework是一个简单的 PHP5 框架用来创建 RESTful 的 Web 应用
ThinkPHP是一个快速、简单、面向对象的轻量级PHP开发框架
PHPUnit是一个轻量级的PHP测试框架
KYPHP支持多数据库,多语言,多模版,多app,多缓存,多编码格式,模板布局,自定义类,自动加载公共类库
initPHP是一款轻量级的php开发框架
SpeedPHP是一款全功能的国产PHP应用框架系统
一切输入都是有害的,一切进入函数的变量都是有害的。