pikachu-不安全的文件下载和上传
一、文件下载漏洞
1.1 概述
很多网站都会提供文件下载的功能,即用户可以通过点击下载链接,下载到链接所对应的文件。但是,如果文件下载功能设计不当,则可能导致攻击者可以通过构造文件路径,从而获取到后台服务器上的其他的敏感的文件。(又称:任意文件下载)
1.2 演示
1、我们打开pikachu平台上的对应的模块;
2、看到下载提示页面
3、我们为了演示,在名字上我们右击选择在新建标签页中打开。
4、那我们是否可以更改filename的值来获取到后台其他的文件?我们来试一下
5、下面我们来看一下代码。
二、不安全的文件上传及客户端绕过
2.1 概述
因为业务功能的需要,很多web站点都有文件上传的接口,例如:
- 注册时上传头像文件(比如jpg,png,gif)
- 上传文件附件(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-不安全的文件下载和上传的更多相关文章
- Pikachu漏洞练习平台实验——不安全的文件下载和上传(七)
1.不安全的文件下载 1.1.概述 文件下载功能在很多web系统上都会出现,一般我们当点击下载链接,便会向后台发送一个下载请求,一般这个请求会包含一个需要下载的文件名称,后台在收到请求后 会开始执行下 ...
- idtcp实现文件下载和上传
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...
- day58:Linux:BashShell&linux文件管理&linux文件下载上传
目录 1.BashShell 2.Linux文件管理 3.Linux文件下载和上传 BashShell 1.什么是BeshShell? 命令的解释,用来翻译用户输入的指令 2.BashShell能做什 ...
- [实战]MVC5+EF6+MySql企业网盘实战(12)——新建文件夹和上传文件
写在前面 之前的上传文件的功能,只能上传到根目录,前两篇文章实现了新建文件夹的功能,则这里对上传文件的功能进行适配. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战] ...
- web开发实战--图片裁剪和上传
前言: 最近的开发中, 有一个上传头像的任务. 由于头像本身的特殊性, 其一般流程为选择图片, 编辑裁剪区域, 再继而上传图片操作. 看似简单的东西, 实则是挺麻烦的一件事. 借助这次开发机会, 来具 ...
- 基于uploadify.js实现多文件上传和上传进度条的显示
uploadify是JQuery的一个插件,主要实现文件的异步上传功能,可以自定义文件大小限制.文件类型.是否自动上传等属性,可以显示上传的进度条.官网地址是http://www.uploadify. ...
- 重新想象 Windows 8 Store Apps (66) - 后台任务: 下载和上传
[源码下载] 重新想象 Windows 8 Store Apps (66) - 后台任务: 下载和上传 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 后台任务 后台 ...
- 重新想象 Windows 8.1 Store Apps (91) - 后台任务的新特性: 下载和上传的新特性, 程序启动前预下载网络资源, 后台任务的其它新特性
[源码下载] 重新想象 Windows 8.1 Store Apps (91) - 后台任务的新特性: 下载和上传的新特性, 程序启动前预下载网络资源, 后台任务的其它新特性 作者:webabcd 介 ...
- div+css网页本地上和上传到服务器后在IE11上看到的效果不一样?
div+css网页本地上和上传到服务器后在IE11上看到的效果不一样? 解决办法在html的head里加上一段:<meta http-equiv="X-UA-Compatible&qu ...
随机推荐
- make_safe
from django.utils.safestring import mark_safe mark_safe('<input type="checkbox" id=&quo ...
- [分块][bitset][RMQ]区间
源自 ditoly 大爷的 FJ 省队集训模拟赛题 Statement 给定一个长度为 \(n\) 的序列 \(a\) ,有 \(m\) 次询问 每次询问给出一个 \(k\) ,再给出 \(k\) 个 ...
- 最新中级java面试总结
最近面试了不少家公司,从一家非外包跳到了外包(委屈脸Ծ‸Ծ),下面总结一下最近的一些心得体会 1.如果在做技术只是为了过日子,而没多大兴趣,那你必须需要考虑一下行业发展方向了.选定一个行业,深入某个行 ...
- 基于javaSwing的贪食蛇游戏
这个项目时,是我好几年前写的了.但对刚入门,或者想瞧瞧java的图形的界面swing的同学,还是有点用处的. 在这推荐给你. 涉及技术点 swing,多线程,文件读写,多媒体文件播放等 游戏简介 该游 ...
- Firebase REST API
use firebase and firesharp to do a Library management system . look github.com/ziyasal/FireSharp
- Linux 高压缩率工具 XZ 压缩详解
目录 一.XZ 基础信息 二.安装 三.详解 3.1.常用的参数 3.2. 常用命令 四.扩展 4.1.unxz 4.2.xzcat 4.3.lzma 4.4.unlzma 4.5.lzcat 一.X ...
- Redis 面试题汇总
Redis 面试题汇总 1.Redis 使用场景有哪些? 答:Redis 使用场景如下: 记录帖子点赞数.点击数.评论数 缓存近期热帖 缓存文章详情信息 记录用户会话信息 2.Redis 有哪些功能? ...
- 解决git报错:error: RPC failed; curl 18 transfer closed with outstanding read data remaining 的方法
报错信息: error: RPC failed; curl 18 transfer closed with outstanding read data remainingfatal: the remo ...
- 暑假第二周总结(在centos系统中安装eclipse出错,改为安装ubantu)
本周试着在centos6.4系统上安装eclipse,在林子雨老师的教程所给的链接无法下载,后来找了许多的教程,即便是从官网下载之后,即便是安装好之后eclipse都无法正常启动,后来翻阅借阅的图书后 ...
- 12、PPP和HDLC
PPP主要包括三个部分1. 在串行链路上封装上层数据报文的方法2. LCP(link control protocals): 链路控制协议来配置和测试数据通信链路,协商PPP协议的配置参数 ...