《高级php应用程序漏洞审核技术》由会员分享,可在线阅读,更多相关《高级php应用程序漏洞审核技术(5页珍藏版)》请在金锄头文库上搜索。
1、高级高级 PHPPHP 应用程序漏洞审核技术应用程序漏洞审核技术=Ph4nt0m Security Team=Issue 0x03, Phile #0x06 of 0x07|=-=|=-= 高级 PHP 应用程序漏洞审核技术 =-=|=-=|=-=|=-= By =-=|=-= =-=|=-=|目录1. 前言2. 传统的代码审计技术3. PHP 版本与应用代码审计4. 其他的因素与应用代码审计5. 扩展我们的字典5.1 变量本身的 key5.2 变量覆盖5.2.1 遍历初始化变量5.2.2 parse_str()变量覆盖漏洞5.2.3 import_request_variables()变量
2、覆盖漏洞5.2.4 PHP5 Globals 5.3 magic_quotes_gpc 与代码安全5.3.1 什么是 magic_quotes_gpc5.3.2 哪些地方没有魔术引号的保护5.3.3 变量的编码与解码5.3.4 二次攻击5.3.5 魔术引号带来的新的安全问题5.3.6 变量 key 与魔术引号5.4 代码注射5.4.1 PHP 中可能导致代码注射的函数5.4.2 变量函数与双引号5.5 PHP 自身函数漏洞及缺陷5.5.1 PHP 函数的溢出漏洞5.5.2 PHP 函数的其他漏洞5.5.3 session_destroy()删除文件漏洞5.5.4 随机函数5.6 特殊字符5.6
3、.1 截断5.6.1.1 include 截断5.6.1.2 数据截断5.6.1.3 文件操作里的特殊字符6. 怎么进一步寻找新的字典7. DEMO8. 后话9. 附录一、前言PHP 是一种被广泛使用的脚本语言,尤其适合于 web 开发。具有跨平台,容易学习,功能强大等特点,据统计全世界有超过 34%的网站有 php 的应用,包括Yahoo、sina、163、sohu 等大型门户网站。而且很多具名的 web 应用系统(包括bbs,blog,wiki,cms 等等)都是使用 php 开发的,Discuz、phpwind、phpbb、vbb、wordpress、boblog 等等。随着web 安全
4、的热点升级,php 应用程序的代码安全问题也逐步兴盛起来,越来越多的安全人员投入到这个领域,越来越多的应用程序代码漏洞被披露。针对这样一个状况,很多应用程序的官方都成立了安全部门,或者雇佣安全人员进行代码审计,因此出现了很多自动化商业化的代码审计工具。也就是这样的形势导致了一个局面:大公司的产品安全系数大大的提高,那些很明显的漏洞基本灭绝了,那些大家都知道的审计技术都无用武之地了。我们面对很多工具以及大牛扫描过 n 遍的代码,有很多的安全人员有点悲观,而有的官方安全人员也非常的放心自己的代码,但是不要忘记了“没有绝对的安全” ,我们应该去寻找新的途径挖掘新的漏洞。本文就给介绍了一些非传统的技术
5、经验和大家分享。另外在这里特别说明一下本文里面很多漏洞都是来源于网络上牛人和朋友们的分享,在这里需要感谢他们,:)二、传统的代码审计技术WEB 应用程序漏洞查找基本上是围绕两个元素展开:变量与函数。也就是说一漏洞的利用必须把你提交的恶意代码通过变量经过 n 次变量转换传递,最终传递给目标函数执行,还记得MS 那句经典的名言吗?“一切输入都是有害的” 。这句话只强调了变量输入,很多程序员把“输入”理解为只是 gpc$_GET,$_POST,$_COOKIE,但是变量在传递过程产生了 n 多的变化。导致很多过滤只是个“纸老虎”!我们换句话来描叙下代码安全:“一切进入函数的变量是有害的” 。PHP
6、代码审计技术用的最多也是目前的主力方法:静态分析,主要也是通过查找容易导致安全漏洞的危险函数,常用的如 grep,findstr 等搜索工具,很多自动化工具也是使用正则来搜索这些函数。下面列举一些常用的函数,也就是下文说的字典(暂略) 。但是目前基本已有的字典很难找到漏洞,所以我们需要扩展我们的字典,这些字典也是本文主要探讨的。其他的方法有:通过修改 PHP 源代码来分析变量流程,或者hook 危险的函数来实现对应用程序代码的审核,但是这些也依靠了我们上面提到的字典。三、PHP 版本与应用代码审计到目前为止,PHP 主要有 3 个版本:php4、php5、php6,使用比例大致如下:php4
7、68% 2000-2007,No security fixes after 2008/08,最终版本是php4.4.9php5 32% 2004-present,Now at version 5.2.6(PHP 5.3 alpha1 released!)php6 目前还在测试阶段,变化很多做了大量的修改,取消了很多安全选项如 magic_quotes_gpc。(这个不是今天讨论的范围)由于 php 缺少自动升级的机制,导致目前 PHP 版本并存,也导致很多存在漏洞没有被修补。这些有漏洞的函数也是我们进行 WEB 应用程序代码审计的重点对象,也是我们字典重要来源。四、其他的因素与应用代码审计很多代码审计者拿到代码就看,他们忽视了“安全是一个整体” ,代码安全很多的其他因素有关系,比如上面我们谈到的 PHP 版本的问题,比较重要的还有操作系统类型(主要是两大阵营win/*nix) ,WEB 服务端软件(主要是 iis/apache 两大类型)等因素。这是由于不同的系统不同的 WEB SERVER 有着不同的安全特点或特性,下文有些