




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Web攻防系列教程之 文件上传攻防解析文件上传是WEB应用很常见的一种功能,本身是一项正常的业务需求,不存在什么问题。但如果在上传时没有对文件进行正确处理,则很可能会发生安全问题。本文将对文件上传的检测方式以及如何绕过相应检测方式进行详细的分析,并提供针了对文件上传攻击的安全防护方法。 文件上传攻击是指攻击者利用WEB应用对上传文件过滤不严,导致可以上传应用程序定义类型范围之外的文件到Web服务器。比如可以上传一个网页木马,如果存放上传文件的目录刚好有执行脚本的权限,那么攻击者就可以直接得到一个WebShell。文件上传攻击的原理 由于服务器端没有对用户上传的文件进行正确的处理,导致攻击者可以向某个可通过 Web 访问的目录上传恶意文件,并且该文件可以被Web服务器解析执行。攻击者要想成功实施文件上传攻击,必须要满足以下三个条件:1.可以上传任意脚本文件,且上传的文件能够被Web服务器解析执行,具体来说就是存放上传文件的目录要有执行脚本的权限。2.用户能够通过Web访问这个文件。如果文件上传后,不能通过Web访问,那么也不能成功实施攻击。 3.要知道文件上传到服务器后的存放路径和文件名称,因为许多Web应用都会修改上传文件的文件名称,那么这时就需要结合其他漏洞去获取到这些信息。如果不知道上传文件的存放路径和文件名称,即使你上传了也无法访问。主流文件上传检测方式概述主流的文件上传检测方式有以下五种:1.客户端javascript检测客户端检测通常在上传页面里含有专门检测文件上传的javascript代码,在文件被上传之前进行检测,最常见的就是检测上传文件的文件类型和大小是否合法。 2.服务端MIME类型检测这类检测方法通过检查http包的Content-Type字段中的值来判断上传文件是否合法。 3.服务端文件扩展名检测这类检测方法通过在服务端检测上传文件的扩展名来判断文件是否合法。 4.服务端目录路径检测这类检测一般通过检测路径是否合法来判断。 5.服务端文件内容检测这类检测方法相当对上面四种检测方法来说是最为严格的一种。它通过检测文件内容来判断上传文件是否合法。这里,对文件内容的检测主要有两种方法。 A.通过检测上传文件的文件头来判断。通常情况下,通过判断前10个字节,基本就能判断出一个文件的真实类型。B.文件加载检测,一般是调用API或函数对文件进行加载测试。常见的是图像渲染测试,再严格点的甚至是进行二次渲染。 如何绕过文件上传检测 上面我们分析了主流的文件上传检测方式,下面我们就来看下如何绕过上面提到的文件上传检测方式,本文只讨论如何绕过前三种检测方式。 1.绕过客户端javascript检测这种检测方法是最不安全的,也是最容易被攻击者绕过的。Web应用不应只采用这一种手段检测上传文件,但可以作为一种辅助手段。因为采用客户端javascript检测可以增强应用对用户的友好度。由于javascript检测是在客户端实现的,所以我们完全能够控制它。可以在浏览器端禁用js脚本,比如在FireFox上安装FireBug这一插件就可以实现这一功能。另外一种是通过代理工具来实现,下面介绍利用Burp Suite来绕过客户端javascript检测。Burp Suite不仅仅只是一个代理工具,更是一款强大的网络渗透利器。关于Burp Suite的详细资料请自行百度。 这个站点(注:由于该网站为真实站点,为了目标网站的安全,所以用target来代替真实域名)的文件上传功能只采用了客户端javascript检测,所以很容易被绕过。下面我们来具体看下操作方法。首先,我们看一下正常情况下上传一个.asp文件,应用会有什么反应。 a. 我们访问这个URL(/AdvHTML_Popups/upload.asp),会出现一个上传文件的页面 b. 我们先选择一个.asp文件,这时会提示不允许上传这种类型的文件。注意,这时我们还没有点击“件,这时会提示按钮,就出现提示信息。我们可以判断出这个网站是在客户端判断上传文件类型的合法性的。上面的情况证明在正常情况下是不能成功上传.asp文件的,那么下面就来看下如何绕过这种检测吧。 c. 我们先打开Burp Suite代理工具,然后配置浏览器使用代理。 d. 我们先把刚才的那个.asp文件扩展名改为.gif,然后点击“然后点击“为那按钮。这时Burp Suite中就会拦截到浏览器提交的HTTP数据包。我们把filename字段的值webshell.gif修改为webshell.asp,再点击“再点击“ell”按钮,会发现文件成功上传到服务器。 2.绕过服务端MIME类型检测服务端MIME类型检测是通过检查http包的Content-Type字段中的值来判断上传文件是否合法的。我们来访问35/upload.html,这是一个上传页面,当你选择上传文件,点击“上传”按钮后,会跳转到uploadf.php中进行处理。先来看下uploadf.php的代码。那么我们如何绕过这种检测方式呢?下面来看具体操作,还是用Burp Suite来完成。 我准备上传webshell.php到服务器,这是个一句话木马。选择好文件,然后点击“上传”,这时Burp Suite拦截到发往服务器的HTTP请求,我们在Burp Suite修改HTTP数据包中的内容,然后点击“据包中的内容,然按钮把数据包再转发给服务器。 这时会提示文件成功上传,还会显示文件保存路径,说明我们成功绕过了服务端的MIME文件类型检测。 现在我们用中国菜刀连接一下,可以成功访问到。 3.绕过服务端文件扩展名检测 现在我们来看下如何绕过服务端文件扩展名检测,先来看下这两段代码。上面的代码是一个上传表单,在选择上传文件,点击“上传”按钮后会跳转到uploadfiles.asp中进行处理。我们来看下uploadfiles.asp文件中检测上传文件扩展名的代码。 上面代码的意思是先得到上传文件的扩展名,然后和允许上传的文件类型对比,如果不符合定义,则提示“上传的文件格式不对!”。下面具体看下如何绕过这种检测方式,我们先直接上传一个.asp的木马,会提示上传文件格式不对,这和我们预期的结果一致。现在我们将webshell.asp改为webshell.asp;test.jpg,再次上传,会发现我们的webshell被成功上传到服务器上。 现在我们来访问下,地址为 05/bookpic/webshell.asp;test.jpg,可以正常访问,如 注:这里利用了IIS的解析漏洞,当文件名为1.asp;1.jpg时,IIS会将此文件解析为1.asp,文件名被截断,导致脚本被执行。而且存放上传文件的目录要有执行脚本的权限,否则不能执行成功。设计安全的文件上传功能 上面我们介绍了主流的文件上传检测以及绕过检测的方式,那么如何设计出一个安全的文件上传功能呢?下面我们就来总结一下。 1.设置保存上传文件的目录为不可执行 只要Web服务器无法解析该目录下的文件,即使攻击者上传了脚本文件,服务器本身也不会受到影响,此点至关重要。 2.判断文件类型 在判断文件类型时,可以结合使用MIME Type、后缀检查等方式。在文件类型检查中,强烈建议采用白名单的方式。此外,对于图片的处理可以使用压缩函数或者resize函数,在
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年新能源汽车挂靠运营合作协议模板
- 2025年通信基站电气设备安装与优化升级协议
- 2025二手车二手车经销商培训服务合同范本
- 2025年度地磅称重系统销售与售后技术支持协议
- 2025处理离婚财产争议协议范本:夫妻共同财产处理流程详解
- 2025版砂石行业供销合同模板与解析
- 2025年二手家居用品转让定金合同模板参考
- 2025装配式建筑部品部件标准化设计在装配式建筑装配式阳台预制构件施工中的应用报告
- 2025年新型智能电脑及配件研发购销合同
- 2025第一节智能制造产业链协同创新合作协议书编号:XX027
- 人教版数学四年级上册全册课本练习题精心整理可编辑可打印
- 退费账户确认书
- 郑州市第四中学新初一分班(摸底)语文模拟试题(5套带答案)
- 2-第二章-各向异性材料的应力-应变关系
- 医院防爆反恐应急预案
- 云南省安全员C证考试题库及答案
- 死亡待遇申请表
- 集中供热管网系统一次网的调节方法
- 无线充电技术在汽车上的应用
- 马工程《刑法学(下册)》教学课件 第17章 危害国家安全罪
- 11科室临床路径、单病种管理目录
评论
0/150
提交评论