20-文件下载及读取漏洞

2023-11-16

WEB 漏洞-文件操作之文件下载读取全解

思维导图

img

  • 1.文件被解析,则是文件解析漏洞
  • 2.显示源代码,则是文件读取漏洞
  • 3.提示文件下载,则是文件下载漏洞

文件下载漏洞

利用条件

(1)存在读文件的函数和操作

(2)读取文件的路径用户可控且未校验或校验不严

(3)输出了文件内容

危害

(1)下载服务器任意文件,如脚本代码,服务以及系统配置文件等

(2)可用得到的代码进一步代码审计,挖掘漏洞

文件读取漏洞

就是攻击者通过一些手段可以读取服务器上开发者不允许读到的文件

一 、简介

由于业务需求,很多网站往往需要提供文件(附件)下载的功能块,但是如果对下载的文件没有做限制,直接通过绝对路径对其文件进行下载,那么,恶意用户就可以利用这种方式下载服务器的敏感文件,对服务器进行进一步的威胁和攻击。

漏洞利用

  • 数据库配置文件下载或者读取后续
  • 接口密钥信息文件下载或者读取后续

二、任意文件下载漏洞地址

对应文件

  • 配置文件(数据库,平台,各种等)
利用:(信息收集信息>猜路径 >>下载配置文件/代码文件 >> 利用服务器软件漏洞> shell> 提权)
 
1.任意文件下载漏洞的利用主要是为了信息收集,我们通过对服务器配置文件的下载,获取到大量的配置信息、源码,从而根据获取的信息来进一步挖掘服务器漏洞从而入侵。
 
2.下载常规的配置文件,例如: ssh,weblogic,ftp,mysql等相关配置
下载各种.log文件,从中寻找一些后台地址,文件上传点之类的地方,如果运气好的话会获得一些前辈们的后门。
下载web业务文件进行白盒审计,利用漏洞进一步攻入服务器。
 
3.平台文件
Windows:(windows的这些路径不一定都存在)
    C:\boot.ini //查看系统版本
    C:\Windows\System32\inetsrv\MetaBase.xml          //IIS配置文件
    C:\Windows\repair\sam                                          //存储系统初次安装的密码
    C:\Program Files\mysql\my.ini                               //Mysql配置
    C:\Program Files\mysql\data\mysql\user.MYD     //Mysql root
    C:\Windows\php.ini              //php配置信息
    C:\Windows\my.ini             //Mysql配置信息
    C:\Windows\win.ini             //Windows系统的一个基本系统配置文件
 
Linux:
    /root/.ssh/authorized_keys
    /root/.ssh/id_rsa
    /root/.ssh/id_ras.keystore
    /root/.ssh/known_hosts             //记录每个访问计算机用户的公钥
    /etc/passwd
    /etc/shadow
    /usr/local/app/php5/lib/php.ini                //PHP配置文件
    /etc/my.cnf                 //mysql配置文件
    /etc/httpd/conf/httpd.conf             //apache配置文件
    /root/.bash_history             //用户历史命令记录文件
    /root/.mysql_history             //mysql历史命令记录文件
    /proc/mounts                 //记录系统挂载设备
    /porc/config.gz                //内核配置文件
    /var/lib/mlocate/mlocate.db         //全文件路径
    /porc/self/cmdline             //当前进程的cmdline参数
 
参考:https://www.cnblogs.com/zzhoo/p/12613815.html

记住下载和访问是不一样的.

案例1:pikuchu靶场-文件下载测试-参数判断

<1>打开显示如下,点击人名可以下载对应图片。img

<2>抓包得到对应下载地址如下:

http://127.0.0.1:8080/pikachu/vul/unsafedownload/execdownload.php?filename=ai.png

image-20230330141756717

<3>修改filename参数值如下,尝试下载当中的execdownload.php文件,判断是否存在文件下载漏洞。

http://192.168.31.128/pi/vul/unsafedownload/execdownload.php?filename=../execdownload.php

//判断出在上级目录所以使用一个../

image-20230330145320500

如果直接访问

http://192.168.31.128/pi/vul/unsafedownload/execdownload.php?
//也下载了文件但是不是源码

image-20230330141916845

因为PHP代码在页面中就是不可见的,一种属于访问,一种属于下载.

<4>可以使用扫描工具爬行或扫描地址,直接找到配置文件,或者通过下载代码文件分析其中包含的文件路径等,找到配置文件等敏感文件。

1.比如可以通过网站其他页面,将他通过…/的方式下载下来。分析代码。

image-20230330143833159

2.使用御剑工具中的字典扫描目录:

扫描出:(http://192.168.31.128/pi/vul/unsafedownload/download/)

这个是网站的存储的文件地址

image-20230330142705540

扫出敏感文件:

image-20230330143455058

打开连接,如果打不开就是没有权限.

image-20230330144036119

<5>分析配置文件路径,构造filename参数值,使其指向配置文件地址,下载。

http://127.0.0.1/vul/unsafedownload/execdownload.php?filename=../../../inc/function.php

<6>在配置文件中可以找到数据库用户名密码等敏感信息,方便后期利用。

config.inc.php中存放数据库名和密码image-20230330144319188

案例2:Zdns网站文件下载真实测试-功能点

<1>网站打开如下,找到下载功能点,点击下载。img

<2>抓包获取下载请求,分析如下。

真实的下载地址http://down.znds.com/getdownurl/?s=/down/20210806/txsp16158_7.8.0.1005_dangbei.apk

更换下载地址也就存在了文件下载漏洞img

<3>下载请求参数值是一个路径+文件名,猜测含有文件下载漏洞。这里我们不知道网站的代码结构,因此无法构造请求下载敏感文件。

<4>本案例主要是告诉我们下载漏洞在哪里测?下载漏洞怎么判断存在等。

一般去找下载功能点测试,观察下载接口参数值是不是文件名,是不是可以改为其他文件名或文件路径。

案例3:小米路由器-文件读取真实测试-漏洞

地址:https://www.seebug.org/vuldb/ssvid-98122

远程任意文件读取漏洞(CVE-2019-18371)

小米路由器的nginx配置文件错误,导致目录穿越漏洞,实现任意文件读取(无需登录)

nginx配置不当可导致目录穿越漏洞

location /xxx {
alias /abc/;
}

可通过访问http://domain.cn/xxx…/etc/passwd实现目录穿越访问上级目录及其子目录文件。

在小米路由器的文件/etc/sysapihttpd/sysapihttpd.conf中,存在。

location /api-third-party/download/extdisks {
alias /extdisks/;
}

故可以任意文件读取根目录下的所有文件,而且是root权限,

如访问http://192.168.31.1/api-third-party/download/extdisks…/etc/shadow

img

在fofa上搜索“小米路由器”,找到真实地址访问测试,成功下载文件。

img

img

案例4:RoarCTF2019-文件读取真题复现-比赛

地址:https://buuoj.cn/challenges#%5BRoarCTF%202019%5DEasy%20Java 思路:

  • 爬虫扫描地址-分析参数名参数值-文件操作安全-对应脚本
  • 修改提交方式测试-读取WEB配置文件WEB-INF/web.xnl
  • 访问读取对应地址-访问读取flag对应class文件-(WEB-INF/classes/com/wm/ctf/FlagController.class)

image-20230330152700835

<1>打开首页是一个登录框

image-20230330152648209

<2> 复制help连接,发现会触发一个文件下载请求:

http://90bc3afb-141d-47ba-b455-b2120b39a054.node4.buuoj.cn:81/Download?filename=help.docx

image-20230330155810221

<3>直接get该请求,报错,

image-20230330155905591原因是java代码设置了post请求方式,

因此我们将filename的传值以post方式提交

image-20230330160006073

<5>help文件内容如下,说明flag并不在这里。但是通过分析请求参数,猜测这里有文件下载读取漏洞。

img

<6> 通过分析该为Java程序开发的,在javaweb中有个WEB-INF文件下web.xml配置文件

  • Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则。

image-20230330161040121

将filename值改为java的配置文件,成功读取到配置文件并在配置文件中找到了flag对应地址

image-20230330161256636

<7>尝试访问flag文件路径,报错,但是报错信息暴露了一个文件地址(该地址在配置文件中也有)img

<8>下载该文件 ,成功拿到flag。

image-20230330161509780

image-20230330161625121

案例5:百度杯2017二月-Zone真题复现-比赛拓展

地址:https://www.ichunqiu.com/battalion?t=1&r=57475

<1>首页是一个登录页面img

<2>首页抓包

看到login=0,

image-20230330162524573

将cookie中的login=0改为login=1,成功登录。img

<3>点击manage,继续抓包,将cookie中的login=0改为login=1

image-20230330162709547

image-20230330162820245

<4>抓到下一个请求接口,这个接口很关键,有module=index&name=php参数,意思是访问index.php文件。

image-20230330164525869

<5>尝试修改参数值,实现对指定文件的读取。…/.绕过了…/过滤

GET /manages/admin.php?module=..././..././..././etc/nginx/nginx.conf&name= HTTP/1.1

防护

(1)过滤特殊字符.点,使用户在URL中不能穿越目录

(2)正则严格判断用户输入参数的格式

(3)php.ini配置open_basedir限定文件访问范围

(4)将文件路径保存于数据库中,通过url?id=123的方式下载文件

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

20-文件下载及读取漏洞 的相关文章

  • 38条Web测试经验分享

    1 页面链接检查 每一个链接是否都有对应的页面 并且页面之间切换正确 可以使用一些工具 如LinkBotPro File AIDCS HTML Link Validater Xenu等工具 LinkBotPro不支持中文 中文字符显示为乱码
  • WEB前端常见受攻击方式及解决办法总结

    一个网址建立后 如果不注意安全问题 就很容易被人攻击 下面讨论一下集中漏洞情况和放置攻击的方法 一 SQL注入 所谓的SQL注入 就是通过把SQL命令插入到web表单提交或输入域名或页面请求的查询字符串 最终达到欺骗服务器执行恶意的SQL命
  • 用户数据中的幸存者偏差

    幸存者偏差 Survivorship bias 是一种常见的逻辑谬误 意思是没有考虑到筛选的过程 忽略了被筛选掉的关键信息 只看到经过筛选后而产生的结果 先讲个故事 二战时 无奈德国空防强大 盟军战机损毁严重 于是军方便找来科学家统计飞机受
  • 2024年金三银四网络安全考试试题

    2023年金三银四网络安全考试试题 1 关于数据使用说法错误的是 A 在知识分享 案例中如涉及客户网络数据 应取敏感化 不得直接使用 B 在公开场合 公共媒体等谈论 传播或发布客户网络中的数据 需获得客户书面授权或取敏感化 公开渠道获得的除
  • Android SDK开发艺术探索(五)安全与校验

    一 前言 本篇是Android SDK开发艺术探索系列的第五篇文章 介绍了一些SDK开发中安全方面的知识 包括资源完整性 存储安全 权限校验 传输安全 代码混淆等知识 通过基础的安全配置为SDK保驾护航 探索SDK开发在安全方面的最佳实践
  • 200道网络安全常见面试题合集(附答案解析+配套资料)

    有不少小伙伴面临跳槽或者找工作 本文总结了常见的安全岗位面试题 方便各位复习 祝各位事业顺利 财运亨通 在网络安全的道路上越走越远 所有的资料都整理成了PDF 面试题和答案将会持续更新 因为无论如何也不可能覆盖所有的面试题 php爆绝对路径
  • 小白入门黑客之渗透测试(超详细)基本流程(内附工具)

    经常会收到小伙伴们这样的私信 为什么我总是挖不到漏洞呢 渗透到底是什么样的流程呢 所以全网最详细的渗透测试流程来了 渗透测试其实就是通过一些手段来找到网站 APP 网络服务 软件 服务器等网络设备和应用的漏洞 告诉管理员有哪些漏洞 怎么填补
  • 基于java的饮食分享平台系统设计与实现

    基于java的饮食分享平台系统设计与实现 I 引言 A 研究背景和动机 近年来 随着人们生活水平的提高和健康意识的增强 饮食健康已经成为越来越多人的关注焦点 因此 一个方便快捷的饮食分享平台就显得尤为重要 基于Java的饮食分享平台系统设计
  • 网络安全(黑客)自学启蒙

    一 什么是网络安全 网络安全是一种综合性的概念 涵盖了保护计算机系统 网络基础设施和数据免受未经授权的访问 攻击 损害或盗窃的一系列措施和技术 经常听到的 红队 渗透测试 等就是研究攻击技术 而 蓝队 安全运营 安全运维 则研究防御技术 作
  • 电商数据api接口商品评论接口接入代码演示案例

    电商数据API接口商品评论 接口接入入口 提高用户体验 通过获取用户对商品的评论 商家可以了解用户对商品的满意度和需求 从而优化商品和服务 提高用户体验 提升销售业绩 用户在购买商品前通常会查看其他用户的评论 以了解商品的实际效果和质量 商
  • 【计算机毕业设计】趵突泉景区的智慧导游小程序_5ztvv

    当今社会已经步入了科学技术进步和经济社会快速发展的新时期 国际信息和学术交流也不断加强 计算机技术对经济社会发展和人民生活改善的影响也日益突出 人类的生存和思考方式也产生了变化 传统趵突泉景区的智慧导游采取了人工的管理方法 但这种管理方法存
  • 【计算机毕业设计】OA公文发文管理系统_xtv98

    近年来 人们的生活方式以网络为主题不断进化 OA公文发文管理就是其中的一部分 现在 无论是大型的还是小型的网站 都随处可见 不知不觉中已经成为我们生活中不可或缺的存在 随着社会的发展 除了对系统的需求外 我们还要促进经济发展 提高工作效率
  • Mysql中设置只允许指定ip能连接访问(可视化工具的方式)

    场景 Mysql中怎样设置指定ip远程访问连接 Mysql中怎样设置指定ip远程访问连接 navicat for mysql 设置只有某个ip可以远程链接 CSDN博客 前面设置root账户指定ip能连接访问是通过命令行的方式 如果通过可视
  • 内网安全:隧道技术详解

    目录 隧道技术 反向连接技术 反向连接实验所用网络拓扑图及说明 网络说明 防火墙限制说明 实验前提说明 实战一 CS反向连接上线 拿下Win2008 一 使用转发代理上线创建监听器 二 上传后门执行上线 隧道技术 SMB协议 SMB协议介绍
  • 毕业设计:基于python人脸识别系统 LBPH算法 sqlite数据库 (源码)✅

    博主介绍 全网粉丝10W 前互联网大厂软件研发 集结硕博英豪成立工作室 专注于计算机相关专业 毕业设计 项目实战6年之久 选择我们就是选择放心 选择安心毕业 感兴趣的可以先收藏起来 点赞 关注不迷路 毕业设计 2023 2024年计算机毕业
  • 温室气体排放更敏感的模型(即更高的平衡气候敏感性(ECS))在数年到数十年时间尺度上也具有更高的温度变化(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Python代码 数据
  • 温室气体排放更敏感的模型(即更高的平衡气候敏感性(ECS))在数年到数十年时间尺度上也具有更高的温度变化(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Python代码 数据
  • SAP ERP系统是什么?SAP好用吗?

    A公司是一家传统制造企业 公司曾先后使用过数个管理软件系统 但各部门使用的软件都是单独功能 导致企业日常管理中数据流与信息流相对独立 形成了 信息孤岛 随着公司近年业务规模的快速发展以及客户数量的迅速增加 企业原有的信息系统在销售预测及生产
  • 【安全】简单解析统一身份认证:介绍、原理和实现方法

    深入解析统一身份认证 介绍 原理和实现方法 导语 统一身份认证是什么 统一身份认证的原理 统一身份认证的实现 结语 导语 随着互联网的发展和各种在线服务的普及 用户在不同的应用和平台上需要进行多次身份验证 为了简化用户的登录和减少重复操作
  • 【安全】Java幂等性校验解决重复点击(6种实现方式)

    目录 一 简介 1 1 什么是幂等 1 2 为什么需要幂等性 1 3 接口超时 应该如何处理 1 4 幂等性对系统的影响 二 Restful API 接口的幂等性 三 实现方式 3 1 数据库层面 主键 唯一索引冲突 3 2 数据库层面 乐

随机推荐

  • 目标跟踪算法分类

    本文转载自 https www cnblogs com necp zwl p 6486326 html 上一篇文章写了 跟踪颜色块 自我感觉优化的空间很大 转载他人文章学习一下 运动目标跟踪主流算法大致分类 主要基于两种思路 a 不依赖于先
  • File类和Directory类

    File类和Directory类分别用来对文件和各种目录进行操作 这两类可以被实例化 但不能被其他类集成 1 File类 静态类 File类支持对文件的基本操作 它包括用于创建 复制 删除 移动和打开文件的静态方法 并协助创建FileStr
  • 渗透测试-完整渗透流程(一.信息收集)

    信息收集 1 信息收集分为主动收集和被动收集 主动收集会被防守方发现 被动收集不会被发现 主动信息收集 通过直接访问 扫描网站 这种流量将流经网站 被动信息收集 利用第三方的服务对目标进行访问了解 比例 Google搜索 Shodan搜索等
  • 设计模式(狂神说)

    1p 12p设计模式概述 代码 创建型模式 结构型模式 将类或者对象按照某种布局组成更大的结构 行为型模式 描述类和对象之间相互协作 2p 12p OOP七大原则 开闭原则 对扩展开放 对修改关闭 里氏替换原则 继承必须确保超类所拥有的性质
  • JVM常见知识点

    目录 JVM主要组成部分及其作用 JVM主要包含两个子系统和两个组件 Java程序运行机制 双亲委派机制 类加载器 双亲委派模型 双亲委派机制存在的意义 举例 栈 堆 队列 堆栈区别 队列跟栈区别 Java垃圾回收 方法区是在堆里面吗 JV
  • 国务院建议探索区块链等技术缩短承兑期限

    摘要 产业动态 全球大学区块链能力排名 新加坡国立大学第一 清华第八 韩国记者协会与与PUBLISH合作 采用区块链技术改善新闻媒体生态系统 Ripple与卡塔尔国家银行达成合作 将为其推出新汇款服务 政策相关 国务院 建议探索以互联网和区
  • B站S11破亿直播在线稳定性保障秘籍——演讲实录

    英雄联盟 S11全球总决赛 决赛中国战队夺冠 赛事直播盛况空前 观赛人数破亿 B站作为英雄联盟2021全球总决赛直播独家版权方不仅在整个比赛过程中保证了直播整体总体运行的平稳 还抗住了超预期的流量 如此大型的直播活动 B站究竟是如何保障系统
  • HarmonyOS UI组件在线预览,程序员直呼“不要太方便~”

    原文 UI组件在线预览 程序员直呼 不要太方便 点击链接查看更多技术内容 一 介绍 以往大家如果想查看组件的使用效果 需要打开DevEco Studio构建工程 现在为了便于大家高效开发 文档上线了JS UI组件在线预览功能 无需本地构建工
  • MySQL分库分表 看完吊打面试官

    MySQL分库分表 看完吊打面试官 前言 一 业务场景介绍 二 水平分库分表方法 1 RANGE 2 HASH取模 3 一致性HASH 三 单元测试 总结 作者寄语 提示 下方有源代码地址 请自行拿取 前言 在互联网项目中比较常用到的关系型
  • linux命令详解及软件安装(全)

    环境搭建 环境搭建 Vmware 账号管理 开机关机 目录管理 文件管理 文件操作 touch cat tac more less grep wc vim 磁盘管理 iostat sar df du 内存管理 free CPU管理 top
  • 2023华为OD机试真题Java实现【士兵过河/动态规划】

    题目内容 一支N个士兵的军队正在趁夜色逃亡 途中遇到一条湍急的大河 敌军在T的时长后到达河面 没到过对岸的士兵都会被消灭 现在军队只找到了1只小船 这船最多能同时坐上2个士兵 1 当1个士兵划船过河 用时为 a i 0 lt i lt N
  • 记录vue js-table2excel 导出带有多张图片到Excel

    新建js table2excel js文件 eslint disable let idTmr const getExplorer gt let explorer window navigator userAgent ie if explor
  • Springmvc拦截器三个方法的执行时机

    一 拦截器三个方法分别是 1 1 preHandle 预处理回调方法 实现处理器的预处理 如登录检查 第三个参数为响应的处理器 如具体的Controller实现 返回值 true表示继续流程 如调用下一个拦截器或处理器 false表示流程中
  • 微信小程序与应用服务的关系和“代码安全“

    今天给客户回答了下小程序项目的代码安全问题 他担心源代码提交以及发布系统后被第三方知晓源代码 导致代码泄露 虽然作为程序员来说 这个问题不用考虑 但是非技术人员似懂非懂 所以我还是做了一个解释 一般做微信小程序开发 需要知道微信小程序只是纯
  • 记录PaddleOcr的使用2 -- GPU

    项目场景 之前使用了cpu 但是效率感人 所以想尝试一下GPU的版本 安装环境 windows下使用的 别问 问就是没有有GPU的服务器 1 python 3 7 如果是linux建议3 8 2 pip 版本 20 2 2或更高版本 64
  • LALR(1)语法自动分析生成器Mathew

    首次写博客 文采不好大家不要见笑额 简介 Mathew 马修 马修名字源于 魔力女管家 里的星神马修 马修是一个LALR 1 型活动板房式的语法自动分析生成器 马修继承了Lemon 也许大家对LEX和YACC比较熟悉 这两个工具配合使用可以
  • 记录Chrome截屏整个页面的命令

    F12 右键检查 进入开发者工具 调出命令 MAC command shift P Window ctrl shift P 输入命令 capture full size screenshot
  • C/C++如何输入包含空格的字符串

    对于C 字符串的输入我们看一下下面这段代码 string s 定义空字符串 cin gt gt s 输入字符串 cout lt lt s 打印 但我们会发现如果我们输入了还有空格的字符串 s里读入的字符串遇到空格 回车 tab都会结束 比如
  • 目前 AIGC 工具到底能帮我们做什么?

    最近直播超级多 预约保你有收获 今天腾讯发布了混元大模型 大模型赛道越来越内卷了 今天咱们来聊聊目前的 AIGC 工具能帮助我们做什么 AIGC 的本质是由 AI 来生产内容 通过自然语言交互的方式 让 AIGC 工具输出内容 AIGC 工
  • 20-文件下载及读取漏洞

    WEB 漏洞 文件操作之文件下载读取全解 思维导图 1 文件被解析 则是文件解析漏洞 2 显示源代码 则是文件读取漏洞 3 提示文件下载 则是文件下载漏洞 文件下载漏洞 利用条件 1 存在读文件的函数和操作 2 读取文件的路径用户可控且未校