22、文件上传漏洞——文件上传检测与绕过
文章目录
一、文件上传漏洞原理
??上传文件时,如果服务器端未对客户端上传的文件进行严格的验证和过滤。就容易造成可以上传任意文件的情况,包括上传脚本文件(asp、php、jsp等格式的文件)。
二、客户端检测及绕过(JS检测与绕过)
??客户端(Client):或称为用户端(前端),与服务器相对应。由于客户端对于文件上传漏洞的防御是通过JS代码实现的,所以客户端检测与绕过也称为JS检测与绕过。
??由于后端PHP代码没有对文件做任何检测,所以只要绕过前端JS的校验就可以上传WebShell。绕过方法:
- 删除浏览器事件;
- 禁用JS;
- 利用BurpSuite抓包修改文件后缀名。
三、服务端检测
3.1 后缀名检测与绕过
(1)黑名单绕过
- 名单列表绕过
??有些中间件允许解析其他文件后缀名,如asa、cer之类的或在httpd.conf配置文件中,配置如下代码,则能解析php、php3、phtml文件,所以上传一个后缀名为php3、phptml的文件即可。
- Windows特性
??一些特殊的文件名命名方式在windows下是不被允许的,利用BurpSuite抓包修改后缀名,绕过验证后上传文件,windows会自动去掉后面添加的,但要注意Unix/Linux系统没有这个特性。比如:
- 末尾的点(
.
) 如1.php.
- 空格(
1.php
- :: D A T A ,如 ‘ 1. p h p : : DATA,如`1.php:: DATA,如‘1.php::DATA`
(2)白名单绕过
白名单绕过需要配合文件包含漏洞或者解析漏洞。
(3).htaccess文件攻击
??.htaccess文件是Apache服务器中的分布式配置文件(IIS中不存在该文件),该配置文件会覆盖Apache服务器的全局配置,作用于当前目录及其子目录。
- 如果一个web应用允许上传.htaccess文件,那就意味着攻击者可以更改Apche的配置。
??在httpd.conf配置文件中,AllowOverride参数就是指明Apache服务器是否去找**.htacess**文件作为配置文件,如果设置为none,那么服务器将忽略.htacess文件;如果设置为All,那么所有在.htaccess文件里有的指令都将被重写,即允许.htaccess文件覆盖掉Apache 的配置。
(4)APahce解析机制
??Apche解析机制:从右往左开始解析文件后缀,若后缀名不可识别,则继续判断直到遇到可解析的后缀为止。
3.2 MIME类型检测与绕过
??MIME (Multipurpose Internet Mail Extensions) 是描述消息内容类型的因特网标准。MIME 消息能包含文本、图像、音频、视频以及其他应用程序专用的数据。常见的MIME 类型如下:
文件拓展名 | Mime-Type |
---|---|
.js | application/x-javascript |
.html | test/html |
.jpg | image/jpeg |
.png | image/png |
application/pdf |
3.3 文件内容检测与绕过
检测原理
??利用getimagesize()
函数获取图片的宽高等信息,如果上传的不是图片,那么则获取不到信息。服务端主要检测文件幻数:
类型 | 文件幻数 |
---|---|
JPG | FF D8 FF E0 00 10 4A 46 49 46 |
GIF | 47 49 46 38 39 61 (GIF89a) |
PNG | 89 50 4E 47 |
绕过方式
??在脚本文件开头补充图片对应的头部值,或在图片后写入脚本代码
3.4 00截断检测与绕过
检测原理
??截断漏洞出现的核心就是chr(0),这个字符不为空 (Null),也不是空字符 (" "),更不是空格。当程序在输出含有 chr(0)变量时,chr(0)后面的数据会被停止,换句话说,就是误把它当成结束符,后面的数据直接忽略,这就导致了漏洞产生。由于00代表结束符,PHP会把00后面的所有字符删除。
截断条件
??PHP版本小于5.3.4、magic_quotes_gpc 为OFF状态。
3.5 条件竞争检测与绕过
检测原理
??一些网站文件检测逻辑是先允许上传任意文件,然后检查文件内容是否包含可执行脚本,如果包含则删除。
绕过方法
??利用成功上传到删除文件的时间差,上传一个.php
文件,在未删除之前立即访问,则会自动生成一个新php文件,新文件不会被删除。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!