首页 > 技术文章 > 代码审计基础准备

mypf 2021-07-19 21:28 原文

基础准备
1.在官网下载php程序源码 最新的源码包
2.本地搭建网站,一边审计一边调试。实时跟踪各种动态变化

把握大局
浏览源码文件夹,了解该程序的大致目录
入口文件
index.php admin.php文件一般是整个程序的入口。详细都一下index文件可以知道程序的框架,运行流程,包含哪些配置文件,包含哪些过滤文件以及包含哪些安全过滤文件,了解程序的业务逻辑。
配置文件
一般类似config.php等等文件。保持一些数据库相关信息,程序的一些信息。先看看数据库编码,如果是gbk则存在宽字节注入,如果变量的值用双引号,则可能存在双引号解析代码执行的问题。
过滤功能
通过详读公共函数和安全过滤文件等文件。清晰掌握用户输入的数据,哪些被过滤,哪些无过滤,在哪里被过滤,如何过滤,能否绕过过滤的数据。过滤的方式是替换还是正则?有没有GPC?有没有使用addslasher()处理?

重要的文件夹
admin—后台重要的管理目录(主要是管理员功能)
install——网站的安装功能(install.sql一般是数据库的结构信息)
sys——(config.php--配置信息,lib.php——公共函数库)
user——用户的一些操作

index.php 网站的入口

审计的方法
1.通读全文法
全面,耗时长,把握大局也是通读全文里面的。

2.敏感函数参数回溯法(shell_exec)
根据敏感函数,逆向跟踪。
分析上下文,追踪参数源头。
找到使用不但的函数,就可以快速挖掘漏洞

3.定向功能分析法(安装问题)
该方法是根据程序的业务逻辑漏洞来审计的。

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

常见功能漏洞:(包括但是不限于)
程序初始安装
站点信息泄露
文件上传,管理
登陆认证,权限管理
数据库备份恢复
找回密码
验证码

审计方法——个人审计方法总结
首先,把握大局,不管什么程序都要把握大局。
其次,根据定向功能法针对每一项功能进行审计。
最后,就是敏感函数参数回溯。

推荐阅读