PHP代码审计(五)PHP代码审计方法与步骤

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第12天,点击查看活动详情

好的代码审计方法与步骤会让你的审计事半功倍。

一:前期准备

(1):获取到网站源码(这就是废话……)

(2):将网站部署到你自己的环境中,能运行。

这里特殊说明一下我的习惯,我本地的环境与线上的环境基本上保持一致,这样在本地审计及线上部署的时候能发现更多的问题。不建议说是随便搭个环境能跑起来就行,这样不是很严谨。

(3):拿到源码之后,浏览大概的项目结构。

二:掌握大局:

(1):入口文件

index.php、admin.php文件一般是整个程序的入口,详细读一下index文件可以知道程序的架构、运行流程、包含那些配置文件,包含哪些过滤文件以及包含那些安全过滤文件,了解程序的业务逻辑

(2):配置文件

一般类似config.php、database.php等文件,保存一些数据库相关信息、程序的一些信息。先看看数据库编码,如果是gbk则可能存在宽字节注入。如果变量的值用双引号或者是反引号、则可能存在双引号解析代码执行的问题。

(3):过滤功能

通过详读 公共函数文件 和 安全过滤文件 等文件,清晰掌握用户输入的数据,哪些被过滤,哪些无过滤,在哪里被过滤了,如何过滤的,能否绕过过滤的数据。过滤的方式是替换还是正则?有没有GPC?有没有使用addslasher()处理?

三:审计方法:

1.通读全文法

通读全文发作为一种最麻烦的方法也是最全面的审计方法。特别是针对大型程序,源码成千上万行,这要读到什么时候。但是该方法也是一种必要的方法。了解整个应用的业务逻辑,才能挖掘到更多更有价值的漏洞。

2.敏感函数参数回溯法

根据敏感函数,逆向追踪参数传递的过程。

这个方法是最高效,最常用的方法。大多数漏洞的产生是因为函数的使用不当导致的。我们只要找到这样的一些使用不当的函数,就可以快速挖掘想要的漏洞。

这方面,Seay法师大大有一款神器Seay源代码审计系统,主要是利用正则匹配一些高危函数、关键函数以及敏感关键字。 然后,我们就可以分析判断敏感函数的上下文,追踪参数源头。

PHP代码审计还有另一个工具,也是一个神器Rips

最主要的是Seay只能在windows上使用,而Rips是跨平台的,通俗点说,他是使用PHP编写的的一个站点,直接部署到服务器上就可以了。

3.定向功能分析法

该方法主要是根据程序的业务逻辑来说审计的。

首先是用浏览器逐个访问浏览,看看这套程序有那些功能。根据相关功能,大概推测可能存在那些漏洞。

常见功能漏洞:(包括但不限于)

(1):程序初始安装

(2):站点信息泄漏

(3):文件上传

(4):文件管理

(5):登陆认证

(6):数据库备份恢复

(7):找回密码

(8):验证码

  最后,放一下上边提到的神器Seay源代码审计系统的软件链接:永久有效

链接:pan.baidu.com/s/1HHnniTNW…

提取码:75ji

以上就是代码审计的大概流程及方法。主要还是这个神器。

有好的建议,请在下方输入你的评论。

欢迎访问个人博客 guanchao.site

欢迎访问我的小程序:打开微信->发现->小程序->搜索“时间里的”

猜你喜欢

转载自juejin.im/post/7129044308283359263