-
代码审计学习笔记
0x01 PHP核心配置讲解
PHP_INI_*常量的定义
- PHP_INI_USER
该配置可在用户的PHP脚本或window注册表设置
- PHP_INI_PERDIR
该配置可在php.ini .htaccess或httpd.conf中设置
- PHP_INI _SYSTEM
该配置可在php.ini 或httpd.conf中设置
- PHP_INI _ALL
该配置可在任何地方设置
- PHP.INI ONLY
该配置仅可在php.ini中设置
register_globals(全局变量注册开关)
- 设置为on的情况下,会直接把用户GET,POST等方式提交上来的参数设置为全局变量并初始化为参数对应的值,使得提交参数可以直接在脚本中使用
- php版本小于等于4.2.3时设置为on,5.3.0被废弃,php版本5.4.0时移除该项
allow_url_include(是否允许包含远程文件)
- 当存在include(
$var
)且$var
可控时,可直接控制$var
变量来执行php代码。此配置在php5.2.0后默认关闭。与之类似配置有allow_url_fopen,配置是否允许打开远程文件
magic_quotes_gpc(魔术引号自动过滤)
- 配置为on时,会自动在GET,POST,COOKIE变量中的 (单引号)’ 、(双引号)" 、(反斜杠) 、空字符(NULL)的前面加上反斜杠()
但php5中的magic_quotes_gpc不会过滤$_SERVER变量,导致client-ip、referer一类漏洞能够利用(如XFF注入)
- PHP5.3后不推荐使用,PHP5.4后被取消
magic_quotes_runtime(魔术引号自动过滤)
- 与前面一个函数相似,但区别是它只对从数据库或文件中获取的数据进行过滤,同样在PHP5,4后取消
magic_quotes_sybase(魔术引号自动过滤)
- 为on时,会覆盖magic_quotes_gpc的配置,与gpc配置类似,但此配置仅仅转义空字符和把单引号变成双引号,也在5.4版本移除
safe_mode(安全模式)
- 一种安全机制,php5.4后取消
- 为on时
- 所有文件操作函数(如unlink()、file()、include())等都受限制
- 通过函数popen(),system()以及exec()等函数执行命令或程序会提示错误
open_basedir PHP可访问目录
- 用来限制php只能访问哪些目录,若需加载外部脚本,需把脚本路径加到open_basedir指令中,多个目录以分号分割,例如:open_basedir=/www/a/
- 在<=php5.2.3时是PHP_INI _SYSTEM,大于时为PHP_INI _ALL
disable_function(禁用函数)
- 禁用一些敏感函数使用,配置范围是php.ini only
display_errors和error_reporting错误显示
- 第一个表示是否显示php脚本内部错误,为on时,还可配置指令error_reporting,这个选项用来配置错误显示的级别
审计辅助工具
代码编辑器
代码审计工具
审计思路
- 根据敏感关键词回溯参数传递过程
- 查找可控变量,正向追踪变量传递过程
- 寻找敏感功能点,通读功能点代码
- 直接通读全文代码
-
相关阅读:
用学习逃避成长,听新知缓解焦虑
谈谈“人”和“技能”
SpringMVC的工作原理
Spring MVC 处理静态资源文件
nrpe的安装设置
Maatkit工具使用<一>之mysql主从数据校验工具
phpcgi占用cpu100%的一次排障之旅
nginx支持cgi
如何查看服务器RAID卡信息的SHELL脚本和命令介绍
Mysql的一次经典故障
-
原文地址:https://www.cnblogs.com/yida223/p/12229320.html
Copyright © 2020-2023
润新知