整理完自己还有点晕,看来还是得找点靶场自己练习练习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. C#生成Excel文档(EPPlus)

    1.公式计算 worksheet.Cells["D2:D5"].Formula = "B2*C2";//这是乘法的公式,意思是第二列乘以第三列的值赋值给第四列, ...

  2. OSCP Learning Notes - Capstone(4)

    SickOS 1.2 Walkthrough Preparation: Down load the SickOS virtual machines from the following website ...

  3. javascript : 递归遍历数组

    我们假设有一个对象数组. 这个对象数组里的对象,有一个叫children的key,value也是一个对象数组. 这个数组里面可能还有children... 现在我们想递归遍历它. 上代码. test_ ...

  4. 推荐收藏:100道Linux笔试题,能拿90分以上的都去了BAT

    本套笔试题共100题,每题1分,共100分.(参考答案在文章末尾) 1. cron 后台常驻程序 (daemon) 用于: A. 负责文件在网络中的共享 B. 管理打印子系统 C. 跟踪管理系统信息和 ...

  5. Git 撤销更改

    一.未使用 git add 缓存代码时 可以使用 git checkout -- filepathname (比如: git checkout -- readme.md  ,不要忘记中间的 “--” ...

  6. 性能测试必备知识(6)- 如何查看“CPU 上下文切换”

    做性能测试的必备知识系列,可以看下面链接的文章哦 https://www.cnblogs.com/poloyy/category/1806772.html 课前准备,安装 sysbench 下载 sy ...

  7. 随机生成姓名&批量生成不重名

    # -*- coding: utf-8 -*- """ Created on Thu Jul 23 14:43:07 2020 @author: Administrato ...

  8. Python之filter、map、reduce函数

    简介三函数: 高阶函数:一个函数可以接收另一个函数作为参数,这种函数称之为高阶函数. filter.map.reduce三个函数都是高阶函数,且语法都一致:filter/map/reduce(func ...

  9. Java容器学习之ArrayList

    一.概述 ArrayList是java中十分常用的集合类,继承于AbstractList,并实现了List.RandomAccess.Cloneable和Serializable接口.ArrayLis ...

  10. VulnHub靶场学习_HA: Pandavas

    HA: Pandavas Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-pandavas,487/ 背景: Pandavas are the warr ...