热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Web攻防系列教程之文件上传攻防解析(转载)

Web攻防系列教程之文件上传攻防解析:文件上传是WEB应用很常见的一种功能,本身是一项正常的业务需求,不存在什么问题。但如果在上传时没有对文件进行正确处理,则很可能会发生安全问题。

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的详细资料请自行百度。

这个站点http://www.2cto.com(注:由于该网站为真实站点,为了目标网站的安全,所以用target来代替真实域名)的文件上传功能只采用了客户端Javascript检测,所以很容易被绕过。下面我们来具体看下操作方法。

首先,我们看一下正常情况下上传一个.asp文件,应用会有什么反应。

a. 我们访问这个URL(http://www.target.com/AdvHTML_Popups/upload.asp),会出现一个上传文件的页面

b. 我们先选择一个.asp文件,这时会提示不允许上传这种类型的文件。注意,这时我们还没有点击“件,这时会提示按钮,就出现提示信息。我们可以判断出这个网站是在客户端判断上传文件类型的合法性的。如图1:

var cpro_id = "u6885494";

推荐阅读
  • 如何将PHP文件上传至服务器及正确配置服务器地址 ... [详细]
  • CTF竞赛中文件上传技巧与安全绕过方法深入解析
    CTF竞赛中文件上传技巧与安全绕过方法深入解析 ... [详细]
  • 2018年9月21日,Destoon官方发布了安全更新,修复了一个由用户“索马里的海贼”报告的前端GETShell漏洞。该漏洞存在于20180827版本的某CMS中,攻击者可以通过构造特定的HTTP请求,利用该漏洞在服务器上执行任意代码,从而获得对系统的控制权。此次更新建议所有用户尽快升级至最新版本,以确保系统的安全性。 ... [详细]
  • 本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ... [详细]
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • 在开发过程中,我最初也依赖于功能全面但操作繁琐的集成开发环境(IDE),如Borland Delphi 和 Microsoft Visual Studio。然而,随着对高效开发的追求,我逐渐转向了更加轻量级和灵活的工具组合。通过 CLIfe,我构建了一个高度定制化的开发环境,不仅提高了代码编写效率,还简化了项目管理流程。这一配置结合了多种强大的命令行工具和插件,使我在日常开发中能够更加得心应手。 ... [详细]
  • 近期,针对Axis2默认凭据漏洞的攻击案例在安全社区引起了广泛关注。这些攻击通常利用Axis2的默认用户名和密码进行渗透测试,技术手段相对固定。本文在综合分析多个案例的基础上,详细探讨了该漏洞的安全风险,并提出了有效的防范措施,以帮助企业和开发者加强Web服务的安全防护。 ... [详细]
  • 动态壁纸 LiveWallPaper:让您的桌面栩栩如生(第二篇)
    在本文中,我们将继续探讨如何开发动态壁纸 LiveWallPaper,使您的桌面更加生动有趣。作为 2010 年 Google 暑期大学生博客分享大赛 Android 篇的一部分,我们将详细介绍 Ed Burnette 的《Hello, Android》第三版中的相关内容,并分享一些实用的开发技巧和经验。通过本篇文章,您将了解到如何利用 Android SDK 创建引人入胜的动态壁纸,提升用户体验。 ... [详细]
  • 本文深入探讨了 hCalendar 微格式在事件与时间、地点相关活动标记中的应用。作为微格式系列文章的第四篇,前文已分别介绍了 rel 属性用于定义链接关系、XFN 微格式增强链接的人际关系描述以及 hCard 微格式对个人和组织信息的描述。本次将重点解析 hCalendar 如何通过结构化数据标记,提高事件信息的可读性和互操作性。 ... [详细]
  • AppFog 是一个基于 CloudFoundry 的多语言 PaaS(平台即服务)提供商,允许用户在其平台上轻松构建和部署 Web 应用程序。本文将通过详细的图文步骤,指导读者如何在 AppFog 免费云平台上成功部署 WordPress,帮助用户快速搭建个人博客或网站。 ... [详细]
  • 本文详细介绍了如何在微信小程序中使用JavaScript实现图片上传至PHP服务器的方法。通过具体的代码示例,帮助开发者掌握从客户端选择图片、处理图片数据到服务器端接收并保存图片的完整流程。同时,文章还提供了常见问题的解决方案和优化建议,确保上传过程的高效性和稳定性。 ... [详细]
  • 本文详细介绍了如何解决DNS服务器配置转发无法解析的问题,包括编辑主配置文件和重启域名服务的具体步骤。 ... [详细]
  • 单片微机原理P3:80C51外部拓展系统
      外部拓展其实是个相对来说很好玩的章节,可以真正开始用单片机写程序了,比较重要的是外部存储器拓展,81C55拓展,矩阵键盘,动态显示,DAC和ADC。0.IO接口电路概念与存 ... [详细]
  • 最详尽的4K技术科普
    什么是4K?4K是一个分辨率的范畴,即40962160的像素分辨率,一般用于专业设备居多,目前家庭用的设备,如 ... [详细]
  • 深入解析Gradle中的Project核心组件
    在Gradle构建系统中,`Project` 是一个核心组件,扮演着至关重要的角色。通过使用 `./gradlew projects` 命令,可以清晰地列出当前项目结构中包含的所有子项目,这有助于开发者更好地理解和管理复杂的多模块项目。此外,`Project` 对象还提供了丰富的配置选项和生命周期管理功能,使得构建过程更加灵活高效。 ... [详细]
author-avatar
过去无法回去
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有