暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Web安全-文件上传漏洞小结

zero1安全笔记 2021-03-11
832

在诸多web应用程序中,文件上传是比较常见的一种功能。如果上传功能存在缺陷,对用户上传的文件没有过滤或者过滤不严,导致恶意代码被执行,这就会极大地危及服务器的安全,毕竟文件上传是getshell最快的方式之一。


文件上传一般步骤为选择文件->服务器接收->程序判断文件->临时文件->保存到指定的路径。


1.前端JS绕过


网站前端的JavaScript代码会对上传文件进行判断,判断文件的后缀是否符合所对应的规则,常见的允许上传的格式后缀为jpg,png,gif等等,如果上传的文件后缀不符合规则,通常会弹窗提醒



1.1绕过JS上传文件

  两种方式

(1)使用浏览器插件修改检测后缀的JS代码,上传文件;

(2)先修改待上传文件为允许通过的后缀,如jpg,gif等,绕过JS检测,再进行抓包,修改后缀名为可执行文件的后缀,如php等,即可上传文件。



2.文件后缀绕过


服务器对上传文件的后缀进行判断,一般存在一个规则匹配名单,有的是白名单,仅允许白名单上存在的后缀文件上传成功,其他则失败;有的是黑名单,即黑名单上的后缀上传失败,其他的可以上传成功。这里需要注意的是,白名单基本无法绕过,白名单比黑名单更加安全。


2.1文件后缀黑名单绕过上传文件

(1)黑名单过滤不全,即存在漏网之鱼,可以通过穷举遍历后缀名找到允许的可解析后缀名,常见的如

asp  asa  cdx  cer  php  aspx  ashx  jsp  php3  php.a  shtml  phtml

等等;

(2)双写或者大小写后缀名,可以尝试pHp,phphpp,Phphpp等等绕过;

(3)后缀名加空格,Windows文件系统会忽略空格,绕过服务器检测。


3.文件类型绕过


文件上传时抓包会发现有一个content-type,表示文件类型,直接上传php等可执行文件可能会上传失败或者上传成功但无法被服务器解析,这时候的文件类型为application/octet-stream。



3.1文件类型绕过上传文件

(1)抓包,修改content-type为image/jpeg或者其他允许的类型,绕过服务器端的检测,上传文件。



(2)开头字母小写content-Type或者将Content-Type:application/octet-stream冒号后面加一个空格。


3.2php相似漏洞

PHP函数getimagesize()功能为获取图片的宽、高信息,当我们上传的是php脚本时,该函数获取不到信息,不允许上传文件。将图片和一个webshell文件合并为一个文件,可以使用命令

 cat image.jpg webshell.php > image.php

合成文件来绕过getimagesize()函数上传文件。


4.文件头部检测绕过


对文件的头部信息进行检测,如果没有相匹配的信息,则不允许上传。


4.1文件头检测绕过上传

(1)添加图片头部标识信息,如GIF89a为GIF图片头部标识;或者将图片和脚本合并为一个文件,使用命令:copy image.gif/b+webshell.php  image.php,使用该方法绕过上传。


5.00截断绕过


00代表结束符,00后面的所有字符删除,所以文件上传绕过经常使用%00截断,使用00截断的条件是1.php版本必须小于5.3.4;2.php.ini中的magic_quotes_gpc设置为Off。

5.100截断绕过上传文件

(1)上传文件抓包使用00截断,如shell.php%00gif,上传文件为shell.php;

(2)参数截断,对于上传文件生成随机文件名,例如image20210311.ipg,可以使用00截断参数,生成自定义的文件名。



6.Web服务解析漏洞


一些主流的Web server存在一些解析漏洞,有的随着版本更新迭代被修复,有的还存在于新版本中。


6.1Apache解析漏洞

Apache服务器对文件名进行解析遵循从后向前的特性,遇到不认识的后缀名,它会继续向前解析,直到遇到它认识的文件类型为止,如shell.php.abc.bcd.qwe,文件会被当做php文件来解析执行。Apache官方认为这是一个很有用的功能,不是一个解析漏洞,新版本中仍然存在,可以利用该功能进行文件上传。

6.1.1Apache解析漏洞绕过上传

1)后缀黑名单,可以构造陌生的后缀通过服务器检测,然后利用Apache解析漏洞解析执行脚本,如shell.php.acdf.gfu;

(2)后缀白名单,存在完美绕过的可能,如上传压缩文件,允许的后缀为rar,zip,7z等等,都是寻常的的压缩格式,且白名单足够安全,但Apache不认识7z这个格式(mime.types文件中没有定义),我们上传一个shell.php.7z就可以完美绕过白名单,且可以被Apache解析,看似极为安全的白名单就能被简单的绕过。


6.2IIS6.0解析漏洞

在IIS6.0及其之前的版本有两个著名的解析漏洞,在遇到相关IIS版本时可以尝试使用。

6.2.1IIS6.0解析漏洞绕过

(1)文件名存在分号时,IIS会忽略分号后面的内容,我们可以上传一个文件名为shell.asp;image.jpg文件来绕过服务器检测,IIS会解析执行shell.asp文件;

(2)服务器文件夹名为的结尾为.asp、.asa、.cer、.cdx时,该文件夹下的文件都会被当做asp文件解析,利用该解析漏洞可以在上传文件夹下加入shell.asp文件夹,然后将图片或者允许上传的文件写入到shell.asp文件下,脚本可解析执行。


6.3Nginx解析漏洞

Nginx的解析漏洞最早由我国的的安全组织80Sec发布,该漏洞是在nginx配置fast-cgi使用PHP时,会出现文件解析问题,使得任意后缀的文件都能被当做PHP文件解析执行。

6.3.1Nginx解析漏洞绕过

(1)上传一个image.jpg图片马到服务器,访问image.jpg/.php或者image.jpg%00xxx.php,jpg文件都会被当做PHP文件执行,图片马的代码就被解析执行。


7.其他


7.1htaccess

.htaccess文件(或者"分布式配置文件"),全称是Hypertext Access(超文本入口)。提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。 如果Apache中.htaccess可被执行并可被上传,通过move_uploaded_file函数把自己写的 .htaccess文件覆盖掉服务器上的这样就可以解析定义名单了。

7.1.1htaccess重写解析绕过

(1)上传一个.htaccess文件名的文件,内容为

<FilesMatch "jpg">
SetHandler application/x-httpd-php
</FilesMatch>


这样,上传的的jpg图片都可以被解析成php文件


7.2操作系统特性突破绕过

 (1)由于windows会将文件的后缀中的空格以及点进行过滤,如果遇到是黑名单校验的,如果服务器限制不允许上传PHP文件,而系统又是windows系统,那么我们可以上传xx.php (加空格),或者xx.php.,通过这种方式就可以绕过黑名单检验的文件上传。

(2)上传shell.php:.jpg文件,会生成一个shell.php空白文件,可以利用PHP Windows环境的叠加特性,写入filename.<<<

将脚本代码写入shell.php。


7.3NTFS交换数据流

:$DATA 创建文件

::$DATA 创建和写入文件

上传文件抓包,修改filename="shell.php::DATA",将上传内容写入shell


7.4双文件上传

使用form表单同时上传两个文件,绕过服务器检测上传shell

<form method="post" enctype="multipart/form-data" action="上传URL">
filename1<input type="file" name="file">
filename2<input type="file" name="file">
<input type="submit" value="上传"/>
</form>




暂时想到这些,分享一些写的不错的博客


Web安全学习之文件上传漏洞利用 https://ca01h.top/Web_security/basic_learning/16.%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0%E6%BC%8F%E6%B4%9E%E5%88%A9%E7%94%A8/


浅谈文件解析及上传漏洞 https://blog.51cto.com/eth10/1956032


Web渗透之文件上传漏洞总结 https://www.secpulse.com/archives/95987.html


文件上传漏洞,解析漏洞总结 https://www.cnblogs.com/imbrave99/p/13369549.html


文件上传漏洞总结 https://www.cnblogs.com/0daybug/p/12311087.html


文章转载自zero1安全笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论