代码审计——任意文件下载详解

news/2024/11/23 3:57:20/

为方便您的阅读,可点击下方蓝色字体,进行跳转↓↓↓

    • 01 漏洞描述
    • 02 审计要点
    • 03 漏洞特征
    • 04 漏洞案例
    • 05 修复方案

01 漏洞描述


网站可能提供文件查看或下载的功能,如果对用户查看或下载的文件不做限制,就能够查看或下载任意的文件,可以是源文件,敏感文件等等。

在这里插入图片描述

02 审计要点


任意文件下载漏洞发生的根本原因是系统自带的查看或下载功能,用户可控制下载路径,且当服务器不做任何限制的时候,就可以完成对任意文件的读取/下载。

当判断代码中是否存在任意文件下载漏洞时,可从以下3点进行判断:

1、是否存在文件读取接口?Java中如read函数等。

2、待读取的文件名参数是否为用户可控?是否直接拼接http请求数据?或者调用存储在数据库中的数据?

3、用户输入的文件名是否经过了校验?是否预先设置好文件白名单?对输入的特殊字符是否存在敏感字符过滤?

03 漏洞特征


如果存在文件下载接口,且该接口接受用户输入的文件名作为将要下载的文件资源,且对文件资源名字没有进行路径和文件名字的校验,则存在该漏洞。

.Net

using System.IO;class Example{void ExampleFun(string filename)//filename为用户的输入数据{//filename 可能包含“..”字符序列导致访问受限目录之外的文件string path = Path.GetFullPath(filename);DirectoryInfo info = new DirectoryInfo(path);......}
}

上述代码中,前端输入filename未进行任何校验及过滤,可造成任意文件下载。

PHP

<?php 
$filename = $_GET['filename']; readFile($filename);?> 

上述代码中,文件名用户可控,且未作任何校验和限制,导致存在任意文件下载漏洞。

04 漏洞案例

在这里插入图片描述
在这里插入图片描述
如上述代码所示,存在文件下载接口,且该接口接受用户输入的文件名作为将要下载的文件资源,且对文件资源名字没有进行路径和文件名字的校验,明确存在任意文件下载/读取漏洞。

漏洞验证示例如下:

http://127.0.0.1/resin-doc/viewfile/?file=index.jsp

在这里插入图片描述

05 修复方案


1、过滤.(点),使用户在url中不能回溯上级目录。

2、对下载路径进行过滤,如下载前对传入的参数进行过滤,并且对下载文件类型进行检查,是否是允许下载的类型。


http://www.ppmy.cn/news/430165.html

相关文章

Kafka中的leader选举算法Raft

Kafka中的leader选举算法Raft 一、简介1. 定义2. Leader选举算法 二、 分布式一致性协议Raft1. Raft 强一致性协议基础2. Raft应用场景 三、Kafka选举算法的需求1. Leader的定义和意义2. Leader选举的需求和挑战3. 现有Leader选举算法 四、Kafka中的leader选举算法实现1. Kafka…

【雕爷学编程】Arduino动手做(112)---2.4G24L01无线模块

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

Java语言格式化返回日期为北京时间(东八区)

最近在开发项目过程中&#xff0c;发现返回的数据中现实的日期与数据库中日期大概相差8小时&#xff0c;这是因为直接从数据库中查询出来的时间是格林威治时间&#xff0c;而不是北京&#xff08;东八区&#xff09;时间&#xff0c;所以我们需要做日期格式化&#xff0c;将格林…

北京时间与UTC时间转换

UTC时间也称为世界标准时间&#xff0c;或协调世界时&#xff08;英语&#xff1a;Coordinated Universal Time&#xff09;&#xff0c;北京时间是东八区&#xff0c;领先UTC 8个小时。 UTC 时区差&#xff1d; 本地时间&#xff0c; 时区差东为正&#xff0c;西为负&#xf…

北京共有多少个区?_北京城中区是什么?城郊区是什么?

北京共有多少个区&#xff1f;_北京城中区是什么&#xff1f;城郊区是什么&#xff1f; 北京有几个区&#xff1a; 北京共有16区2县&#xff1a;东城区、西城区、崇文区、宣武区、朝阳区、海淀区、丰台区、石景山区、通州区、平谷区、顺义区、怀柔区、昌平区、门头沟区、房山区…

京区航天研究所 哪些比较好的研究所?

第一梯队&#xff1a;一院一部、战术武器部、10所、12所、研发部、空天部&#xff0c;五院501所&#xff08;总体设计部&#xff09;、502所、通导部、遥感部、钱室&#xff08;所人均年薪35w-50w级别&#xff09; 第二梯队&#xff1a;一院14所、15所&#xff0c;二院未来实验…

北京信息科技大学计算机研究生在哪个校区,北京信息科技大学有几个校区,哪个校区最好及各校区介绍...

一、北京信息科技大学有几个校区 北京信息科技大学有5个校区&#xff0c;分别是小营校区、健翔桥校区、清河校区、金台路校区、酒仙桥校区。 二、北京信息科技大学哪个校区最好及各校区介绍 北京信息科技大学有5个校区&#xff0c;分别是小营校区、健翔桥校区、清河校区、金台路…

关于征集2022年北京市东城区科技计划项目的通知

各有关单位&#xff1a; 为加强国际科技创新中心建设&#xff0c;推动科技成果落地转化&#xff0c;鼓励科技创新&#xff0c;参照北京市有关科技计划项目&#xff08;课题&#xff09;与经费管理的有关办法&#xff0c;东城区科学技术和信息化局启动2022年度东城区科技计划项…