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

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

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、对下载路径进行过滤,如下载前对传入的参数进行过滤,并且对下载文件类型进行检查,是否是允许下载的类型。

目录
相关文章
|
数据采集 存储 数据可视化
【python】python二手房数据抓取分析可视化(源码)【独一无二】
【python】python二手房数据抓取分析可视化(源码)【独一无二】
【python】python二手房数据抓取分析可视化(源码)【独一无二】
|
安全 Java 测试技术
【代码审计篇】 代码审计工具Fortify基本用法详解
本篇文章讲解代码审计工具Fortify的基本用法,感兴趣的小伙伴可以研究学习一下,文中部分地方可能会有遗漏,麻烦各位大佬指正,深表感谢!!!
3348 1
|
存储 安全 BI
等保三级--技术要求(一)
等保三级--技术要求(一)
1243 0
|
安全 API 开发工具
阿里云如何开通子账号
阿里云如何开通子账号
8834 1
|
关系型数据库 MySQL Linux
CentOS7环境下安装MySQL5.6
CentOS7环境下安装MySQL5.6
1022 0
|
4月前
|
云安全 弹性计算 安全
高危预警:用友 U8 Cloud 漏洞成勒索攻击新入口
近期,用友U8 Cloud多个高危漏洞遭 exploited,导致阿里云客户遭遇勒索攻击。涉及反序列化、远程命令执行及文件上传漏洞,影响2.0至5.1全系列版本。攻击者可任意执行代码、加密数据勒索。建议立即修补、备份并启用安全防护措施。
|
5月前
|
网络协议 安全 网络安全
什么是TCP/UDP/HTTP?它们如何影响你的内网穿透体验?
数据的传输离不开各种协议,它们就像现实世界中的交通规则,规定了数据如何打包、寻址、传输和接收。对于使用内网穿透的用户来说,理解TCP、UDP和HTTP这些基础协议的特点,能帮助你更好地理解其性能表现,并选择最适合的配置方案。
|
安全 关系型数据库 MySQL
Web安全-任意文件下载漏洞
Web安全-任意文件下载漏洞
898 5
|
8月前
|
JSON 安全 Java
说一说 Java 反序列化漏洞
我是小假 期待与你的下一次相遇 ~
233 1
说一说 Java 反序列化漏洞
|
存储 Web App开发 安全
XSS漏洞原理(三)存储型
XSS漏洞原理(三)存储型