本帖最后由 nancheal 于 2015-12-26 01:00 编辑
大家好,累虚脱的nancheal来了……一大堆的考试结束后,今天终于有点时间来写一些承诺过的东西了,恩,这就算一个法师《php代码审计》的笔记吧
QQ图片20151226010007.jpg (896.07 KB, 下载次数: 21)
2015-12-26 01:00 上传php代码审计的话可能会用到的工具有:phpstudy(本人一直使用的是wamp)我 觉得这个工具比wamp强大之处在于最多支持26种不同组合的切换
seay源代码审计系统:听名字就知道了,这个是干什么的……
RIPS:开源源代码自动审计系统
wvs:安全扫描工具(我自己加上的……)
其实这些工具都不是今天的主题啦,今天着重介绍的是php核心配置的详解,乱七八糟的php配置文件多达几百个,就说些关乎安全的吧
1.register_globals(全局变量注册开关):
打开的时候也就是为on的时候,会直接把用户GET,POST等方式提交上来的变量注册为全局的变量,并初始化为参数的值,使得提交的参数直接在脚本中使用
历史:register_globals在小于等于4.2.3是配置范围在php_ini_all,5.3.0被弃用,不推荐使用,在5.4.0中被移除
关于配置范围:
可修改范围是 PHP_INI_PERDIR 的指令可以在php.ini、httpd.conf、.htaccess文件中修改。
可修改范围是 PHP_INI_SYSTEM 的指令可以在php.ini、httpd.conf文件中修
可修改范围是 PHP_INI_ALL 的指令可以用int_set修改。
个人观点:这是一个十分危险的开关,用户如果可以随意的控制变量(或覆盖变量)和谈过滤呢
2.allow_url_include(是否允许包含远程文件):
为on的时候,直接包含远程的文件,当存在include($var),而$var又是可控的时候,可以直接包含远程的文件来执行php的代码
历史:php5.2.0后默认为off(可以看到php在处理这些问题上还是做了些努力的)
与之类似的还有allow_url_fopen(是否打开远程的文件)
3.magic_quotes_gpc(魔法引号自动过滤):为on的时候自动在GET,POST,COOKIE变量中的单引号('),双引号("),反斜杠(\)及空字符(null)的前面加上反斜杠(\),但是在php5中并不过滤$SERVER中的变量,导致很多类似在client-ip,referer能够被利用
历史:php5.3之后不推荐使用,5.4移除,4.2.3配置范围php_ini_all,php大于4.2.3为php
4.magic_quotes_runtime(魔术引号自动过滤):
作用同上,只是作用的对象不同,其对数据库中获得的数据过滤
个人观点:想必大家都听过php下通过pdo(使用占位符和预编译)来安全的连接数据库可以很好的防范注入问题,可是其在处理二次过滤的时候有点力不从心,因为其对数据库来的数据是信任的,这时可以通过打开这个开关来保驾护航
其配置范围在php_ini_all
今天就先说到这里,其实配置还没说完,下篇再谈,有点晚了:)