一、文件下载漏洞

1.1 概述

    很多网站都会提供文件下载的功能,即用户可以通过点击下载链接,下载到链接所对应的文件。但是,如果文件下载功能设计不当,则可能导致攻击者可以通过构造文件路径,从而获取到后台服务器上的其他的敏感的文件。(又称:任意文件下载)

1.2 演示

1、我们打开pikachu平台上的对应的模块;

2、看到下载提示页面

3、我们为了演示,在名字上我们右击选择在新建标签页中打开。

4、那我们是否可以更改filename的值来获取到后台其他的文件?我们来试一下

5、下面我们来看一下代码。

二、不安全的文件上传及客户端绕过

2.1 概述

因为业务功能的需要,很多web站点都有文件上传的接口,例如:

  1. 注册时上传头像文件(比如jpg,png,gif)
  2. 上传文件附件(doc,xls)

但是,如果在后台开发时,并没有对上传的文件功能进行安全考虑或者采用了有缺陷的措施,导致攻击者可以通过一些手段绕过安全措施从而上传一些恶意的文件(例如:一句话木马),从而通过对该恶意文件的访问来控制整个web后台。

文件上传漏洞测试流程如下:

2.2 客户端验证绕过

1、我们来到对应的模块下。

2、我们查看一下页面源代码。

3、我们可以打开页面控制台选择器,选择对应的组件,取消对checkFileExt()函数的调用。

4、上传我们的system.php文件,文件内容是:<?php system($_GET[x]);?>

5、访问我们的一句话木马文件,获取主机IP地址。

2.3 服务端验证绕过

2.3.1 MIME

1、MIME简介

2、$_FILES()函数简介

3、来到对应额mime模块。我们先看一下源代码。

接着我们看upload函数

4、回到我们的实验平台。打开burp suite。分别上传一次允许被上传的图片文件和不允许上传的其它类型文件(这里我们上传一句话木马文件system.php)

5、通过对比我们发现了不同,我们利用burp suite的重放模块,修改Content-Type的值,达到绕过的目的。

6、通过访问我们上传的文件,就可以进行系统的控制。

2.3.2 getimagesize

    getimagesize()会读取图片16进制文件的头几位,从而加以判断,返回的结果中包含了文件的大小和类型,如果用这个函数来获取类型,从而判断是否是图片,会存在问题。

1、我们可以制作一张木马图片,首先我们准备一张图片和一个php文件,在文件里写入:<?php phpinfo();?> 用来获取数据库信息。

2、在命令窗口执行:copy /b kb.png + system.php result.png

3、我们将刚刚生成的图片木马上传至我们的站点。

4、现在我们有一个问题,虽然我们绕过了后台的防护机制,由于我们上传的是一个图片,我们访问这个文件也只会显示一张图片,并不会执行我们嵌入到里边的PHP代码,那么我们该如何利用呢?我们可以结合文件包含漏洞进行测试。

回车后我们可能看不到结果,这说明我们的文件定位还不完全,那么我们累加../直到有结果输出为止。

2.4 防范措施

pikachu-不安全的文件下载和上传的更多相关文章

  1. Pikachu漏洞练习平台实验——不安全的文件下载和上传(七)

    1.不安全的文件下载 1.1.概述 文件下载功能在很多web系统上都会出现,一般我们当点击下载链接,便会向后台发送一个下载请求,一般这个请求会包含一个需要下载的文件名称,后台在收到请求后 会开始执行下 ...

  2. idtcp实现文件下载和上传

    unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...

  3. day58:Linux:BashShell&linux文件管理&linux文件下载上传

    目录 1.BashShell 2.Linux文件管理 3.Linux文件下载和上传 BashShell 1.什么是BeshShell? 命令的解释,用来翻译用户输入的指令 2.BashShell能做什 ...

  4. [实战]MVC5+EF6+MySql企业网盘实战(12)——新建文件夹和上传文件

    写在前面 之前的上传文件的功能,只能上传到根目录,前两篇文章实现了新建文件夹的功能,则这里对上传文件的功能进行适配. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战] ...

  5. web开发实战--图片裁剪和上传

    前言: 最近的开发中, 有一个上传头像的任务. 由于头像本身的特殊性, 其一般流程为选择图片, 编辑裁剪区域, 再继而上传图片操作. 看似简单的东西, 实则是挺麻烦的一件事. 借助这次开发机会, 来具 ...

  6. 基于uploadify.js实现多文件上传和上传进度条的显示

    uploadify是JQuery的一个插件,主要实现文件的异步上传功能,可以自定义文件大小限制.文件类型.是否自动上传等属性,可以显示上传的进度条.官网地址是http://www.uploadify. ...

  7. 重新想象 Windows 8 Store Apps (66) - 后台任务: 下载和上传

    [源码下载] 重新想象 Windows 8 Store Apps (66) - 后台任务: 下载和上传 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 后台任务 后台 ...

  8. 重新想象 Windows 8.1 Store Apps (91) - 后台任务的新特性: 下载和上传的新特性, 程序启动前预下载网络资源, 后台任务的其它新特性

    [源码下载] 重新想象 Windows 8.1 Store Apps (91) - 后台任务的新特性: 下载和上传的新特性, 程序启动前预下载网络资源, 后台任务的其它新特性 作者:webabcd 介 ...

  9. div+css网页本地上和上传到服务器后在IE11上看到的效果不一样?

    div+css网页本地上和上传到服务器后在IE11上看到的效果不一样? 解决办法在html的head里加上一段:<meta http-equiv="X-UA-Compatible&qu ...

随机推荐

  1. 字典 pop

    1.pop(key) 删除键值对,返回value2.若字典中没有这个key,则返回None,也可以自定义3.可用作if条件判断 来源: rest framework 框架 Serializer que ...

  2. kafka 中 zookeeper 具体是做什么的?

    zookeeper 是 kafka 不可分割的一部分,可见其重要程度,所以我们有必要了解一下 zookeeper 在 kafka 中的具体工作内容. 而且,这也是面试时经常问的. zookeeper ...

  3. Treap基本用法总结

    Treap=Tree+Heap  起名的人非常有才 Treap是啥? 一棵二叉搜索树可能退化成链,那样各种操作的效率都比较低 于是可爱的Treap在每个节点原先值v的基础上加了一个随机数rnd,树的形 ...

  4. Maven: 互联网开发常用的jar以及版本pom.xl文件

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  5. 娱乐往事,年初捡到1G PAR,平淡的日子泛起波澜

    常听说这样的故事 垃圾佬捡到蓝牙键盘,于是配了一台上万的电脑 垃圾佬捡到机箱,于是配了一台带遥控的HTPC 垃圾佬捡到假NAS,于是组了20+T的RAID 而我,不是垃圾佬,更没有捡到过U盘,对突如其 ...

  6. ros之参数的使用与编程方法

    参数模型 ROS Master (Parameter Server) /robot_name: "my_robot"        ----{Node A   Node B} /r ...

  7. 7、EIGRP

    EIGRP Cisco私有协议1.高级距离矢量路由协议(混杂型hybrid)单播和组播结合,组播更新地址: 224.0.0.10 2.最快速收敛 (使用Diffusing Update 算法(DUAL ...

  8. Spring Boot自动装配原理源码分析

    1.环境准备 使用IDEA Spring Initializr快速创建一个Spring Boot项目 添加一个Controller类 @RestController public class Hell ...

  9. Codeforces_462_B

    http://codeforces.com/problemset/problem/462/B 简单的贪心,排序即可看出来. #include<cstdio> #include<ios ...

  10. (六)mybatis拦截器

    首先拦截器可以拦截mybatis四大核心对象:StatementHandler,ParameterHandler,ResultSetHandler,Executor,具体拦截时根据需求拦截一部分方法 ...