审计方法和步骤

  • 网站结构
    浏览源码文件夹,了解程序目录

  • 入口文件
    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文件

posted @ 2021-03-26 12:46  WANGXIN_YU  阅读(389)  评论(0)    收藏  举报