- 1、本文档共19页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)