整理完自己还有点晕,看来还是得找点靶场自己练习练习Orz

1:客户端JavaScript校验

Burp改包即可

2:服务端对Content-Type进行校验

猜测后,修改对应Content-Type字段

.JPEG;.JPE;.JPG JPGGraphic File

.gif GIF 89A

.zip Zip Compressed

.doc;.xls;.xlt;.ppt;.apr MS Compound

3:文件头绕过
GIF89a<?php phpinfo();?>

或构造图片马,将恶意文本写入图片的二进制代码,避免破坏文件头和尾

一般文件内容的检测使用getimagesize()函数检测,会判断文件是否是有效的图片文件,如果是,则允许上传,否则的话,不允许上传,用下面的命令制作图片木马,如果上传成功改后缀名上传。

Copy xx.jpg/b + yy.txt/a xy.jpg

/b 即二进制模式

/a 即AscII模式 xx.jpg正常图片文件

4:文件后缀绕过

前提:黑名单绕过

黑名单检测一般有个专门的blacklist文件,里面会包含常见的危险脚本

绕过只能找扩展名的漏网之鱼(能被中间件解析) 比如asa和cer之类

可能存在大小写绕过漏洞-比如aSp和pHp之类

能被解析的文件拓展名列表
jsp jspx jspf

asp asa cer aspx cdx

php pht php4 php5

5:结合解析漏洞绕过
IIS
6.0版本中会将a.asp;xx.jpg解析成asp,原因是被;符号截断了。还存在一个目录解析,会将a.asp/目录下文件解析成asp文件,前提是本地确实存在这样的文件或环境

7.5版本中xyz.jpg/.php会被解析成php文件

例子:

目录解析(IIS 6.0)

形式:WWW.XXX.com/xxx.asp/xxx.jpg

原理:服务器默认会把.asp,,asp目录下的文件都解析成asp文件。

文件解析

形式:WWW.XXX.com/xx.asp/xxx.jpg

原理:服务器默认不解析;号后面的内容,因此xxx.asp;.jpg便被解析成asp文件了

APACHE

apache: webshel.php. XXX. XXA. XXB module方式解析php文件的情况下,由于mime. types配置里没有XX文件类型,不认识就往前遍历解析,直到解析到为止.php(1x,2x),

还有个关于 Addtype和 Addhandlere的配置问题, Addtype指令在给定的文件扩展名与特定的内容类型之间建立映射关系。MME-type指明了包含extension扩展名的文件的媒体类型。

而 Addhandler指令的作用是:在文件扩展名与特定的处理器之间建立映射比如: Addhandler php5-script.php就是指定扩展名为.php的文伶应被php5- srcipt处理器来处理。

Addtype是与类型表相关的,描述的是扩展名与文件类型之间的关系。

Addhandler说明什么样的疒展名使用什么样的程序来处理,描述的是扩展名与处理程序之间的关系.

Addtype中application/x-httpd-php.jpg后缓名ipg文件会被当成php解析而Addhandler php5-script.Jpg的话,只要文件名中包含jpg字符串就会被当成php解析

NGINX

在php配置为 fast-cgia的应用中,由于patino模式(参数cgi.fix_pathinfo)的开启,在映射URI的时候,如果是解析xxx/111.jpg/222.php.

其中 SCRIPT NAMES会是xxx/111jpg/222.php,当开启 fix_pathinfo的时候,由于222.php不存在,会被丢弃掉,所以111.jpg会被作为PHP脚本解析。(IIS也存在过相同问题,主要是后缀是

php就扔给php处理了).

6:配合操作系统命名规则

上传不符合windows文件命名规则的文件名

test.asp

test.asp(空格)

test.php:1.jpg

test.php::$DATA

shell.php::$DATA......

会被windows系统自动去掉不符合规则符号后面的内容

linux下后缀名大小写

在linux下,如果上传php不被解析,可以试试上传pHp后缀的文件名

7:分布式配置文件(文件重写) 绕过

htaccess文件(或者"分布式配置文件”)提供了针对目录改变配置的方法,即在一个特定的文栏目录中放置一个包含一个或多个指令的文件,
作用于此目录及其所有子目录。用户可以利用此文件定义解析文件的后缀,从而进行恶意利用。
口分布式配置文件上传漏洞的实例
1.建立 stance文件内容如下:
<FilesMatch "cimer" >
Sethandler application/x-httpd-php
</Files Match>
并将其上传至服务器中

2.上传php木马文件名包含cmer

8:0X00截断

目录路径检测一般就是检测上传的路径是否合法,一旦程序员在写程序的时候对文件的上传路径过滤不严格就很有可能产生0x00上传截断漏洞。

假设文件的上传路径为.http://x.x.x.x/upfiles/hello.php.gif

通过抓包截断将hello.php后面的换成0×O0,当上传的时候,当文件系统读到0X00的时候,会认为文件已经结束,从而将hello.php.gif中的内容写入到hello.php中从而达到攻击目的

文件上传Upload 学习笔记的更多相关文章

  1. Web文件上传靶场 - 通关笔记

    Web应用程序通常会提供一些上传功能,比如上传头像,图片资源等,只要与资源传输有关的地方就可能存在上传漏洞,上传漏洞归根结底是程序员在对用户文件上传时控制不足或者是处理的缺陷导致的,文件上传漏洞在渗透 ...

  2. vue ----element-ui 文件上传upload 组件 实现 及其后台

    1.前台 action 不用改 :https://jsonplaceholder.typicode.com/posts/ getFile: 获取文件 data(){ return { file: {} ...

  3. 文件上传Upload 漏洞挖掘思路

    1:尽可能多的找出网站存在的上传点2:尝试使用如上各种绕过方法3:尝试 geshell4:无法上传webshel的情况下: 尝试上传html等,或可造成存储XSS漏洞 上传点构造XSS等,结合上传后的 ...

  4. 6.学习springmvc的文件上传

    一.文件上传前提与原理分析 1.文件上传必要前提: 2.文件上传原理分析: 3.需要引入的jar包: 二.传统方式文件上传程序 1.pom.xml <dependency> <gro ...

  5. 功能强大的文件上传插件带上传进度-WebUploader

    WebUploader是由Baidu WebFE(FEX)团队开发的一个以HTML5/FLASH构建的现代文件上传组件.在现代的浏览器里面能充分发挥HTML5的优势,同时又不摒弃主流IE浏览器,沿用老 ...

  6. Struts2 单个文件上传/多文件上传

    1导入struts2-blank.war所有jar包:\struts-2.3.4\apps\struts2-blank.war 单个文件上传 upload.jsp <s:form action= ...

  7. Javascript Fromdata 与jQuery 实现Ajax文件上传以及文件的删除

    前端HTML代码: <!DOCTYPE html> <html> <head> <title>ajax</title> <script ...

  8. Django之Ajax文件上传

    请求头ContentType ContentType指的是请求体的编码类型,常见的类型共有3种: 1 application/x-www-form-urlencoded(看下图) 这应该是最常见的 P ...

  9. SpringBoot2 上传文件 上传多文件

    项目结构: 1.单文件上传 upload.html <!DOCTYPE html> <html lang="en"> <head> <me ...

随机推荐

  1. 毕业三年从月薪6K到20K

    首先,声明这不是标题党,是一个真实的北漂故事!     为什么写这篇文章呢?第一,有感而发,感恩遇到的人和事,其次,希望对读这篇文章的你有所帮助 毕业那年 时间追溯到17年6月30号,那天毕业典礼,之 ...

  2. mybatis generator 的日常使用

    一.mybatis-generator的基本配置与使用 使用mybatis-generator来生成常用的dao层类与xml,可以满足基础的增删改查功能 1. 添加pom依赖,常用的几个依赖包 < ...

  3. Onedrive分享型网盘搭建 - OneManager

    注册账号 部署OneManager 注册完账号后打开网址:https://heroku.com/deploy?template=https://github.com/qkqpttgf/OneManag ...

  4. 发布一个自己做的图片转Base64的软件,Markdown写文章时能用到

    markdownpic 介绍 Markdown编辑时图片生成base64 软件架构 使用了.netcore winform框架 安装教程 直接运行即可 使用说明 拖拽图片文件 双击选择文件 复制粘贴图 ...

  5. 从css属性和布局来说明一下,行类元素和行类块元素和块元素的区别

    //布局 inline: 如果水平宽度足够大,那么将在一行显示 inline-block: 如果水平宽度足够大,那么将在一行显示 block: 独占一行 //css属性 inline: 无法设置高度, ...

  6. DJANGO-天天生鲜项目从0到1-009-购物车-Ajax实现添加至购物车功能

    本项目基于B站UP主‘神奇的老黄’的教学视频‘天天生鲜Django项目’,视频讲的非常好,推荐新手观看学习 https://www.bilibili.com/video/BV1vt41147K8?p= ...

  7. Python 写入excel时的字体格式设置

    转自:https://blog.csdn.net/kuangzhi9124/article/details/81940919 下面代码设置了单元格的字体.位置居中.框线,可以将格式调成自己需要的 im ...

  8. 使用brew services管理服务

    简介 官网: https://github.com/Homebrew/homebrew-services macOS使用launchctl命令加载开机自动运行的服务,brew service可以简化l ...

  9. state实例

    States是SaltStack中的配置语言,在日常进行配置管理时需要编写大量的States文件. 比如我们需要安装一个包,然后管理一个配置文件,最后保证某个服务正常运行. 这里就需要我们编写一些st ...

  10. http与https的简单比较

    一.概念 1.HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减 ...