PHP代码审计(初探)——代码审计漏洞挖掘的思路

一、动态函数执行与匿名函数执行概念

1、动态函数执行

函数与函数之间的调用,可能会造成的漏洞

2、匿名函数执行

匿名函数也叫闭包函数(closures),允许临时创建一个没有指定名称的函数。最经常用作回调函数参数的值。闭包函数也可以作为变量的值来使用。PHP会自动把这种表达式转换为内置类Closure的对象实例。把一个closure对象赋值给一个变量的方式与普通变量赋值的语法是一样的,最后要加上分号。闭包可以从父作用域中继承变量。任何此类变量都应该用use语言结构传递进去。使用create_function创建匿名函数。

二、

1、漏洞形成的条件

一是程序中存在可以控制的变量(一切输入都是有害的);二是变量到达有利用价值的函数,即危险的函数

2、危险函数类型:

①文件包含:包含漏洞
②文件执行:执行任意代码漏洞
③命令执行:执行任意命令漏洞
④文件系统操作:文件(目录)读写删等漏洞
⑤数据库操作:SQL注入漏洞
⑥数据显示:xss等客户端漏洞

3、代码审计的本质

找漏洞即找对应的变量和函数;代码跟踪的过程有两种方式,一是通过变量找函数(正向跟踪);二是通过函数找变量(逆向跟踪)

4、代码审计思路:

①逆向追踪:通过检查敏感函数的参数,然后回溯变量,判断变量是否可控并且没有经过严格的过滤
②正向追踪:先找出哪些文件在接收外部传入的参数,然后追踪变量的传递过程,观察是否有变量传入高危函数里面,或者传递的过程中是否有代码逻辑漏洞
③直接发掘功能点漏洞,根据自身经验判断该类应用通常在哪些功能会出现漏洞。
④使用工具进行变量跟踪Seay源代码审计系统

又是一篇好久之前不敢发出来的黑历史、渣滓文啦!希望自己慢慢能把博客写好,而不是每次写完都扔草稿箱

你可能感兴趣的:(安全)