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

本文涉及的产品
应用实时监控服务-用户体验监控,每月100OCU免费额度
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
可观测监控 Prometheus 版,每月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、对下载路径进行过滤,如下载前对传入的参数进行过滤,并且对下载文件类型进行检查,是否是允许下载的类型。

目录
相关文章
|
移动开发 安全
泛微e-office OfficeServer2.php 存在任意文件读取漏洞复现
泛微e-office OfficeServer2.php 存在任意文件读取漏洞,攻击者可通过构造特定Payload获取敏感数据信息。
559 0
|
4月前
|
安全 关系型数据库 MySQL
Web安全-任意文件下载漏洞
Web安全-任意文件下载漏洞
202 5
|
3月前
|
安全 网络协议 Shell
文件上传漏洞(七)XISE寄生虫Weevely学习
文件上传漏洞(七)XISE寄生虫Weevely学习
|
8月前
|
安全 网络安全
明御安全网关任意文件上传漏洞
安恒信息明御安全网关(以下简称“NGFW”)秉持安全可视、简单有效的理念,以资产为视角,构建“事前+事中+事后”全流程防御的下一代安全防护体系,并融合传统防火墙、入侵防御系统、防病毒网关、上网行为管控、VPN网关、威胁情报等安全模块于一体的智慧化安全网关。
237 1
|
安全 Shell PHP
渗透攻击实例-文件上传导致任意代码执行
渗透攻击实例-文件上传导致任意代码执行
|
监控 算法 Java
记一次从任意文件下载到getshell
记一次从任意文件下载到getshell
145 0
|
开发框架 安全 .NET
冰蝎WebShell免杀工具(支持4.0.6)
冰蝎WebShell免杀工具(支持4.0.6)
658 0
|
开发框架 安全 Java
【每日渗透笔记】文件上传绕过尝试
【每日渗透笔记】文件上传绕过尝试
336 0
【每日渗透笔记】文件上传绕过尝试
|
开发框架 安全 .NET
9.文件上传漏洞基础
文件上传漏洞通常由于网页代码中的文件上传路径变量过滤不严造成的,如果文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,攻击者可通过 Web 访问的目录上传任意文件,包括网站后门文件(webshell),进而远程控制网站服务器。
9.文件上传漏洞基础
|
安全 .NET SQL
【代码审计】任意文件删除漏洞实例
任意文件删除漏洞,该漏洞可让攻击者随意删除服务器上的任意文件。   环境搭建: CSCMS :http://www.chshcms.com/ 网站源码版本:Cscms_v4.1正式版(发布日期:2017-06-05) 程序源码下载:https://github.
1274 0