任意文件读取与下载

任意文件读取与下载



前言

本次将学习任意文件读取漏洞和任意文件下载漏洞,这两个漏洞大体相同。


一、漏洞描述

任意文件读取漏洞(Arbitrary File Read Vulnerability)是指攻击者可以通过web应用程序读取任意文件而不受访问控制限制的漏洞。这种漏洞可能导致敏感信息泄露、系统崩溃等问题。

二、漏洞原理

一些网站的需求,可能会提供文件查看与下载的功能。如果对用户查看或下载的文件没有限制或者限制绕过,就可以查看或下载任意文件。这些文件可以是源代码文件,配置文件,敏感文件等等。

  • 任意文件读取会造成敏感信息泄露。
  • 任意文件读取大多数情况是由于其他漏洞引发的,如 RCE、目录遍历、文件包含等。
  • 任意文件读取与任意文件下载本制上没有区别信息都是从客户端流向服务器的。

任意文件读取与下载可能形式不同,但是从本质上讲读取与下载没有区别,从权限角度来读取与下载都需要读权限讲,

三、漏洞场景

不管是任意文件读取还是任意文件下载,触发漏洞的条件都是相同的

  • 存在读取文件的功能(函数),也就是说,Web 应用开放了文件读取功能;
  • 读取文件的路径客户端可控,完全控制或影响文件路径参数;
  • 没有对文件路径进行校验或者校验不严导致校验被绕过;
  • 输出了文件的内容

四、漏洞评级

高危

五、漏洞危害

下载服务器任意文件,包括源代码文件、系统敏感文件、配置文件
可以配合其他漏洞,构成完整攻击链
对源代码文件进行代码审计,查找更多的漏洞
任意文件读取与下载重点关注的文件:

  • 源代码
  • 配置文件
  • 敏感文件
  • 日志文件

六、漏洞验证

任意文件读取

函数

读取文件的函数函数特点
readfile()直接读取文件内容、自带输出功能
file_get_contents()直接读取文件内容、需要输出读取内容
fread()打开文件、计算文件大小、读取文件、输出文件、关闭文件

验证

readfuke()
// readfile.php
<?php
$fp = "./a.php";
readfile($fp);
?>
// a.php
A!

在这里插入图片描述

file_get_contents()
//file_get_contents
<?php
$fp = "./b.php";
echo file_get_contents;
?>
// b.php
B

在这里插入图片描述

fread()
// fread.php
<?php
$fp = "./c.php";
$f = "$fp, 'r'";
$f_size = filesize($fp);
echo fread($f, 1024);
fclose($f);
?>
// c.php
C

任意文件下载

场景

任意文件下载的条件

  • 已知目标文件路径
  • 目标文件路径,客户端可控
  • 没有经过校验或检验不合格

演示

//include.php
<?php
if (@$_GET['download'] == 'ok'){
	$fp = "../csrf/1.jpg";
	header('Content-Type:image/jpg');
	header('Content-Disposition:attachment;fileName='.basename($fp));
	readfile($fp);
}else {
	echo "<a href = '../csrf/1.jpg' target='_blank'>IMG Download</a>";
}
?>

在这里插入图片描述

进入界面在1处输入刚刚定义的方法download=ok

在这里插入图片描述

打开文件夹查看
在这里插入图片描述

七、漏洞利用

通过任意文件读取漏洞读取敏感文件,为下一次攻击做铺垫

八、漏洞防御

  • 让 web 用户只能访问(读取)所需要的文件和路径。
  • 不能有文件包含漏洞、目录遍历漏洞或其他漏洞。
  • 让用户不能访问 web 根目录以外的路径。
  • php.ini 配置文件中,可以通过选项 open_basedir 来限定文件访问的范围
open_basedir = c:\www\

九、典型案例

metinfo_6.0.0_file-read

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值