php代码审计之magic_quotes_gpc特性

admin 2022年9月9日11:12:58评论35 views字数 979阅读3分15秒阅读模式
php代码审计之magic_quotes_gpc特性
前言

所谓代码审计是一种以发现程序错误,安全漏洞和违反程序规范为目标的源代码分析。在安全领域,为了发现安全问题,常通过黑盒测试、白盒测试方法来尽可能的发现业务程序中的安全问题,代码审计就是白盒测试的常用方法,相较于黑盒测试,由于白盒测试能接触到源代码,可以更加详细的理解业务程序逻辑,也能更全面的发现安全风险。接下来本系列文章将以php代码审计为切入点,过程中结合常见源代码扫描工具和动态调试方法,来讲解php代码审计的常见漏洞点和分析方法。本章节将介绍magic_quotes_gpc配置参数的特性,便于研究后续相关漏洞的审计。

php代码审计之magic_quotes_gpc特性
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代码审计之magic_quotes_gpc特性

Php中可以通过get_magic_quotes_gpc()判断php是否开启该配置

http://127.0.0.1:8080/test/gpc.php?cmd=123%27

php代码审计之magic_quotes_gpc特性

php代码审计之magic_quotes_gpc特性

修改php.ini配置为magic_quotes_gpc = Off

php代码审计之magic_quotes_gpc特性

此时输入单引号等特殊字符,就不进行任何过滤

php代码审计之magic_quotes_gpc特性

php代码审计之magic_quotes_gpc特性

这里我们要注意,magic_quotes_gpc只针对$_GET; $_POST; $_Cookie,而没有过滤$_SERVER。这里我们首先开启magic_quotes_gpc=On

php代码审计之magic_quotes_gpc特性

此时magic_quotes_gpc已开启,通过hackbar插件进行自定义user-agent字段

php代码审计之magic_quotes_gpc特性

接下来输入各类特殊字符

php代码审计之magic_quotes_gpc特性

php代码审计之magic_quotes_gpc特性

可以看到,此时即使开启了magic_quotes_gpc,也不对$_SERVER数据进行过滤。

php代码审计之magic_quotes_gpc特性

php代码审计之magic_quotes_gpc特性

原文始发于微信公众号(第59号):php代码审计之magic_quotes_gpc特性

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年9月9日11:12:58
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   php代码审计之magic_quotes_gpc特性http://cn-sec.com/archives/1287830.html

发表评论

匿名网友 填写信息