从零开始的白帽子学习--stage1--常见漏洞类型介绍--part3--不安全的文件上传

  • Q:什么是文件上传漏洞
  • A:文件上传功能在web应用系统很常见,比如很多网站注册的时候需要上传头像、上传附件等等。当用户点击上传按钮后,后台会对上传的文件进行判断 比如是否是指定的类型、后缀名、大小等等,然后将其按照设计的格式进行重命名后存储在指定的目录。 如果说后台对上传的文件没有进行任何的安全判断或者判断条件不够严谨,则攻击着可能会上传一些恶意的文件,比如一句话木马,从而导致后台服务器被webshell。所以,在设计文件上传功能时,一定要对传进来的文件进行严格的安全考虑。比如:验证文件类型、后缀名、大小,验证文件的上传方式,对文件进行一定复杂的重命名,不要暴露文件上传后的路径等。
  • Q:文件上传时校验的姿势有哪些
  1. 客户端JavaScript校验客户端校验一般只检查文件的后缀名,有白名单和黑名单
  2. 服务端校验。服务端校验又有多种校验方式。如:文件头中content-type校验,文件内容头校验,后缀黑白名单检查,自定义正则表达式检查等
  3. WAF检查
  • Q:绕过校验的姿势有哪些
  1. 对于客户端校验来说,禁止浏览器使用js
  2. 对于服务端校验,大部分情况下通过burp抓包即可绕过。检查啥改啥就可以了
  3. 对于WAF检查,略
  • 靶场实验

这里以pikachu靶场为例子来演示文件上传漏洞

此时,我们可以看到这里只支持上传图片文件,不允许上传其他类型的文件,那么我们先上传一下php文件尝试一下(文件内包含一句话木马),然后根据提示来确定他是什么类型的校验方式。

根据网站的报错提示,查看相应的元素代码之后发现这是一个js的弹窗。那么我们只需要禁用js就可以绕开这个检测。在禁用js刷新页面之后,发现1.php文件就可以正常上传了

切换一下校验的种类,切换到服务端校验,选择1.php文件,然后上传。在上传时使用burp抓包

网站提示上传的格式不对。然后我们上传一个正常的,能通过网站检测的文件,并使用burp抓包,对比前后两次抓包数据的区别。这里通过对比之后发现content-type有变化。

我们再次尝试上传1.php文件,并在抓包后修改 content-type image/jpeg。然后将修改之后的数据包发送到burp的repeater中,模拟上传,看能否通过服务器验证

ok了,模拟上传成功了。那么就说明这样绕过检测的姿势是正确的。

由于本人学识有限,暂时就不实验其他的检测方式和检测方式,待日后补充

原文地址:https://www.cnblogs.com/primabrucexu/p/11164178.html

时间: 2024-10-15 16:03:44

从零开始的白帽子学习--stage1--常见漏洞类型介绍--part3--不安全的文件上传的相关文章

Spring 4 官方文档学习(十一)Web MVC 框架之multipart(文件上传)支持

http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-multipart 1.简介 Spring内置的multipart支持会处理web应用中的文件上传.你可以启用该支持 -- 通过可插拔的MultipartResolver对象们,它们都是定义在 org.springframework.web.multipart 包中.Spring提供了一个MultipartResolver实

WEB安全性测试之文件上传漏洞

1.漏洞描述:文件上传漏洞,是指可以利用WEB上传一些特定的文件包含特定代码如(<?php phpnfo;?> 可以用于读取服务器配置信息.上传成功后可以点击) 上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力.文件上传本身是web中最为常见的一种功能需求,关键是文件上传之后服务器端的处理.解释文件的过程是否安全.一般的情况有: 1.上传Web脚本语言,服务器的WEB容器解释并执行了用户上传的脚本,导致代码执行,篡改主页 2.上传Flash策略文件cro

文件上传下载中的安全问题(上传漏洞与目录遍历攻击)

前言 文件上传与下载是项目中经常需要提供的功能,不管是哪个web应用几乎都可以找到.那本屌今天就来说一说我们在开发中的疏忽可能导致的问题. 先建立一个web工程,目录结构如下 文件上传漏洞 我们来看看下面这段文件上传代码,使用的是common-fileupload.jar 和common-io.jar UploadServlet.java 访问路径/UploadServlet /** * 文件上传 */ protected void doPost(HttpServletRequest reque

1.5 webshell文件上传漏洞分析溯源(1~4)

webshell文件上传漏洞分析溯源(第一题) 我们先来看基础页面: 先上传1.php ---->   ,好吧意料之中 上传1.png  ---->   我们查看页面元素 ----->   ,也没有前端验证 看来只能用burp抓包来改包绕过,我们修改1.php  ---->   1.php .png ,然后上传抓包改包 0x20 -----> 0x00 webshell文件上传漏洞分析溯源(第一题) 我们先来看基础页面: 先上传1.php ---->   ,好吧意料之中

网站漏洞修复之UEditor漏洞 任意文件上传漏洞 2018 .net新

UEditor于近日被曝出高危漏洞,包括目前官方UEditor 1.4.3.3 最新版本,都受到此漏洞的影响,ueditor是百度官方技术团队开发的一套前端编辑器,可以上传图片,写文字,支持自定义的html编写,移动端以及电脑端都可以无缝对接,自适应页面,图片也可以自动适应当前的上传路径与页面比例大小,一些视频文件的上传,开源,高效,稳定,安全,一直深受站长们的喜欢. 百度的UEditor文本编辑器,近几年很少被曝出漏洞,事情没有绝对的,总会有漏洞,这次被曝出的漏洞是.net版本的,其他的php

CVE-2018-20129:DedeCMS V5.7 SP2前台文件上传漏洞

一.漏洞摘要 漏洞名称: DedeCMS V5.7 SP2前台文件上传漏洞上报日期: 2018-12-11漏洞发现者: 陈灿华产品首页: http://www.dedecms.com/软件链接: http://updatenew.dedecms.com/base-v57/package/DedeCMS-V5.7-UTF8-SP2.tar.gz版本: DedeCMS V5.7 SP2正式版CVE编号: CVE-2018-20129 二.漏洞概述 下载最新版本的dedecms源码,在本地安装完成后,

《白帽子讲WEB安全》学习笔记之第8章 文件上传漏洞

第8章 文件上传漏洞 8.1 文件上传漏洞概述 文件上传漏洞是指用户上传一个可执行的脚本文件,并通过此脚本文件活动执行服务器端的能力. 原理:由于文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,导致允许攻击者向某个可通过 Web 访问的目录上传任意PHP文件. 文件上传漏洞安全问题: q  上传文件是WEB脚本文件,服务器的WEB服务器解释并执行了用户上传的脚本,导致代码执行: q  上传文件是Flash的策略文件crossdomain.xml,黑客用以控制Flash在该域下的行

任意文件上传漏洞

漏洞产生原因:①代码层:开发者在编写代码的时候不严谨,未对文件上传的合法性进行检验: ②应用层:web容器漏洞,cgi,配置不当: 有网站到服务器上传文件的常用检测手段:①js(一般是检测文件后缀名)-可修改本地js代码或通过浏览器自带功能"No-script"进行绕过: ②服务器端MIME检测-对contenttype的额检测:   ③服务端目录路径检测,一般是检测目录路径是否合理,漏洞原因是对目录路径的检测不够严谨,可以用0x00截断进行攻击 ④服务器端文件拓展名检测绕过,分为白名

owasp文件上传漏洞简析

0x01: 文件上传漏洞起因于,上传程序没有对上传文件格式进行正确判断,导致可执行程序上传到网站目录. 常见的验证上传文件有两种:1.js本地验证,通过js获取上传文件后缀名,并和白名单比较,匹配则上传成功.由于js代码是本地验证,存在绕过风险(去除js代码,构造表单数据,直接绕过). 2.后端程序验证,通过post数据到file_upload()函数,$_FILES['file']['type']判断上传程序后缀名. function file_upload(){ $file_name = $