所谓代码审计是一种以发现程序错误,安全漏洞和违反程序规范为目标的源代码分析。在安全领域,为了发现安全问题,常通过黑盒测试、白盒测试方法来尽可能的发现业务程序中的安全问题,代码审计就是白盒测试的常用方法,相较于黑盒测试,由于白盒测试能接触到源代码,可以更加详细的理解业务程序逻辑,也能更全面的发现安全风险。接下来本系列文章将以php代码审计为切入点,过程中结合常见源代码扫描工具和动态调试方法,来讲解php代码审计的常见漏洞点和分析方法。本章节将介绍magic_quotes_gpc配置参数的特性,便于研究后续相关漏洞的审计。
该参数在php.ini进行配置。PHP5.3后就已经弃用,且在PHP5.4之后删除。默认值是开的。
该配置的作用是对来自$_GET、$_POST、$_COOKIE的数据进行转义,但不过滤HTTP请求的其他字段,如X-forwarded-for。这个配置的作用和addslashes()函数是相同的。一般来说在开启该配置后,就不再使用addslashes函数,但如果不开启该配置,就必须使用addslashes函数,如果同时使用addslashes函数和开启配置,相当于进行双重转义,因此最后处理完需要进行stripslashes()进行格式化输出。
这里以php5.2.17进行演示,默认配置为magic_quotes_gpc = On
Php中可以通过get_magic_quotes_gpc()判断php是否开启该配置
http://127.0.0.1:8080/test/gpc.php?cmd=123%27
修改php.ini配置为magic_quotes_gpc = Off
此时输入单引号等特殊字符,就不进行任何过滤
这里我们要注意,magic_quotes_gpc只针对$_GET; $_POST; $_Cookie,而没有过滤$_SERVER。这里我们首先开启magic_quotes_gpc=On
此时magic_quotes_gpc已开启,通过hackbar插件进行自定义user-agent字段
接下来输入各类特殊字符
可以看到,此时即使开启了magic_quotes_gpc,也不对$_SERVER数据进行过滤。
原文始发于微信公众号(第59号):php代码审计之magic_quotes_gpc特性
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论