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

本文介绍了PHP中动态函数执行与匿名函数的概念及其可能带来的安全风险。探讨了代码审计的基本思路,包括逆向追踪和正向追踪的方法,并列举了几种常见的危险函数类型,如文件包含、命令执行等。

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

1、动态函数执行

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

2、匿名函数执行

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

二、

1、漏洞形成的条件

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

2、危险函数类型:

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

3、代码审计的本质

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

4、代码审计思路:

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值