第一部分 审计流程
- 1.用户请求的处理流程
获取请求
全局过滤
模块文件
C函数内容
M函数内容
V显示
- 2.通读原文
函数集文件
配置文件
安全过滤文件
Index文件
- 3.网站目录结构
主目录
模块目录
插件目录
上传目录
模块目录
数据目录
配置目录
配置文件
公共函数文件
安全过滤文件
数据库结构
入口文件
-
4.敏感关键字回溯参数
-
- 优点:
-
- 高效的挖掘漏洞
- 判断敏感触发点的位置以及上下文,追溯参数源头
缺点:
- 覆盖不到逻辑漏洞的挖掘
- 不能了解程序的基本框架
功能点定向审计
-
- 程序安装
- 文件上传
- 文件管理
- 登录验证
- 备份恢复
- 找回密码
-
-
例子
Dami cms
账户功能
-
- 登录
- 会员资料
- 找回密码
- 注册
- 修改密码
- 我的投稿
- 我的订单
-
第二部分 PHP核心配置
-
-
1.大小写敏感
- directive = value(指令=值)
- foo = bar ≠ FOO = bar
-
1.大小写敏感
-
-
2.运算符
- | 、&、~、!
-
空值的表达方式
- foo = ;
- foo = none;
- foo = “none”;
-
2.运算符
-
-
-
3.安全模式
- safe_mode=off (PHP 5.4移除 )限制文档存取、环境变量的读取以及空值外部程序的运行
-
限制环节变量的读取
- safe_mode_allowed_env_vas = string
-
- 指定PGP程序可以改变的环境变量的前缀,当值为空的时候,可以改变任何的环境变量
-
外部程序执行目录
- safe_mode_exec_dir = “”
-
-
禁用危险函数
- disable_functions
-
com 组件
- com.allow_dcom=false
-
- PHP设置在安全模式下(safe_mode),允许攻击者使用com()函数穿件系统组件来执行任意命令
- 使用com函数需要在php.ini中配置extension=php_com_dotnet.dll,如果PHP VERSION<5.4.5,则不需要
-
全局变量注册开关
- register_globals = off
-
- php.ini的register_globals选项的默认值设为off,在4.2版本之前是默认开启的,当register_globals为on时,程序接受来自服务器的环境变量,包括表单提取的变量
- register_globals = Off,服务器获取数据时候采用**$_GET['name']** 来获取数据
- register_globals = On ,服务器采用POST或者GET来提交变量,都会使用全局变量来接受取值
-
-
魔术引号自动过滤
- magic_quotes_gpc=On PHP4.5移除
- magic_quotes_gpc=Off 在php.ini中默认关闭,会对sql语句中的单引号、双引号、反斜杠和空字符加上反斜杠转义,它会影响HTTP请求的数据(GET POST Cookies),同时可以在php代码中使用addslashes来转义,通过stripslashes来删除转义
-
-
远程文件
-
是否允许包含远程文件
-
allow_url_include = off
- 设置为On的情况下,可以直接包含远程文件,若包含的变量为可控的情况下,可以直接控制变量来执行PHP代码
-
allow_url_include = off
-
是否允许包含远程文件
-
是否允许打开远程文件
-
-
-
-
allow_url_open = on
-
- 允许本地PHP文件通过URL重写的方式来打开和关闭权限,默认的封装协议提供ftp和http协议访问文件
-
-
allow_url_open = on
-
-
目录权限
-
HTTP头部版本信息
- expose_php = off
-
- 防止了通过http头部泄露的php版本信息
-
文件上传临时目录
- upload_tmp_dir=
-
- 上传文件临时保存目录,如果不设置,采用系统的临时目录
-
用户可以访问目录
- open_basedir = E:\Local Test\WWW
-
能够控制PHP脚本只能访问指定的目录。
-
HTTP头部版本信息
-
-
错误信息
-
内部错误选项
- display_errors = on
-
- 表明显示php脚本的内部错误,错误回显
-
错误报告级别
- error_reporting = E_ALL & ~E_NOTICE
-
- 将错误级别调到最高,显示所有的问题,方便排错
-
内部错误选项
-
第三部分 代码调试及Xdebug的配置使用
-
echo
- 最简单的输出数据调试方法,一般用来输出变量值或者不确定执行到哪个分支
-
print_r var_dump debug_zval_dump
-
- 这个主要输出变量的数据值,但是debug_zval_dump输出结果会有refcount,记录一个变量被引用的次数
-
-
debug_print_backtrace
-
- 可以查看输出的调用栈的信息
-
-
exit()
-
- 停止程序,无法执行后面代码
-
扫码二维码 获取免费视频学习资料
- 本文固定链接: http://phpxs.com/post/7176/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料
查 看2022高级编程视频教程免费获取