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

思维导图

  • 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 rootC:\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>打开显示如下,点击人名可以下载对应图片。

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

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

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

http://192.168.31.128/pi/vul/unsafedownload/execdownload.php?filename=../execdownload.php//判断出在上级目录所以使用一个../

如果直接访问

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

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

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

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

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

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

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

扫出敏感文件:

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

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

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

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

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

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

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

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

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

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

<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

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

案例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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<2>首页抓包

看到login=0,

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

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

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

<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的方式下载文件

20-文件下载及读取漏洞相关推荐

  1. php 打开任意文件下载,TEC-004-php文件下载任意文件读取漏洞修复

    修改download?u参数值,将/public/files/14842030529.txt,替换为../../../../../../../../../../etc/passwd function ...

  2. Windows任意文件读取漏洞

    低权限用户或恶意程序能够读取目标Windows计算机上任何文件的内容,设想你取得了一个普通权限,还能干吗,用该漏洞作者SandboxEscaper的一句话来说,也许是密码文件,我不够聪明,不知道能干吗 ...

  3. CISCO ASA任意文件读取漏洞复现 (CVE-2020-3452)

    CISCO ASA任意文件读取漏洞复现 (CVE-2020-3452) 一.漏洞描述: Cisco Adaptive Security Appliance (ASA) 防火墙设备以及Cisco Fir ...

  4. 7天学习Go语言-尾声+一次险些翻车的任意文件读取漏洞小记

    接口 接口的定义 接口(interface )类型是对其他类型行为的概括和抽象,接口类型定义了一组方法,但是不包括这些方法的具体实现 接口本质是一种指针类型,可以实现多态功能.如果一个类型实现了某个接 ...

  5. CISCO ASA设备任意文件读取漏洞复现 (CVE-2020-3452)

    漏洞描述 Cisco Adaptive Security Appliance (ASA) 防火墙设备以及Cisco Firepower Threat Defense (FTD)设备的WEB管理界面存在 ...

  6. Web漏洞-任意文件读取漏洞

    任意文件读取漏洞 原理 任意文件读取是属于文件操作漏洞的一种,通过提交专门设计的输入,攻击者就可以在被访问的文件系统中读取或写入任意内容,往往能够使攻击者从服务器上获取敏感文件,正常读取的文件没有经过 ...

  7. 安全研究 | Jenkins 任意文件读取漏洞分析

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由云鼎实验室 发表于云+社区专栏 一.漏洞背景 漏洞编号:CVE-2018-1999002 漏洞等级:高危 Jenkins 7 月 18 ...

  8. .exp文件_mini_httpd 任意文件读取漏洞(附EXP脚本)

    一.环境搭建: 进入镜像目录: cd vulhub/mini_httpd/CVE-2018-18778 启动环境: docker-compose up -d 访问8088端口 二.漏洞描述: Mini ...

  9. gitlab 更新文件_GitLab任意文件读取漏洞公告

    2020年4月28日,GitLab的一个任意文件读取漏洞的漏洞细节被公开.该漏洞补丁于2020年3月26号由GitLab官方发布.深信服安全研究团队依据漏洞重要性和影响力进行评估,作出漏洞通告. 漏洞 ...

最新文章

  1. [云炬创业基础笔记]第一章创业环境测试11
  2. A start job is running for Raise network interface(5min 13s )问题解决方法
  3. 机器人 知乎碧桂园_碧桂园:机器人不独行
  4. pattern in java_Java里的生产者-消费者模型(Producer and Consumer Pattern in Java)
  5. (1)数据库和MySql初步认识
  6. Caffe、TensorFlow、MXnet三个开源库对比+主流分类模型对比
  7. pyinstaller 用法
  8. 解构流存储 — Pravega,与 Flink 构建端到端的大数据流水处理线
  9. 怎么用计算机扫描照片,怎么扫描图片上的文字-无需扫描仪,教你三招轻松搞定文字识别!...
  10. Linux brctl 详解
  11. 超全汇总 | 基于Camera的3D目标检测算法综述!(单目/双目/伪激光雷达)
  12. SQLI DUMB SERIES-8
  13. Python 骚操作:微信远程控制电脑(转载)
  14. cadence 页间连接符标号的 删除,添加,更新
  15. 网易我的世界中国版服务器存档文件在哪里,网易我的世界怎么导入存档 网易中国版手游存档位置...
  16. 正向代理与反向代理的区别,为什么要有正向代理和反向代理
  17. python import logging
  18. 谁动了我的奶酪 读后感
  19. 字节跳动李航入选ACL Fellow,他曾这样看待机器学习
  20. Kaldi入门教程 aishell脚本

热门文章

  1. rk3568 Android 适配红外遥控器
  2. 逆向破解之160个CrackMe —— 027
  3. ETL常用的三种工具介绍及对比Datastage,Informatica
  4. 【详讲】微信小程序分包流程步骤
  5. AKS (Azure Kubernetes Service)如何查看日志
  6. 读书有益——》散文诗(一)
  7. 管理软件到底有没有前途(二)-从《大败局》和日式管理来看
  8. 使用Navicat连接SSH百度云服务器上的MySQL
  9. debug省略内部一些调用栈问题
  10. 微信支付的支付流程涉及哪些接口