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

本文涉及的产品
可观测监控 Prometheus 版,每月50GB免费额度
注册配置 MSE Nacos/ZooKeeper,118元/月
应用实时监控服务-应用监控,每月50GB免费额度
简介: 代码审计——任意文件下载详解

01 漏洞描述


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

image.png

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 
{
   
   mathJaxContainer[0]}_GET['filename']; 
 readFile($filename);
 ?>

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

04 漏洞案例

image.png

image.png

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

漏洞验证示例如下:

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

image.png

05 修复方案



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

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

目录
相关文章
|
5月前
|
安全 关系型数据库 MySQL
Web安全-任意文件下载漏洞
Web安全-任意文件下载漏洞
241 5
|
安全 关系型数据库 MySQL
FFMPEG任意文件读取漏洞靶场搭建过程
本文讲的是FFMPEG任意文件读取漏洞靶场搭建过程,丑化说在前头,我这人有一癖好,就是研究一些已经过时的东西,发一些过时的文章。文章之前就写好了,只是一直没发出来充数。距离FFMPEG任意文件读取漏洞发布的时间已经过去很久了,记得刚出来那会儿国内几个大型的视频网站都有这个问题。
3471 0
|
安全 数据库 数据安全/隐私保护
【代码审计】任意文件读取漏洞实例
0x00 前言   大多数网站都提供读取文件功能,一般实现过程是,根据参数filename的值,获得该文件在网站上的绝对路径,读取文件。   这里,通过两个任意文件读取漏洞实例去展示漏洞原理、漏洞危害。
1533 0
|
安全 .NET SQL
【代码审计】任意文件删除漏洞实例
任意文件删除漏洞,该漏洞可让攻击者随意删除服务器上的任意文件。   环境搭建: CSCMS :http://www.chshcms.com/ 网站源码版本:Cscms_v4.1正式版(发布日期:2017-06-05) 程序源码下载:https://github.
1280 0
|
移动开发 安全
泛微e-office OfficeServer2.php 存在任意文件读取漏洞复现
泛微e-office OfficeServer2.php 存在任意文件读取漏洞,攻击者可通过构造特定Payload获取敏感数据信息。
578 0
|
安全
安全漏洞问题5:上传任意文件
上传任意文件漏洞是指用户可以上传所有文件,程序没有检测上传文件大小、类型是否是符合期望,或仅仅在客户端对上传文件大小、上传文件类型进行限制,未在服务器端进行验证。恶意用户可以利用例如上传一些恶意的程序,比如图片木马。
2798 0
|
安全 PHP 数据库
【代码审计】后台Getshell的两种常规姿势
0x00 前言   在早些年刚接触web安全的时候,基础套路都是找注入--找后台--找上传点--找数据库备份--Getshell,然而在代码审计的角度,也存在类似的基本操作。 这里结合代码实例介绍白盒Getshell的两种常规姿势:写入配置文件Getshell、模块安装Getshell。
1561 0
|
安全 PHP Python
Discuz!X 3.4 任意文件删除漏洞复现过程(附python脚本)
  今天看下群里在讨论Discuz!X 3.4 任意文件删除漏洞,自己做了一些测试,记录一下过程。结尾附上自己编写的python脚本,自动化实现任意文件删除。 具体漏洞,请查看 https://paper.seebug.org/411/ 0x01 环境搭建   到官网下载Discuz 3.4版本,phpstudy 本机搭建,并注册账号。
2451 0
|
9月前
|
安全 网络安全
明御安全网关任意文件上传漏洞
安恒信息明御安全网关(以下简称“NGFW”)秉持安全可视、简单有效的理念,以资产为视角,构建“事前+事中+事后”全流程防御的下一代安全防护体系,并融合传统防火墙、入侵防御系统、防病毒网关、上网行为管控、VPN网关、威胁情报等安全模块于一体的智慧化安全网关。
251 1
|
开发框架 安全 Java
【每日渗透笔记】文件上传绕过尝试
【每日渗透笔记】文件上传绕过尝试
355 0
【每日渗透笔记】文件上传绕过尝试