上传绕过 ---整理

1,0x00的截断漏洞

 

原理:在上传的时候,当文件系统读到【0x00】时,会认为文件已经结束。利用00截断就是利用程序员在写程序时对文件的上传路径过滤不严格,产生0x00上传截断漏洞。

 

绕过方法:

通过抓包截断将【evil.php.jpg】后面的一个【.】换成【0x00】。在上传的时候,当文件系统读到【0x00】时,会认为文件已经结束,从而将【evil.php.jpg】的内容写入到【evil.php】中,从而达到攻击的目的。

 

 

 

upfilename即为最终名字,意思为如果地址为picture/1.php+,文件名为1.jpg则最终上传上去的文件路径为picture/1.php+1.jpg0x00截断的思路即为将+之后的内容忽略掉使上传文件1.jpg最终上传到1.php中,此处利用到的就是0x00的截断漏洞

 

 

 

 

0x00的意思为16进制00,所以讲+对应的进制改成00(至于怎么找到对应代码,看右边对应代码,找到第几行,从左到右,每个字母对应一个代码),改完直接go 上传成功

 

 

 

2,前台脚本检测扩展名—绕过

原理:当用户在客户端选择文件点击上传的时候,客户端还没有向服务器发送任何消息,就对本地文件进行检测来判断是否是可以上传的类型,这种方式称为前台脚本检测扩展名。 前端js验证的。

 

 

 

绕过方法:

绕过前台脚本检测扩展名,就是将所要上传文件的扩展名更改为符合脚本检测规则的扩展名,通过BurpSuite工具,截取数据包,并将数据包中文件扩展名更改回原来的,达到绕过的目的。

例如:文件名本来为【evil.jpg】,上传时,用BurpSuite截包后,将数据包中的名字改为【evil.php(或其它脚本类型)即可。

 

3,Content-Type检测文件类型—绕过

原理:当浏览器在上传文件到服务器的时候,服务器对说上传文件的Content-Type类型进行检测,如果是白名单允许的,则可以正常上传,否则上传失败。

 

绕过方法:

绕过Content--Type文件类型检测,就是用BurpSuite截取并修改数据包中文件的Content-Type类型(如改为:image/gif),使其符合白名单的规则,达到上传的目的。

 

4,服务器端扩展名检测黑名单绕过

原理:当浏览器将文件提交到服务器端的时候,服务器端会根据设定的黑白名单对浏览器提交上来的文件扩展名进行检测,如果上传的文件扩展名不符合黑白名单的限制,则不予上传,否则上传成功。

 

绕过方法:

将一句话木马的文件名【evil.php】,改成【evil.php.abc(奇怪的不被解析的后缀名都行)。首先,服务器验证文件扩展名的时候,验证的是【.abc】,只要该扩展名符合服务器端黑白名单规则,即可上传。另外,当在浏览器端访问该文件时,Apache如果解析不了【.abc】扩展名,会向前寻找可解析的扩展名,即【.php

 

 

5: JS检测上传文件绕过

 

原理:上传文件时,对方使用JavaScript语句语法检测上传文件的合法性问题。

 

绕过方法:

在本地浏览器客户端禁用JS即可。可使用火狐浏览器的NoScript插件、IE中禁用掉JS等方式实现。

 

 

6: 重写解析规则绕过

 

原理:上传覆盖.htaccess文件,重写解析规则,将上传的带有脚本马的图片以脚本方式解析。

 

绕过方法:

在可以上传.htaccess文件时,先上传.htaccess文件,覆盖掉原先的.htaccess文件;再上传【evil.gif】文件。使用如下的.htaccess语句,即可将【evil.gif】文件以php脚本方式解析。

<FilesMatch "evil.gif">

SetHandler application/x-httpd-php

</FilesMatch>

 

7: 其它方式绕过

 

部分程序员的思维不严谨,并使用逻辑不完善的上传文件合法性检测手段,导致可以找到方式绕过其检测方式。

1. 后缀名大小写绕过

用于只将小写的脚本后缀名(php)过滤掉的场合;

例如:Burpsuite截获的数据包中的文件名【evil.php】改为【evil.Php

 

2. 双写后缀名绕过

用于只将文件后缀名,例如"php"字符串过滤的场合;

例如:上传时将Burpsuite截获的数据包中文件名【evil.php】改为【evil.pphphp】,那么过滤了第一个"php"字符串"后,开头的'p'和结尾的'hp'就组合又形成了【php】。

 

3. 特殊后缀名绕过

用于检测文件合法性的脚本有问题的场合;

例如:Burpsuite截获的数据包中【evil.php】名字改为【evil.php6】,或加个空格改为【evil.php 】等。

首先bp上传图片 抓包,将数据包发到repeater,并对/uploads/后面加上1.php+,此处相当于上述例子中的path

posted @ 2019-11-09 15:58  来自地狱的天使  阅读(73)  评论(0)    收藏  举报