文件上传常见绕过思路

Posted 世界尽头与你

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件上传常见绕过思路相关的知识,希望对你有一定的参考价值。

文件上传常见绕过思路

1.灵活使用可解析后缀

有时候网站采用黑名单策略控制文件类型,那么我们就可以灵活的变更可解析后缀来实现文件上传的效果:

注:常见Content-Type


2.文件头绕过

文件幻数是用来唯一标识文件类型的一系列数字(十六进制),也就是我们常说的文件头,当白名单限制了文件幻数时,我们就要给我们的文件制造可以通过检测的文件头即可:

.jpg    Value = FF D8 FF E0 
.gif    Value = 47 49 46 38 ==> GIF89a
.png    Value = 89 50 4E 47
.html   Value = 68 74 6D 6C 3E 10
.xml    Value = 3C 3F 78 6D 6C


3.条件竞争

如果网站的文件上传的过程是:服务器获取文件–>保存上传临时文件–>重命名移动临时文件 这样的步骤时,就可以通过不断地对文件进行上传和访问,从而使服务器还未重命名移动临时文件时,我们就利用时间差打开了文件,成功执行其中的恶意代码。

具体方法:并发发包,如Burp、fuff等


4.双上传

同时构造两个上传,也就是两个Content-Disposition:,可能服务端只会验证第一个上传,而第二个上传则直接保存


5.多分号上传

上传的时候构造多个分号:

Content-Disposition: form-data;name="file";;;filename="1.jsp"

6.HPP

上传的时候构造2个filename,如:

filename=1.png; filename=1.jsp

7.图片马

如果后缀可以为jsp、php等,但是内容必须为图片,那么可以用图片马来进行getshell

或者会解析图片为相关的代码


8.二次渲染绕过

通过十六进制寻找二次渲染后内容未改变的部分,再在其中插入代码,一般在exif数据中


9.%00截断

00截断是操作系统层的漏洞,由于操作系统是C语言或汇编语言编写的,这两种语言在定义字符串时,都是以\\0(即0x00)作为字符串的结尾。操作系统在识别字符串时,当读取到\\0字符时,就认为读取到了一个字符串的结束符号。因此,我们可以通过修改数据包,插入\\0字符的方式,达到字符串截断的目的。00截断通常用来绕过web软waf的白名单限制

00截断的原理,就是利用0x00是字符串的结束标识符,攻击者可以利用手动添加字符串标识符的方式来将后面的内容进行截断,而后面的内容又可以帮助我们绕过检测⚾

00截断的限制条件是PHP<5.3.29,且GPC关闭

以上是关于文件上传常见绕过思路的主要内容,如果未能解决你的问题,请参考以下文章

C站最全Web安全-文件上传绕过思路拓展(附知识脑图,快收藏!)

网络安全文件上传绕过思路总结

WEB安全之文件上传--白名单绕过%00截断

Web安全之文件上传漏洞

Getshell | 文件上传绕过整理

绕过网站安全狗拦截,上传Webshell技巧总结(附免杀PHP一句话)