文件包含漏洞

产生原因:

开发过程中会把经常使用的函数写好封装在一个单独的文件中,在使用时直接调用该文件,在调用文件的过程一般称为包含。

开发时,程序员希望代码更加灵活,通常会将被包含的文件设置为变量。进行动态调用,虽然提高了灵活性,但是安全性则大大降低,这样会导致客户端可以调用一个恶意的文件,造成文件包含漏洞。并且也没没有做证书白名单过滤。

原理:文件包含漏洞其实和sql注入一样,都是通过客户端各种的操作让服务器执行自己的想要执行的代码,反馈出我们想要的信息。

先介绍四种包含函数(将PHP文件的内容插入另一个PHP文件中):

include():只会产生警报,不会停止脚本,脚本继续执行

include_once():遇上类似,多个一个检查是否已包含功能

require():会产生知名错误,直接停止运行

require_once():遇上类似,多个一个检查是否已包含功能

代码分析:

if(isset($_GET['submit']) && $_GET['filename'] !=null){

        $gilename=$_DET['filename'];

        include "include/$filename";

        //此处直接将文件名变量包含进来执行,无安全措施,如白名单

        //我们可以修改$_GET['filename']的值,让服务器访问我们指定的文件,这就是文件包含漏洞

}

接下来,说一下过程(咱们以pikachu为例-本地文件包含漏洞)

1.

本地文件包含漏洞:仅能够对服务器本地的文件进行包含,由于服务器上的文件并不是攻击者所能够控制的,因此该情况下,攻击着更多的会包含一些 固定的系统配置文件,从而读取系统敏感信息。很多时候本地文件包含漏洞会结合一些特殊的文件上传漏洞,从而形成更大的威力。

2.

我们进入了靶场文件包含漏洞练习页面,提交一个请求后可以在游览器地址栏中见

XXXXXXX 这个表示是咱们自己可以通过客户端编写命令向服务器发送并执行,我们通过上面的后端代码可以看出并不会对文件名有限制,而是直接被包含引用

我们在等号后面输入../../../../../../etc/passwd(在是针对Linux系统)

 输出结果

 从而将passwd目录下的内容输出

漏洞利用:

有很多象利用%00截断,路径长度

咱们之说一个

文件上传加文件包含(和前面连起来)

例如在一个页面上可以长传jpg\txt文件,

1.先做一个图片马

见图片以文本形式打开,嵌入咱们自己要执行的代码,将后缀名改为jpg

2.将图片马文件上传

3.在地址栏中,调用咱们的图片马

效果如上

咱们,思考一下,远程文件包含漏洞

远程文件包含漏洞前提:

allow_url_fopen=on

allow_url_include=on

这两个服务打开,说白了就是将上面XXXXXXX这个改为恶意站点的url,更加自由的探索对方的服务器(你离牢饭又近一步,只交流技术)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值