博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
文件包含漏洞
阅读量:2061 次
发布时间:2019-04-29

本文共 1338 字,大约阅读时间需要 4 分钟。

文件包含漏洞概述

在web后台开发中,程序员往往为了提高效率以及让代码看起来更加简洁,会使用"包含"函数功能,比如把一系列功能函数都写进 fuction.php中,之后当某个文件需要调用的时候就直接在文件头中写上句<? php include fuction. php?>就可以调用函数代码.

但有些时候,因为网站功能需求,会让前端用户选择需要包含的文件(或者在前端的功能中使用了“包含”功能),又由于开发人员没有对要包含的这个文件进行安全考虑,就导致攻击着可以通过修改包含文件的位置来让后台执行任意文件(代码)。
这种情况我们称为"文件包含漏洞".

文件包含漏洞有“本地文件包含漏洞”和“远程文件包含漏洞”两种情况。

文件包含漏洞原理示意

包含函数

通过 include()或 require()语句,可以将PHP文件的内容插入另一个PHP文件(在服务器执行它之前)。

include和 require语句是相同的,除了错误处理方面

  • require会生成致命错误( E COMPILE ERROR)并停止脚本
  • include只生成警告( E WARNING),并且脚本会继续
    比如,有一个test.php

另一个php文件包含了test.php

index.php

      

欢迎访问我的首页!

本地文件包含漏洞测试

后台代码

后端对前端提交的filename参数没有处理,直接拼接成路径,交给include函数。会导致服务器上的敏感文件暴露。如将filename参数改为../../../../../../../etc/passwd,会暴露系统的口令文件

远程文件包含漏洞测试

远程文件包含漏洞形式跟本地文件包含漏洞差不多,在远程包含漏洞中,攻击着可以通过访问外部地址来加载远程的代码。

远程包含漏洞前提:如果使用的 incldue和 require,则需要 php. ini配置如下(php5.4.34)

allow_url_fopen=on //默认打开Allow_url_include=on //默认关闭

通过远程文件包含漏洞可以包含攻击者恶意网站的php文件,比如如下面这样恶意php文件,实现在本地生成一个一句话木马。然后可以通过菜刀连接就可以访问服务器了。

test.txt

'; fwrite($file,$txt); fclose($file)?>

文件包含漏洞之文件上传漏洞的利用

一般的本地文件包含漏洞没有什么用,如果能和文件上传漏洞结合使用,就可以拿到网站服务器的shell.

思路:
1,制作一个图片木马,通过文件上传漏洞上传;
2,通过文件包含漏洞对该图片木马进行“包含”
3,获取执行结果

文件包含漏洞常见防范措施

0.在功能设计上尽量不要将文件包含函数对应的文件放给前端进行选择和操作。

1过滤各种../../,http://,https://
2.配置 php. ini配置文件

allow_url_fopen = off

Allow_url_include = off
magic_quotes_gpc=on //gpclE

3.通过白名单策略,仅允许包含运行指定的文件,其他的都禁止;

转载地址:http://meqlf.baihongyu.com/

你可能感兴趣的文章
c++仿函数
查看>>
C++ STL bind1st和bind2nd
查看>>
windows下Python安装requests
查看>>
目的:解决Ubuntu 使用gedit出现No protocol specified (gedit:14333):
查看>>
解决Ceph集群Mon和OSD网络变更或者ip(主要是mon)变换后,集群不能正常工作问题
查看>>
Python 格式化打印json数据(展开状态)
查看>>
解决windows下libcurl中curl_formadd()的CURLFORM_FILENAME使用中文导致post失败的问题
查看>>
Centos7 安装curl(openssl)和libxml2
查看>>
Centos7 离线安装RabbitMQ,并配置集群
查看>>
Centos7 or Other Linux RPM包查询下载
查看>>
运行springboot项目出现:Type javax.xml.bind.JAXBContext not present
查看>>
Java中多线程向mysql插入同一条数据冲突问题
查看>>
Idea Maven项目使用jar包,添加到本地库使用
查看>>
FastDFS集群架构配置搭建(转载)
查看>>
HTM+CSS实现立方体图片旋转展示效果
查看>>
FFmpeg 命令操作音视频
查看>>
问题:Opencv(3.1.0/3.4)找不到 /opencv2/gpu/gpu.hpp 问题
查看>>
目的:使用CUDA环境变量CUDA_VISIBLE_DEVICES来限定CUDA程序所能使用的GPU设备
查看>>
问题:Mysql中字段类型为text的值, java使用selectByExample查询为null
查看>>
程序员--学习之路--技巧
查看>>