目录
1.代码审计目的
2.代码审计基本
3.代码审计思路
4. PHP核心配置
5.代码审计环境
6.手动调试代码
7. PHP的弱类型
8.学习"漏洞"函数 9.代码审计总结1、代码审计目的
代码审计指的是对源代码进行检测,寻找代码中的bug以及安全缺陷(漏洞)。代码审计这是一个必须多方面技能的技术,亦是必须必定的知识贮存。咱们必须把握编程,安全工具的运用、漏洞原理、漏洞的修复方式、函数的缺陷等等,倘若再高级有些,咱们必须学习区别的设计模式,编程思想、MVC框架以及平常的框架。
那样针对小白应该是必须一个路线,一个流程。
先记住一句话"一切存在用户输入的地区都有可能存在漏洞"
戳此获取网络安全资源
2、代码审计基本
代码审计入门基本:html/js基本语法、PHP基本语法 ,面向对象思想,PHP小项目研发(Blog、注册登录、表单、文件上传、留言板等),Web漏洞挖掘及利用,Web安全工具基本运用(burpsuite、sqlmap等),代码审计工具(seay审计系统、zend studio+xdebug等)
代码审计两种基本方式: 通读全文源码:通读全文发做为一种最麻烦的办法亦是最全面的审计办法。尤其是针对大型程序,源码成千上万行。当然认识全部Web应用的业务规律,才可挖掘到更加多更有价值的漏洞。功能点审计:按照漏洞对应出现函数进行功能行审计,常会用到逆向溯源数据流办法进行审计。代码审计两种基本办法: 正向跟踪数据流:跟踪用户输入参数 -> 来到代码规律 -> 最后审计代码规律缺陷 -> 尝试构造payload逆向溯源数据流:字符串搜索指定操作函数 -> 跟踪函数可控参数 -> 审计代码规律缺陷 -> 尝试构造payload现cms可分大体两类: 单入口cms:不管拜访哪个模块都运用同一个入口文件,平常的MVC框架采用这种模式。多入口cms:每一个模块都有一个入口文件(能够前端设置一个入口文件 index.php,后端创建一个入口文件admin.php,前后端的入口文件是独立的)。3、 代码审计思路
从个人方向出发,倘若环境准许的话,能够先选取做一个”程序员“再来做代码审计。
由于从研发者的位置去思考问题,能够快速定位问题。学习面向对象编程以及面向过程编程,编写有些项目提高对代码的理解能力,再是对各样漏洞能够独立挖掘利用并能理解漏洞的害处,这儿咱们重点针对PHP源码做审计
接下来咱们从三个层次起始咱们的源码审计思路 确定要审计的源码是什么语言确定该源码是单入口还是多入口确定该语言的各样漏洞诞生的函数4、PHP核心配置
一个漏洞在区别环境导致的结果亦是不同样的。
因为关于php.ini配置的内容过于多,这儿举荐浏览官方文档 https://www.php.net/manual/zh/ini.php,咱们在这儿重点列下php.ini 重点运用的安全配置。
safe_mode = off用来限制文档的存取,限制环境变量的存取,掌控外边程序的执行.PHP5.4.0移除。限制环境变量存取safe_mode_allowed_env_vars = string指定php程序能够改变的环境变量的前缀,当这个选项的值为空时,那样php能够改变任何环境变量,倘若 如:safe_mode_allowed_env_vars = PHP_,当这个选项的值为空时,那样php能够改变任何环境变量。外边程序执行目录safe_mode_exec_dir = "/usr/local/bin"当安全模式被激活,safe_mode_exec_dir参数限制经过exec()函数执行的可执行文件到指定的目录。举例来讲,倘若你想限制在/usr/local/bin目录执行功能,你能够运用这个指令:
safe_mode_exec_dir = "/usr/local/bin"禁用函数 disable_functions为了更安全的运行PHP,能够用此指令来禁止有些敏锐函数的运用,当你想用本指令禁止有些危险函数时,切记把dl()函数亦加到禁
|