上传攻击

什么是上传漏洞?

我的理解是由于程序员未对上传的文件作过滤或者过滤机制不严格,导致恶意用户可以上传动态脚本页面,从而通过上传的这张脚本页面达到控制网站权限的目的

我们简单来说下什么叫做过滤机制不严格:

比如一个网站只支持ASP脚本,在上传功能中程序员对此的过滤策略是“取得客户端文件名中最后一位小数点后的后缀内容,如果碰到后缀为html、shtml、asp格式,程序则不允许上传,否则,上传成功” 。假设程序员知道本网站只支持解析ASP,不支持解析php或者aspx,也就是说其他脚本即使被上传成功,也执行不了。看来这个情况下我们确实只需要限制掉asp就可以了。如果你的想法也是这样,那真的错了,默认情况下asa、cer后缀均调用的是asp的解析dll,那么,你觉得这样的程序还安全吗?很多程序员未必会了解这一点。再反问,以这种验证方式为前提,如果我把所有能当做asp去执行的后缀都限制上传了,你觉得安全吗?后面我会告诉你的。

这里我先来简单归纳一下上传漏洞的总类(个人能力有限应该还有遗留的):

一、未做任何限制

二、客户端JS验证绕过(本地javascript扩展名检测)

三、http包头检测绕过(content-type检测)

四、文件名可定义上传漏洞(自定义文件名,可使用0×00截断写入,参看dvbbs6.0上传漏洞同理)

五、文件夹可定义上传漏洞(自定义文件夹名,可使用0×00截断写入,参看dvbbs6.0上传漏洞)

六、文件头检测绕过(gif89a等文件头部检测)

七、第三方解析漏洞(IISapachenginx的解析问题)

八、等等

相信以上这些大家多多少少都碰到过,并且也都知道原理,这里不再重复复述,不懂的可以问我或者找我们共同的老师搜索引擎问一下。

进入正题,我们先来看一段代码

很明显上述功能首先获得用户文件名中最后一个小数点后面的内容-即后缀,如果后缀为第三行定义中数组中的词语,则不允许上传,甚至我们还限制了shtml、html,想的比较周到。

现在来看看我们如何来突破他吧。仔细分析一下,程序取得文件名最后一个小数点的值,以此来判断文件是否允许被上传。如果上传成功,则以date()一个数值加上文件名来进行最终命名,然后将此临时文件移动到我们要保存的目录。

我们先来补充点小知识,对于windows来说,会默认“吃掉”文件名最后的小数点,可以尝试一下,在文件名最后输入一个小数点保存,小数点是不会出现的,被吃掉了。Linux则会继续将小数点写进去。

有了这个概念,我们来针对这个上传程序进行测试,首先上传一个木马页面test.php,很显然上传失败,然后我们对上传的这个地址加以改进,写成如下样式(同样是刚才那张木马页面,我们仅仅是在这个input中手工多加了个小数点哦)

接收进去的文件名“test.php.”被程序认为是可被允许的,因为最后一个小数点后面的值不在黑名单范围,下一步程序就进行写入,date()给予一个当前时间数“120421003323”加上“_”再加上文件名“test.php.” ,即变成“120331142923_test.php.” ,相信大家先前的那个小知识的内容都试过了,程序在windows中写入文件名的时候,如果最后一位是英文的小数点,默认就吃掉了,最终变为“120331142923_test.php” ,木马上传成功。

虽然在linux中仍然是“120331142923_test.php.”格式写入,但是还是由于apache和nginx的解析特性,大部分此类情况还是继续会被当做php去执行,具体版本情况大家可以自行测试。

总结

防御:一些单纯的本地检测、包头检测、图片头检测、图片体检测getimagesize()、黑白名单检测,只要稍微不小心,就有可能会被突破,所以,我们如果要使用这些方法的话,请先严格理解这些可能造成的漏洞隐患,然后再对相关的问题点进行针对性的修补。

最后还是表达我感悟的一句话:入侵技术点或许大家都会,但是这远远不够,实际渗透中由于环境问题有各种变化,能否举一反三、细心、坚持才是渗透最重要的。

转载自:http://www.2cto.com/Article/201205/129862.html

上传攻击,布布扣,bubuko.com

时间: 2024-08-10 19:09:17

上传攻击的相关文章

《白帽子讲WEB安全》学习笔记之第8章 文件上传漏洞

第8章 文件上传漏洞 8.1 文件上传漏洞概述 文件上传漏洞是指用户上传一个可执行的脚本文件,并通过此脚本文件活动执行服务器端的能力. 原理:由于文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,导致允许攻击者向某个可通过 Web 访问的目录上传任意PHP文件. 文件上传漏洞安全问题: q  上传文件是WEB脚本文件,服务器的WEB服务器解释并执行了用户上传的脚本,导致代码执行: q  上传文件是Flash的策略文件crossdomain.xml,黑客用以控制Flash在该域下的行

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

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

文件上传如何合理地验证文件类型?

在网上搜了一下,一般都是通过文件后缀名判断,很显而易见的是用户通过修改后缀名来逃避,我想问的问题有两个: 还有什么验证文件类型的方法? 攻击者利用后缀名漏洞能造成什么样的危害? 在网上找到的攻击方式有: 修改后缀名(exe->jpg), 多后缀名(test.php.fr), 后缀名大小写(php->pHp), 代码嵌入(图片里注入php代码), null字符(00) 相对路径(../../../) 知乎用户-江南回答 其实对于防御者来说,其实不用这么费劲来进行验证 时间戳+随机数+.jpg后缀

1.1 文件上传之绕过验证

文件上传之绕过 一般防止上传漏洞手法 1.客户端检测:客户端使用JavaScript检测,在文件未上传时,就对文件进行验证 //任何客户端的验证都是不安全的,客户端验证目的是防止用户输入错误.减少 //服务器开销,而服务端验证才可以真正防御攻击者. 2.服务器端检测:服务端脚本一般会检测文件的MIME类型,检测文件扩展名是否合法 客户端检测 客户端验证代码形如下: <html lang="en"> <head> <meta charset="UT

上传漏洞(二)

绕过上传漏洞 程序员在防止上传漏洞时可以分为以下两种: 客户端检测:客户端使用Javascript检测,在文件未上传时,就对文件进行验证. 服务端检测:服务端脚本一般会检测文件的MIME类型,检测文件扩展名是否合法,检测文件内容是否合法. 一.客户端检测绕过 (1)Firebug firebug是火狐浏览器的插件,可以轻松调试前端代码.新版本的火狐浏览器应该自带了这个插件.使用firebug删除javascript的验证事件,javascript验证就会失效. (2)中间人攻击 使用burpsu

php代码审计8审计文件上传漏洞

文件上传漏洞是指用户上传了一个可执行的脚步文件,并通过此脚本文件获得了执行服务器端命令的能力,这种攻击方式是最直接和有效的,文件上传本身是没问题的,有问题的是文件上传后,服务器怎么处理,解释文件,通过服务器的处理逻辑做的不够安全,则会导致严重后果 漏洞条件:文件可上传--知道文件上传路径--上传文件可以被访问--上传文件可以被执行 文件上传可控点:Content-Length,即上传内容大小MAX_FILE-SIZE,即上传内容的最大长度filename,即上传文件名Content-Type,即

WEB安全性测试之文件上传漏洞

1.漏洞描述:文件上传漏洞,是指可以利用WEB上传一些特定的文件包含特定代码如(<?php phpnfo;?> 可以用于读取服务器配置信息.上传成功后可以点击) 上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力.文件上传本身是web中最为常见的一种功能需求,关键是文件上传之后服务器端的处理.解释文件的过程是否安全.一般的情况有: 1.上传Web脚本语言,服务器的WEB容器解释并执行了用户上传的脚本,导致代码执行,篡改主页 2.上传Flash策略文件cro

WAF——针对Web应用发起的攻击,包括但不限于以下攻击类型:SQL注入、XSS跨站、Webshell上传、命令注入、非法HTTP协议请求、非授权文件访问等

核心概念 WAF Web应用防火墙(Web Application Firewall),简称WAF. Web攻击 针对Web应用发起的攻击,包括但不限于以下攻击类型:SQL注入.XSS跨站.Webshell上传.命令注入.非法HTTP协议请求.非授权文件访问等.

文件上传漏洞攻击与防御

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