• 网络安全笔记 -- 文件操作(文件下载读取)


    1. 概述

    文件下载功能在很多web系统上都会出现,一般我们当点击下载链接,便会向后台发送一个下载请求,一般这个请求会包含一个需要下载的文件名称,后台在收到请求后 会开始执行下载代码,将该文件名对应的文件response给浏览器,从而完成下载。 如果后台在收到请求的文件名后,将其直接拼进下载文件的路径中而不对其进行安全判断的话,则可能会引发不安全的文件下载漏洞。
    此时如果 攻击者提交的不是一个程序预期的的文件名,而是一个精心构造的路径,则很有可能会直接将该指定的文件下载下来。 从而导致后台敏感信息被下载。

    • 产生:任意语言代码下载功能函数
    • 检测
      • 白盒:代码审计
      • 黑盒:扫描漏洞、公开漏洞、手工看参数值及功能点(资源下载)
    • 利用
      • 常见文件:后台首页日志等可见文件
      • 敏感文件:数据库配置文件、各种接口文件、密钥信息等文件
    • 修复
      • 部署WAF产品
      • 固定目录或过滤跨目录符号
      • 目录权限设置或单独文件权限设置

    2. 案例


    2.1 pikachu平台测试

    平台:pikachu

    在这里插入图片描述

    文件下载路径为:http://xxx:8080/vul/unsafedownload/execdownload.php?filename=xxx.png
    改造下地址:http://xxx:8080/vul/unsafedownload/execdownload.php?filename=…/execdownload.php
    文件execdownload.php会被直接下载:
    在这里插入图片描述

    访问http://xxx:8080/vul/unsafedownload/execdownload.php?filename=…/…/…/inc/config.inc.php:

    在这里插入图片描述

    打开config.inc.php文件,能够得到数据库配置信息:

    在这里插入图片描述

    2.2 RoarCTF2019

    链接

    在这里插入图片描述

    点击help,查看链接地址:
    http://809450ae-64d8-44d9-ae2a-924352d23424.node4.buuoj.cn:81/Download?filename=help.docx
    在这里插入图片描述尝试改成post方式提交,文件成功被下载:

    在这里插入图片描述将post数据改为:filename=WEB-INF/web.xml,抓取返回的数据:

    在这里插入图片描述
    根据javaweb的知识,可以直接访问Flag,发现报错,不能正常访问,通过上面其它的Controller,我们能够找到Controller的路径,那么就可以根据提供的路径信息找到class文件的路径,class文件一般存放于WEB-INF包下的class文件夹下,尝试如下:

    在这里插入图片描述
    访问并抓包查看:
    在这里插入图片描述
    “Flag is nearby”,说明flag就在附近,通过观察,我们发现在这句话上面有一段base64编码过的字符串,用Baes64解码得到flag:
    在这里插入图片描述



    3. 文件下载检测

    留意:文件名、参数值、目录符号

    read.xxx?filename=
    down.xxx?filename=
    readfile.xxx?file=
    downfile.xxx?file=
    ../  ..\  .\  ./等
    %00  ?  %23  %20  .等
    &readpath=  &filepath=  &path=  &inputfile=  &url=  &data=  &readfile=  &menu=  &META-INF=  &WEB-INF=
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • 相关阅读:
    node-gyp rebuild error【npm install时报错】python
    不可以涩涩!AI续写软件初体验;迁移学习路线图;谷歌新闻非官方搜索API;CS295『因果推理』2021课程资料;前沿论文 | ShowMeAI资讯日报
    云原生可观测套件:构建无处不在的可观测基础设施
    常见面试题整理(2022-11)
    Java常用设计模式
    【开源】基于Vue.js的康复中心管理系统
    Windows下免杀思路总结
    5 步!用阿里云 Serverless 搭建高质量的图片压缩工具
    大开眼界:Netbios 上古时代如何用一个参数实现一个世界 负面典型
    C++ 中的模板函数简介
  • 原文地址:https://blog.csdn.net/swy66/article/details/126864661