文件上传技术总结

文件上传技术总结

XMindChEPTpEere4pPp3.8h2试用要式Sa44十年.听元汽狂节产方生左车析上传ItaorFSs改文件解行方式方利!xP打统学/麻x绿部成I足让tAD.coENLRCoiD中国汽的折时语言特性+系统特性+中间件化析漏逅CVE-2015-444.ter1.jpo1寄户端文件上传漏洞绕过MIME过3083省rd0文大小个服务端Pirdows下ADs艺特.上irdow下SRCIU电29L一大小上都雨文件上传漏洞绕过.png

语言可解析的后缀

(前提:在Apache httpd.conf 配置文件中有特殊语言的配置

AddHandler application/x-httpd-php .php

img

搭配大小写、双重、空格来进行

其中:

phtml、pht、php3、php4和php5都是Apache和php认可的php程序的文件后缀

常见的MIME类型

超文本标记语言文本 .html,.html text/html

普通文本 .txt text/plain

RTF文本 .rtf application/rtf

GIF图形 .gif image/gif

JPEG图形 .jpeg,.jpg image/jpeg

au声音文件 .au audio/basic

MIDI音乐文件 mid,.midi audio/midi,audio/x-midi

RealAudio音乐文件 .ra, .ram audio/x-pn-realaudio

MPEG文件 .mpg,.mpeg video/mpeg

AVI文件 .avi video/x-msvideo

GZIP文件 .gz application/x-gzip

TAR文件 .tar application/x-tar

windows特性

Windows下文件名不区分大小写,Linux下文件名区分大写欧西;

Windows下ADS流特性,导致上传文件xxx.php::$DATA = xxx.php;

Windows下文件名结尾加入.,空格,<,·>,>>>,0x81-0xff等字符,最终生成的文件均被windows忽略。

00截断

0x00截断是将上传文件名或路径名中使用ascll码值为0的字符(也就是null)来进行截断,%00一般用在URL中用于截断url来进行文件包含,两者原理都一样,都是ascll为0的字符,只是形式不同

使用%00截断,需要两个条件 (1)php版本小于5.3.4(2)php的magic_quotes_gpc为OFF状态

例如:1.asp%00.jpg

post型:post不会像get对%00进行自动解码,所以先添加一个+号,

img

然后找到2b

img

使用0x00截断

先在文件尾添加一个空格,点开hex,将其对应的20改成00即可,就可以绕过后缀名的过滤

img

文件头检查

改后缀为php上传,还是失败

img

img

合成图片马,再修改后缀php再上传

img

如果是检测gif的话,可以在内容前添加GIF89a,例如

img

二次渲染

上传的图片会被修改部分内容,此时要对比未上传和已上传的图片对比出没有被修改的部分,在未修改的部分插入一句马子

例如上传前,把马子插入gif图片的底部

img

上传后,发现马子不见了

需要找到渲染前后没有变化的位置,然后将php代码写进去 例如:

img

.htaccess绕过

.htaccess(apache的配置文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。)

前提是:httpd.conf,启用AllowOverride(将该值改为all)

img

上传一个.htaccess内容如下的文件

<FilesMatch “2.jpg”>

SetHandler application/x-httpd-php

.htaccess文件的内容的意思是 对2.jpg使用php重新解析

如果只是单纯如下语句,它会把所有上传文件当成php来解析

SetHandler application/x-httpd-php

Apache解析漏洞

一:

其2.4.0~2.4.29版本中存在一个解析漏洞,在解析PHP时,1.php\x0A将被按照PHP后缀进行解析,导致绕过

例如:

正常上传.php文件上传不成功,burp抓包后发送到Repeater然后hex在置右键-Insert byte,在0d、0a前加一个0a,然后send,即可绕过上传

img

在页面访问http://192.168.0.99:8080/feng.php%0a

img

二:

Apache多后缀解析

如果运维人员给.php后缀增加了处理器:

AddHandler application/x-httpd-php .php

那么,在有多个后缀的情况下,只要一个文件含有.php后缀的文件即将被识别成PHP文件,没必要是最后一个后缀。利用这个特性,将会造成一个可以绕过上传白名单的解析漏洞。

img

影响版本Apache 1.x和Apache 2.x

Apache在解析文件时有一个原则:当碰到不认识的扩展名时,将会从后面向前解析,直到碰到认识的扩展名为止。

例如feng.php.QWE.ABC

Apache在处理时,先读取最后一个后缀,为ABC不认识,继续往左读取QWE不认识,读到php能识别这个后缀,于是就把feng.php.QWE.ABC当成是feng.php文件来解析,若是所有后缀都看完了没有一个认识怎么办?此时就会把该文件当做默认类型进行处理了,一般来说,默认类型是text/plain。

phtml、pht、php3、php4和php5都是Apache和php认可的php程序的文件后缀

IIS 解析漏洞

目录解析

/xx.asp/xx.jpg

若文件夹的名字后缀为 .asp、.asa,其目录内的任何扩展名的文件都被IIS当作asp文件来解析并执行。

例如创建目录 abc.asp,那么

/abc.asp/1.jpg

1.jpg将被当作1.asp文件来执行。不管你上传后你的图片改不改名都能拿shell了。

文件解析

在IIS6.0下,分号后面的不被解析,例如

abc.asp;.jpg

会被服务器看成是abc.asp

原理大抵是IIS 5.x/6.0在从文件路径中读取文件后缀时,遇到一个“.”后,便进入了一种截断状态,在该状态下遇到特殊符号 “/”和“;”,都会进行截断,只保留特殊符号前的部分,即“.asp”,从而认为文件后缀为“.asp”。

默认解析

IIS6.0 默认的可执行文件除了asp还包含这三种默认解析:/xx.asa /xx.cer /xx.cdx

原因:由于在 IIS 默认配置中,这几个后缀默认由 asp.dll 来解析,所以执行权限和 .asp 一摸一样,你可在配置中自行删除该后缀,以防止安全隐患

此处可联系利用目录解析漏洞 /xx.asa/xx.jpg 或 /xx.cer/xx.jpg 或 xx.asa;.jpg

IIS 7.0/IIS 7.5/ Nginx <8.03畸形解析漏洞

前提:默认Fast-CGI开启状况下,在一个文件路径(/xx.jpg)后面加上/xx.php会将

/xx.jpg/xx.php 解析为 php 文件。

在某些使用有漏洞的网站中,访问http://xxx.xxx.xxx/1.jpg/1.php,此时的1.jpg会被当作PHP脚本来解析,但是1.php是不存在的。

这就意味着攻击者可以上传合法的“图片”(图片木马)然后在URL后面加上“/1.php”,就可以获得网站的WebShell,菜刀连接:http://xxx.xxx.xxx/1.jpg/1.php

java的空字节截断

\u0000.jpg

  • 13
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Vue和Spring Boot是两个独立的技术,分别用于前端和后端开发。文件上传是一个常见的功能,可以通过Vue和Spring Boot来实现。 在Vue中,可以使用HTML5的File API来实现文件上传。首先,在Vue组件中创建一个文件上传的input元素,并添加一个change事件监听器,当用户选择文件时触发该事件。在事件处理函数中,可以通过event.target.files获取到用户选择的文件对象。然后,可以使用FormData对象将文件数据包装起来,并通过axios或其他HTTP库发送到后端。 在Spring Boot中,可以使用Spring MVC来处理文件上传。首先,在后端Controller中创建一个POST请求的接口,并使用@RequestParam注解来接收文件参数。然后,可以使用MultipartFile类型来接收上传的文件。通过MultipartFile对象,可以获取到文件的原始名称、大小、内容等信息。接着,可以使用Java的IO流将文件保存到指定的位置。 总结一下,Vue和Spring Boot文件上传的步骤如下: 1. 在Vue中创建一个文件上传的input元素,并添加change事件监听器。 2. 在事件处理函数中,获取用户选择的文件对象,并使用FormData对象包装文件数据。 3. 使用axios或其他HTTP库发送FormData到后端。 4. 在Spring Boot后端Controller中创建一个POST请求的接口,并使用@RequestParam注解接收文件参数。 5. 使用MultipartFile类型接收上传的文件,并保存到指定位置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑战士安全

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值