任意文件读取与下载漏洞

这篇具有很好参考价值的文章主要介绍了任意文件读取与下载漏洞。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文件读取漏洞(列目录漏洞)

概念及成因

任意文件读取是属于文件操作漏洞的一种,一般任意文件读取漏洞可以读取配置信息甚至系统重要文件。其中的目录遍历是由于web服务器或者web应用程序对用户输入的文件名称的安全性验证不足而导致的一种安全漏洞,使得攻击者通过利用一些特殊字符就可以绕过服务器的安全限制,访问任意的文件(可以是web根目录以外的文件),甚至执行系统命令。更严重的,导致SSRF漏洞,进而漫游至内网。

探测与危害

可以利用web漏洞扫描器(御剑等)扫描web应用进行检测,也可通过搜索,网站标题包含 “index of” 关键词的网站进行访问,手工探测等。

攻击者通过访问网站某一目录时,该目录没有默认首页文件或没有正确设置默认首页文件,将会把整个目录结构列出来,将网站结构完全暴露给攻击者; 攻击者可能通过浏览目录结构,访问到某些隐秘文件(如PHPINFO文件、服务器探针文件、网站管理员后台访问地址、数据库连接文件等)。简要来说就是老家被偷了。

文件下载漏洞

概念

一些网站由于业务需求,往往需要提供文件查看或文件下载功能,如果对用户查看或下载的文件不做限制,则恶意用户就能够查看或下载服务器的任意敏感文件,可以是源代码文件、系统敏感文件等,这就是文件下载漏洞。通过任意文件下载漏洞,攻击者可以对操作系统或程序代码进行深入的研究,然后配合敏感文件中的敏感信息对服务器进行更深层次的入侵。

文件下载的两种方式

先来了解一下常规的网页文件下载的两种形式:
1、直接下载:

<a href=”http://www.a.com/xxx.rar”>下载</a>

2、增加header头

<?php

$filename = $_GET['filename'];

echo '<h1>开始下载文件!</h1><br /><br />';

echo file_get_contents($filename);

header('Content-Type: imgage/jpeg');

header('Content-Disposition: attachment; filename='.$filename);

header('Content-Lengh: '.filesize($filename));

?>

如何挖掘

1、通过页面信息进行挖掘

我们可以通过查看网页源代码来查找是否有readfile()、file_get_contents()、fopen()等函数(这就与文件读取函数联动了),如果$filename没有经过校验或者校验不合格,用户就可控制变量读取任意文件,如/etc/passwd、/index.php、/config.ini等

2、通过url链接进行挖掘

常见的包含在url链接中的有

一般链接形式:
download.php?path=
download.php?file=
down.php?file=
data.php?file=
readlife.php?file=
read.php?filename=

或者包含参数:

&url=

&file_name=

&Filepath=

&Path=

&Data=

3、在脚本代码种进行挖掘

涉及到代码审计知识

一些敏感文件

知道有文件下载漏洞就可以干坏事儿了,下面列出了一些敏感文件

Windows:
C:\boot.ini //查看系统版本
C:\Windows\System32\inetsrv\MetaBase.xml //IIS配置文件
C:\Windows\repair\sam //存储系统初次安装的密码
C:\Program Files\mysql\my.ini //Mysql配置
C:\Program Files\mysql\data\mysql\user.MYD //Mysql root密码
C:\Windows\php.ini //php配置信息

Linux:
/etc/passwd // 账户信息
/etc/shadow // 账户密码文件
/etc/my.conf //mysql 配置文件
/etc/httpd/conf/httpd.conf // Apache配置文件
/usr/local/app/apache2/conf/httpd.conf //Apache2默认配置文件
/usr/local/app/apache2/conf/extra/httpd-vhost.conf //虚拟网站配置
/usr/local/app/php5/lib/php.ini //PHP相关配置

实例

云演任意文件下载

关卡1
点进去有个下载链接,但是是 fake_flag.txt
任意文件读取与下载漏洞
不过它直接提醒了 flag 真正的藏身之处是 flag.txt,那我们直接在 url 中输入 filename=flag.txt 即可获取
任意文件读取与下载漏洞
这题有点过于简单了…

关卡2
进去发现给了我们两首歌的链接,点击也确实下载了
任意文件读取与下载漏洞
查看它的网页源码发现是这么写的:

<div id="templatemo_content_wrapper">
    
        <div id="templatemo_content">
        	
            <div class="content_title_01">壮士,来听首歌吧</div>
			<div class="horizontal_divider_01">&nbsp;</div>
			<div class="cleaner">&nbsp;</div>

			<p>为了让大家更轻松的比赛,为大家准备了两首歌让大家下载</p>
			
			<p><a href="download.php?url=Y2hvdWJhZ3VhaS5tcDM=" target="_blank">丑八怪</a></p>
            <p><a href="download.php?url=T25lIExvdmUubXAz" target="_blank">One Love</a></p>
            
            
             <div class="cleaner">&nbsp;</div>
        </div>
        <div class="cleaner">&nbsp;</div>
    </div>
    
    <div id="templatemo_footer">
		
	</div>

其中<p><a href="download.php?url=Y2hvdWJhZ3VhaS5tcDM=" target="_blank">丑八怪</a></p><p><a href="download.php?url=T25lIExvdmUubXAz" target="_blank">One Love</a></p>中参数 url 后面的那一串是啥呢?联系之前的知识,不难猜测出这串字符应该是经过 base64 编码之后的结果,尝试解码看看到底是啥。

使用 hackbar 解码后,发现分别是choubaguai.mp3One Love.mp3,看来与我们的猜测吻合。看到这大抵是猜测存在文件下载漏洞了,并且还含有文件包含漏洞,多半是这个 download.php 文件的锅。我们先直接让它包含自己试试,当然跟前面一样,需要编码。发现是可以直接下载的,打开发现:

<?php
error_reporting(0);
include("hereiskey.php");
$url=base64_decode($_GET[url]);
if( $url=="hereiskey.php" || $url=="choubaguai.mp3" || $url=="One Love.mp3" || $url=="download.php"){
	$file_size = filesize($url);
	header ( "Pragma: public" );
	header ( "Cache-Control: must-revalidate, post-check=0, pre-check=0" );
	header ( "Cache-Control: private", false );
	header ( "Content-Transfer-Encoding: binary" );
	header ( "Content-Type:audio/mpeg MP3");
	header ( "Content-Length: " . $file_size);
	header ( "Content-Disposition: attachment; filename=".$url);
	echo(file_get_contents($url));
	exit;
}
else {
	echo "Access Forbidden!";
}
?>

没有对包含的文件进行任何的过滤检查,确实是存在文件包含漏洞。此外,我们还发现了一个 hereiskey.php 文件,那我们故技重施,把这个文件下下来康康(别忘了编码)

<?php
// key is d0wnload_0k
?>

成功得到key

pikachu靶场 UnSafe FileDownload

跟前面一样,点击链接发现是成功下载的
任意文件读取与下载漏洞
查看源码:

<div id="usd_main" style="width: 600px;">
       <h2 class="title" >NBA 1996年   黄金一代</h2>
       <p class="mes" style="color: #1d6fa6;">Notice:点击球员名字即可下载头像图片!</p>
       <div class="png" style="float: left">
       		<img src="download/kb.png" /><br />
       		<a href="execdownload.php?filename=kb.png" >科比.布莱恩特</a>
       </div>
</div>

没什么大问题,跟上面一样,先尝试直接包含自己试试
任意文件读取与下载漏洞
发现找不到该文件,最大的可能性就是此文件并不存在根目录下,返回上一级试试
任意文件读取与下载漏洞
发现成功下载到了该文件,我们再去后端看看它的代码逻辑,其中

include_once $PIKA_ROOT_DIR."inc/function.php";

说明其存在文件包含漏洞,而

$file_path="download/{$_GET['filename']}";

说明球星图片文件是与 execdownload.php 一同存在 download 目录下的,所以使用 …/ 跳过上级

如何预防

● 净化数据:对用户传过来的文件名参数进行统一编码,对文件类型进行白名单控制,对包含恶意字符或者空字符的参数进行拒绝。
● web应用程序可以使用chroot环境包含被访问的web目录,或者使用绝对路径+参数来访问文件目录,使其即使越权也在访问目录之内。www目录就是一个chroot应用。由chroot创造出的那个根目录,叫做“chroot监狱”(所谓"监狱"就是指通过chroot机制来更改。某个进程所能看到的根目录,即将某进程限制在指定目录中,保证该进程只能对该目录及其子目录的文件有所动作,从而保证整个服务器的安全,详细具体chroot的用法,可参考chroot用法详解
● 任意文件下载漏洞也有可能是web所采用的中间件的版本低而导致问题的产生,例如ibm的websphere的任意文件下载漏洞,需更新其中间件的版本可修复。
● 要下载的文件地址保存至数据库中。
● 文件路径保存至数据库,让用户提交文件对应ID下载文件。
● 用户下载文件之前需要进行权限判断。
● 文件放在web无法直接访问的目录下。
● 不允许提供目录遍历服务。
● 公开文件可放置在web应用程序下载目录中通过链接进行下载。文章来源地址https://www.toymoban.com/news/detail-408603.html

到了这里,关于任意文件读取与下载漏洞的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 任意文件读取和漏洞复现

    一些网站的需求,可能会提供文件查看与下载的功能。如果对用户查看或下载的文件没有限制或者限制绕过,就可以查看或下载任意文件。这些文件可以是漂代码文件,配置文件,敏感文件等等。 任意文件读取会造成(敏感)信息泄露: 任意文件读取大多数情况是由于其他

    2024年02月09日
    浏览(32)
  • 【漏洞复现】OfficeWeb365 Indexs 任意文件读取漏洞

    OfficeWeb365 /Pic/Indexs接口处存在任意文件读取漏洞,攻击者可通过独特的加密方式对payload进行加密,读取任意文件,获取服务器敏感信息,使系统处于极不安全的状态。 FOFA:body=\\\"请输入furl参数\\\" || header=\\\"OfficeWeb365\\\" || banner=\\\"OfficeWeb365\\\" 读取文件加密方式

    2024年02月02日
    浏览(33)
  • 深信服应用交付报表任意文件读取漏洞

      深信服应用交付报表系统 download.php文件存在任意文件读取漏洞,攻击者通过漏洞可以下载服务器任意文件。   深信服应用交付报表系统   app=“SANGFOR-应用交付报表系统”   这里通过抓包进行文件读取,当然也可以在页面中直接进行获取。

    2024年02月10日
    浏览(36)
  • Jenkins CLI 任意文件读取漏洞复现

    Jenkins CLI 是 Jenkins 内置的命令行页面。 Jenkins 受影响版本中使用 args4j 库解析CLI命令参数,该库默认将参数中 @ 字符后的文件路径替换为文件内容,未授权的攻击者可利用该特性使用 Jenkins 控制器进程的默认字符编码读取 Jenkins 控制器文件系统上的任意文件(如加密密钥的二进

    2024年02月22日
    浏览(42)
  • 漏洞复现-Yearning front 任意文件读取漏洞(附漏洞检测脚本)

    文章中涉及的漏洞均已修复,敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担

    2024年01月18日
    浏览(28)
  • Weblogic漏洞(三)之 Weblogic 弱口令、任意文件读取漏洞

    此次我们实验的靶场,是vnlhub中的Weblogic漏洞中的weak_password靶场,我们 cd 到weak_password,然后输入以下命令启动靶场环境: 输入以下的命令可以查看当前启动的靶场环境: 首先我们可以通过本机的IP加端口号( http://192.168.41.132:7001/console/login/LoginForm.jsp )来进行靶场访问,如

    2024年02月10日
    浏览(30)
  • OfficeWeb365 Indexs 任意文件读取漏洞复现

    OfficeWeb365 是专注于 Office 文档在线预览及PDF文档在线预览云服务,包括 Microsoft Word 文档在线预览、Excel 表格在线预览、Powerpoint 演示文档在线预览,WPS 文字处理、WPS 表格、WPS 演示及 Adobe PDF 文档在线预览。 OfficeWeb365 /Pic/Indexs接口处存在任意文件读取漏洞,攻击者可通过独特

    2024年02月03日
    浏览(27)
  • 惠尔顿安全审计系统任意文件读取漏洞

    免责声明:文章来源互联网收集整理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。 Ⅰ、漏洞描述

    2024年02月22日
    浏览(29)
  • 春秋云境:CVE-2022-25401(任意文件读取漏洞)

    一、题目 二、curl访问flag文件 介绍:         Cuppa CMS v1.0 administrator/templates/default/html/windows/right.php文件存在任意文件读取漏洞  进入题目 是一个登录页面 sql和暴破都无解。 官方POC  国家信息安全漏洞库 cve漏洞介绍 官方给错了目录 没有administrator/ 找不到 官方poc  代码块

    2024年02月10日
    浏览(28)
  • metinfo_6.0.0 任意文件读取漏洞复现

    漏洞点为/include/thumb.php 一测: /include/thumb.php?dir=..././http/..././config/config_db.php 二测: /include/thumb.php?dir=.....///http/.....///config/config_db.php 三测: /include/thumb.php?dir=http/.....///.....///config/config_db.php 四测: /include/thumb.php?dir=http....configconfig_db.php 注意: 此POC 仅适用于Windows 系统

    2024年01月20日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包