《PHP代码审计之远程文件包含》.pdf

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《PHP代码审计之远程文件包含》.pdf

一、前言 大家好,我是MXi4oyu。最近在看PHP的代码审计。翻阅了各位 大牛的文章,收获颇丰。 激发了我的写作灵感,于是乎打算写一个系列的文章。权当是学习的 笔记或者随想。PHP本身就是一个不安全的语言,而对PHP做代码审 计,挖掘PHP的漏洞就显得颇有意思。 有位叫做普瑞斯特的大牛针对PHP的web应用列出了下面几种 攻击方式: 1.命令注入(CommandInjection) 2.eval注入(EvalInjection) 3.客户端脚本攻击(ScriptInsertion) 4.跨网站脚本攻击(CrossSiteScripting,XSS) 5.SQL注入攻击(SQLinjection) 6.跨网站请求伪造攻击(CrossSiteRequestForgeries,CSRF) 7.Session 会话劫持(SessionHijacking) 8.Session 固定攻击(SessionFixation) 9.HTTP响应拆分攻击(HTTPResponseSplitting) 10.文件上传漏洞(FileUploadAttack) 11.目录穿越漏洞(DirectoryTraversal) 12.远程文件包含攻击(RemoteInclusion) 13.动态函数注入攻击(DynamicVariableEvaluation) 14.URL攻击(URLattack) 15.表单提交欺骗攻击(SpoofedFormSubmissions) 16.HTTP请求欺骗攻击(SpoofedHTTPRequests) 对于如此之多的PHP漏洞,我打算各个击破。今天是开篇第一讲, 叫做《PHP代码审计之远程文件包含》。 二、原理 远程文件包含涉及到的 PHP 函数有:include()、require()、 include_once()、require_once() 这4个函数的区别如下: Include:包含并运行指定文件,当包含外部文件发生错误时,系 统给出警告,但PHP脚本继续运行。 Require:包含并运行指定文件,当包含外部文件发生错误时,会 报出一个fatale o ,则PHP脚本停止运行。 Include_once:在脚本执行期间包含并运行指定文件。此行为和 include 语句类似,唯一区别是如果该文件中已经被包含过,则不会 再次包含。如同此语句名字暗示的那样,只会包含一次。 Require_once:在脚本执行期间包含并运行指定文件。此行为和 require() 语句类似,唯一区别是如果该文件中的代码已经被包含了, 则不会再次包含。 为什么需要文件包含呢?因为程序员写程序的时候不喜欢做同 样的事情,同样的代码也不喜欢写好几次。于是就把需要公用的代码 写到一个文件里面。最典型的如数据库的配置信息写入到config.php 文件中,然后在其它文件中包含调用。而上面4个函数就是被设计出 来达到这个目的的。这本身并没有什么问题,但是如果去包含任意文 件时,对这个文件来源过滤不严,就可以包含一个恶意的文件。从而 造成文件包含漏洞。 有的时候可能不确定要包含哪个文件,例如: ?php if($_GET[page]) { include$_GET[page]; } else { includehome.php; } ? 使用格式如下: http://localhost/test/index.php?page=left.php http://localhost/test/index.php?page=main.php 这段代码是通过$_GET[“page”]这个变量来指定要包含的文件。若 $_GET[“page”]为空则包含home.php。而$_GET[“page”]未做任何过滤, 直接包含GET过来的信息。 三、利用方法 1,读取本地文件 若我们提交下面的连接,包含一个本地不存在的文件。Helen.php http://localhost/test/index.php?page=helen.php 则系统给出警告。并且爆出绝对路径:D:\WWW\test\index.php 我们多长尝试包含其他文件,也可以利用../..

文档评论(0)

ghfa + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档