审计方法和步骤
-
网站结构
浏览源码文件夹,了解程序目录 -
入口文件
index.php、admin.php文件一般是整个程序的入口,详细阅读index文件,了解程序架构、运行流程、包含哪些文件配置文件、包含哪些过滤文件以及哪些安全过滤文件,了解程序的业务逻辑 -
配置文件
一般类似config.php等文件,保存一些数据库的相关信息、程序的一些信息、先看数据库编码、gbk看你存在宽字节注入。如果变量的值用双引号、则看你存在双引号解析代码执行的问题 -
过滤功能
通过阅读公共函数文件和安全过滤文件,清晰掌握用户输入的数据,哪些被过滤,哪些无过滤,在哪里被过滤,如何过滤,能否绕过过滤的数据,过滤的方式是替换还是正则,有没有GPC、有没有使用addslasher()处理
审计方法
通读全文、敏感函数参数回溯法(shell_exec)、定向功能分析法
定向功能分析法常见功能漏洞:(包括但不限于)
程序初始安装
站点信息泄露
文件上传、管理
登录认证、权限管理
数据库备份恢复
找回密码
验证码
把握大局、功能定向、敏感函数,参数回溯
常见重要配置-变量相关
-
启用全局变量
register_globals=off
作用:关闭自动注册的全局变量
设置为on时,php会将$_POST,$_GET,$_COOKIE,$_ENV,$_SESSION数组中的$key=>$value -
短标签
short_open_tag=On -
安全模式
safe_mode=off -
安全模式下执行程序主目录
safe_mode_exec_dir=/var/www/html -
禁用类/函数
disable_classes,disable_functions=,disable_funtions=opendir,readdir,scandir,fopen,unlink -
设置上传及最大上传文件大小
file_uploads=on
opload_max_filesize=8M -
文件上传临时目录
upload_tmp_dir= -
用户访问目录限制
open_basedir=.:/tmp/
作用只能访问指定的目录 -
错误信息控制
display_error=On -
设置错误报告级别
error_reporting=E_ALL -
错误日志
error_log=
错误日志的位置,必须对web用户可写入,入宫不定义则默认写入web服务器的错误日志中去
log_errors=on
建议将错误日志输出到文件,而不是直接输出到前端
log_errors_max_length=1024
错误日志关联信息的最大长度,设0表示无限长度
魔术引号
magic_quotes_gpc=On
magic_quotes_runtime=Off
为GPC(Get/Post/Cookie)操作设置magic_quotes状态。当magic_quotes为on,所有的'(单引号)、“(双引号)、\(反斜杠)和NULL被一个反斜杠自动转义
是否允许打开远程文件
allow_url_fopen=on
是否允许包含远程文件
allow_url_include=off
危险函数
php代码执行函数

include $file
在变量$file可控的情况下,我们就可以包含任意文件,从而达到getshell的目的
- 支持的协议和封装协议
include($_GET['file']); - 过滤器
?file=php://filter/convert.base664-encode/resource=index.php
命令执行函数

文件操作函数

eg:file_put_contents('fcp.test',file_get_contents("http://www.baidu.com")); //把百度的信息输入到fcp.test文件中
unlink('fcp.test'); //删除fcp.test文件
特殊函数




var_dump(getenv('test')); //获取test环境变量,有就返回true,没有就返回false
echo "
";
print_r(glob("t*.php")); //输出当前目录t开头的php文件

浙公网安备 33010602011771号