上传漏洞(二)

绕过上传漏洞

程序员在防止上传漏洞时可以分为以下两种:

客户端检测:客户端使用Javascript检测,在文件未上传时,就对文件进行验证。

服务端检测:服务端脚本一般会检测文件的MIME类型,检测文件扩展名是否合法,检测文件内容是否合法。

一、客户端检测绕过

(1)Firebug

firebug是火狐浏览器的插件,可以轻松调试前端代码。新版本的火狐浏览器应该自带了这个插件。使用firebug删除javascript的验证事件,javascript验证就会失效。

(2)中间人攻击

使用burpsuit进行中间人攻击,上传前先把文件改为合法名字,用burpsuit拦截请求,此时已经通过了客户端检测,然后在burpsuit中将文件名修改掉,Content-Length也要修改为对应的长度。

客户端验证是防止用户输入错误,减少服务器开销,服务器验证才可以真正防御攻击者。

二、服务端检测

(1)黑名单验证

在黑名单中定义一些不安全的扩展名,服务器收到文件后,与黑名单中的扩展名进行匹配,若匹配到,则认为文件不合法。黑名单过滤是不安全的,因为很可能漏掉一些扩展名。而且还有其他绕过方式,如:大小写绕过,windows下可以用‘asp.‘绕过,‘.’会被忽略。

(2)白名单验证

与黑名单方式相反,上传的文件与白名单的扩展名进行匹配,若匹配到,则上传成功,否则,拒绝上传。

白名单方式也不是绝对安全,如果配合一些解析漏洞,还是会有被攻击的可能,如IIS6.0会将1.asp;1.jpg当做JPG格式,但是会把它当做asp脚本来执行。

(3)MIME验证

MIME类型用来设定某种扩展名文件的打开方式,如GIF图片的MIME为image/gif,CSS文件的MIME类型为text/css。

这种验证方式得绕过也很简单,拦截HTTP上传文件的请求,将Content-Type修改,即可绕过。

(4)目录验证

有些网站在上传文件时,如果上传的目录不存在,则会新建一个文件夹,这是很危险的,如果Web容器为IIS6.0,我上传到一个后缀为.asp的目录,这个目录不存在,就会新建,然后上传恶意文件到这个目录,就会造成攻击。

(5)截断上传攻击

%00截断,比如:username%00admin,则只会显示username,%00之后的字符串被截断了。

我们上传一个1.asp php,然后用burpsuit拦截请求,点击HEX选项将文件名中的空格(16进制是20)改为00,即NULL,然后提交请求,上传的文件为1.asp,这样就造成了%00截断上传。

修复上传漏洞

修复上传漏洞也不难:

①查看Web容器版本,要及时更新,如果不需要,关闭危险配置项。

②使用白名单验证文件扩展名。

③接收文件,对文件进行重命名。

④严格控制文件上传路径,只要攻击者不知道文件路径,就很难造成攻击。

原文地址:https://www.cnblogs.com/whitehawk/p/9892506.html

时间: 2024-10-25 04:04:54

上传漏洞(二)的相关文章

文件上传漏洞攻击与防御

前言 从一年前开始学习web安全以来,一直都是在吸收零碎的知识,不断地看书与一些前辈的文章,中间也经过一些实践,学习相关的工具,但是却没真真正正地在脑中形成一套完整的体系.从不久前就想着要写一些博客,趁着这个机会,便好好梳理一下所学的知识,只是这些文章所写大部分内容也是搬运前辈的文章,鲜有自己所想所悟. 关于文件上传漏洞,百度一下便有许多文章出来,在这里我也稍稍做整理. 0x00 文件上传漏洞所需满足的条件 一是文件可上传(感觉这一句是废话).二是上传文件路径可知,如果路径不可知就没法访问,亦无

PHP任意文件上传漏洞CVE-2015-2348浅析

昨晚安全新闻爆出一个“PHP任意文件上传漏洞”,CVE编号为:CVE-2015-2348. 当时楼主正准备收拾东西回家,看到这个新闻心里一惊:失传江湖多年的0字符截断上传漏洞又重现了?而且还影响这么多版本!如果漏洞属实,看来今晚又要通宵打补丁了啊. 不过经过简单分析后,发现漏洞的利用条件相当苛刻(很多人好奇到底有多苛刻),楼主简单记录自己的分析过程和大家分享一下,如有不当,请多多指正. 一.漏洞概述 漏洞报告者说php的上传函数 move_uploaded_file的目的路径参数可以使用空字符截

文件上传漏洞总结

一.js验证绕过上传漏洞 先制作一句话木马,中国菜刀里面有一句话木马,把PHP一句话粘贴一个文本 <?php @eval($_POST(['chopper']);?)> 里面chopper的位置对应着密码,后缀名改成php.找到上传点进行上传 一张图片,发现上传成功,再上传一句话,发现直接跳出警告框,说明则是由客户端直接对文件进行的一个检测,所以我们用到火狐浏览器的firebug 插件,找到对应的js代码,右键"编辑html代码",把form中的'onsubmit=&quo

文件上传漏洞及解析漏洞总结

文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力.这种攻击方式是最为直接和有效的,"文件上传"本身没有问题,有问题的是文件上传后,服务器怎么处理.解释文件.如果服务器的处理逻辑做的不够安全,则会导致严重的后果. 文件上传后导致的常见安全问题一般有: 1)上传文件是Web脚本语言,服务器的Web容器解释并执行了用户上传的脚本,导致代码执行. 2)上传文件是Flash的策略文件crossdomain.xml,黑客用以控制Flash在该域下的行为(

【渗透课程】第七篇-上传漏洞之绕过上传漏洞

前一篇我们已经讲过了上传漏洞的解析漏洞,在某些时候,知道网站存在哪个解析漏洞,那么我们就可以更好的利用上传漏洞 这个知识点在我们前面就有粗略说过了(http://www.yuntest.org/index.php/archives/765.html), http拦截也是上传漏洞的其中之一, 下面我们来对绕过上传漏洞进行更深的了解. 正文 管理员防止文件上传漏洞时可以分为两种,一种是客户端检测,一种是服务端检测: 客户端检测:使用JavaScript检测,在文件上传之前,就对文件进行验证 服务器端

【渗透课程】第八篇-上传漏洞之文本编辑器上传

Oday 常见的文本编辑器有CKEditor,Ewebeditor,UEditor,KindEditor,XHeditor等.其包含的功能类似,比如,图片上传.视频上传.远程下载等. 使用这类编辑器减少了程序开发的时间,但也存在通用性漏洞带来的危害 以FCKeditor(现已更名为CKEditor)为例,其存在如下漏洞 一.敏感信息暴露 1.1 查看版本信息 /FCKeditor/editor/dialog/fck_about.html 1.2 默认上传页面 /FCKeditor/editor/

【渗透课程】第六篇-上传漏洞之解析漏洞

上传漏洞,我们为什么要上传?因为我们说过.在网站服务器上 肯定有一个Web容器,它里面装的就是Web应用程序 .某些脚本具有一定的执行和修改权限.这些权限可以说是服务器给客户端访问时提供的服务的同时提供的, 提供服务越多, 存在漏洞的几率就越大. 如果我们上传了某个具有对系统进行操作性权限的文件(一句话木马,大马,bat,dll等),那对于我们接下去的攻击提供了很大的方便. 上面这些我就不多说了 ,之前也讲过了.回归正题, 我们这篇要说的是: 解析漏洞 在这里我先说一个知识点吧,相信很多人都听说

上传漏洞浅见

上传漏洞 0xx1 上传漏洞简介 如何确定web应用程序是否存在上传漏洞呢?比如,有些网站,用户可以上传自己的个性头像,即图片文件,但是文件上传时并没有做验证,导致用户可以上传任意文件,这就是上传漏洞 0xx2 解析漏洞 2.1 什么是解析漏洞?攻击者利用上传漏洞时,通常会与web容器的额解析漏洞配合使用,常见的web容器为iis nginx Apache tomcat,下面具体说下常见容器的解析漏洞. 2.2 iis的解析漏洞.iis6.0在解析文件时存在二个解析漏洞.一 当建立.asa,.a

上传漏洞总结

常见的web容器有IIS Apache Nginx Tomcat 解析漏洞 IIS6.0 :文件解析(x.asp=>x.asp;jpg(gif,txt,png等);文件夹(xx/xx.asp=>xx.asp/xx.jpg) (可以换成php等) IIS 7.x: 比如http://www.xx.com/logo.jpg/x.php,前面一句话图片木马会被php执行. apache: 解析漏洞,首先判断是否系统认识后缀名,不认识则寻找上个后缀名(和apache版本有关系,决定是否有解析漏洞).