Xss文件包含漏洞

程序开发人员通常会把可重复使用的函数写到单个文件中,在使用某些函数时,直接调用此文件,而无须再次编写,这种调用文件的过程一般被称为文件包含。在包含文件的过程中,如果文件能进行控制,则存储文件包含漏洞可以使用文件包含,直接调用,类似于函数调用,。定义好就可以直接调用。

常用函数:include,include-once,require,require-once等

include()函数并不在意被包含的文件是什么类型,只要有 php 代码,都会被解析出来,还可以包含根目录之外的文件

equire():找不到被包含的文件会产生致命错误,并停止脚本运行include():找不到被包含的文件只会产生警告,脚本继续执行

require_once()与 require()类似:唯一的区别是如果该文件的代码已经被包含,则不会再次包含include_once()与 include()类似:唯一的区别是如果该文件的代码已经被包含,则不会再次包含利用条件。含有文件包含的函数。包含的文件可控。

二,漏洞分类。本地包含:仅包含自己服务器上的文件。远程包含:包含在别人电脑上(=取决于代码和开关,可使用输入内容过滤进行防护,可在服务器端关闭)。漏洞危害。

1、本地包含:有文件上传功能,且存在文件上传漏洞,那么我们就可以上传恶意文件再使用本地包含构成危害。没有文件上传功能:伪协议利用日志文件利用

2、远程包含:Anything·

伪协议

1 ,file 协议用于访问本地文件系统,并且不受 allow_url_fopen,allow_url_include 的影响file 协议可以访问文件的绝对路径,相对路径,查看别人电脑上有什么资料,可以通过敏感路径进行查看(没用远程包含的最低级漏洞)。

2, php 伪协 议php://filter 可以获取指定文件源码。当它与包含函数结合时,php://filter 流会被当作 php 文件执行。所以我们一般对其进行编码,让其不执行,从而导致 任意文件读取。在 allow_url_fopen,allow_url_include 都关闭的情况下可以正常使用。php://filter/convert.base64-encode/resource=flag.php //读取当前目录下的 flag.php 文件和 file 协议相比,这个只需要相对路径即可,而 file 协议需要绝对路径php://inputphp://input 可以访问请求的原始数据的只读流,将 post 请求的数据当作 php 代码执行。当传入的参数作为文件名打开时,可以将参数设为 php://input,同时 post 想设置的文件内容,php 执行时会将post 内容当作文件内容,从而导致任意代码执行。若无传参地点,可以使用抓包改包发送恶意代码,想执行什么内容就在 post 处传参什么内容,也可以写入一个后门用 webshell 连接。唯一的缺点就是这个协议需要打开 allow_url_include,所以说其实有点0鸡肋。

3, data 协议data 协议类似于 php://input 协议,用于控制输出流,当与包含函数结合时,data://流回被当作php 文件执行。从而导致任意代码的执行。当 php 被过滤时,就可以适当选择 data 协议需满足 allow_url_fopen,allow_url_include 同时开启才能使用。

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值