文件上传解析漏洞,以及检测方式的绕过

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 文件上传解析漏洞,以及检测方式的绕过

Web安全-文件上传漏洞

Webshell概念

Webshell是一种利用Web服务器的漏洞或弱点,通过远程上传恶意代码到服务器上(实质上是一种网页后门),并执行命令或控制服务器的一种攻击方式。在上传过后,该文件与网站服务器web目录下的正常网页文件混在一起,然后就可以通过该文件得到一个命令执行环境

攻击者可以通过Webshell获取服务器的高权限,进而进行非法操作,例如修改服务器文件、数据库操作、执行系统命令等。Webshell具有隐蔽性高、操作方便等特点,常被用于非法攻击、入侵行为或用于进行系统安全评估和渗透测试。通常为jsp,asp,php写成的脚本文件

攻击者入侵服务器,使用webshell,无论传文件或者修改文件,必然会有一个文件包含webshell代码,我们有以下检测方式:

1.寻找静态特征,从文件代码入手检测

2.webshell通常以HTTP交互,我们可以在HTTP的请求与响应中找寻痕迹

文件上传漏洞的原因

在普通的Web程序中,用户可以上传文件,而上传的文件可以被Web应用解析。假如未对用户上传文件进行检测或者检测不严格,一旦用户上传的恶意文件(甚至是Webshell)被服务器解析后(即文件上传与解析同时出现才能利用),将造成安全问题,即有两个条件:

1.用户可以绕过服务器检测上传恶意文件

2.恶意文件可以在一定条件下被解析

常见的上传漏洞

文件解析漏洞

这类漏洞通常是伴随着Web容器解析文件(文件已经在服务器上)而产生。常见的有:IIS,Nginx,Apache,Tomcat等

IIS解析漏洞

在IIS6.0版本中有两个常见漏洞:

1.当建立起*.asa,*.asp的文件夹时,其中的任意格式文件都可以被解析为ASP脚本

2.当文件格式为*.asp;1.jpg时,该文件仍然会被当做ASP脚本被解析

Apache解析漏洞

只要是.php.结尾,且“.”无法被Apache解析,就会被Apache服务器解析成php文件,问题是apache如果在mime.types文件里面没有定义的扩展名在诸如x1.x2.x3的情况下,最后一个x3的没有定义,他会给解析成倒数第二个的x2的定义的扩展名。所以xxx.php.rar或者 xxx.php.111这些默认没在mime.types文件定义的都会解析成php的。
用法:在一个有文件上传漏洞的有apache与php搭建的服务器上上传一个一句话木马的文件,这个文件后缀名为.php.111,我们在访问这个文件时就会被解析成php执行

PHP CGI解析漏洞

Nginx默认是以CGI的方式支持PHP解析的,普遍的做法是在Nginx配置文件中通过正则匹配设置SCRIPT_FILENAME。当访问www.xx.com/phpinfo.jpg/1.php这个URL时,$fastcgi_script_name会被设置为“phpinfo.jpg/1.php”,然后构造成SCRIPT_FILENAME传递给PHP CGI,并将phpinfo.jpg作为PHP文件解析。如果开启了fix_pathinfo这个选项,那么就会触发在PHP中的如下逻辑:PHP会认为SCRIPT_FILENAME是phpinfo.jpg,而1.php是PATH_INFO,所以就会将phpinfo.jpg作为PHP文件来解析了。
用法:在一个有文件上传漏洞的Nginx与php搭建的服务器上上传一个一句话木马的图片,当我们在上传的图片的路径下一级添加上1.php,那么图片木马就可以被解析成php语言。

文件上传漏洞

导致该漏洞的原因在于代码作者没有对访客提交的数据进行检验或者过滤不严,可以直接提交修改过的数据绕过扩展名的检验。

1.在客户端使用JavaScript进行文件校验,即在本地验证

2.服务端通过检测文件的Mime类型进行核验,检测出文件是否符合白名单或黑名单(部分会检测是否含恶意代码)

客户端检测

客户端检测

相较于服务端验证来说,客户端检测是非常好处理的,我们可以在客户端使用工具修改文件验证的JavaScript,也可以重新构造文件上传的HTML文档或者使用抓包软件截取报文来绕过

客户端使用工具修改文件验证的JavaScript:使用工具将报文中的表单中验证文件的对应事件删除即可
重新构造文件上传的HTML文档:通常情况下只需要删除form表单中的验证事件,将其他部分保留作为HTMl文档即可
使用抓包软件截取报文来绕过:我们可以将脚本修改成符合客户端检测的文件类型进行上传,然后进行抓包,将文件修改回原本的文件格式,这里需要注意Connect-Length的值,在修改后文件名可能会有字符长度的改变,所以为了防止可能发生的上传失败,我们需要将其修改成合适的长度

服务端检测

1.文件扩展名白名单检测:即只允许一种或几种文件类型允许被服务器接收

2.文件扩展名黑名单检测:处于黑名单中的文件类型不允许被服务器接收

3.文件重命名:即使文件上传成功,经过重命名后攻击者找到自己的脚本进行执行可能性下降

4.文件类型验证:基于MIME的验证等

绕过文件类型黑名单检测:

  1. 找到不在黑名单中的文件类型,并利用该类型的文件

  2. 针对于对字符大小写转换不敏感的平台,转换大小写绕过

    3.windows平台中文件扩展名后存在 .或空格时,会自动去除,进行解析

相关文章
|
2月前
|
SQL 安全 网络安全
网络安全的护城河:漏洞防御与加密技术的深度解析
【10月更文挑战第37天】在数字时代的浪潮中,网络安全成为守护个人隐私与企业资产的坚固堡垒。本文将深入探讨网络安全的两大核心要素——安全漏洞和加密技术,以及如何通过提升安全意识来强化这道防线。文章旨在揭示网络攻防战的复杂性,并引导读者构建更为稳固的安全体系。
105 1
|
2月前
|
SQL 安全 测试技术
网络安全的盾牌与剑——漏洞防御与加密技术解析
【10月更文挑战第28天】 在数字时代的浪潮中,网络空间安全成为我们不可忽视的战场。本文将深入探讨网络安全的核心问题,包括常见的网络安全漏洞、先进的加密技术以及提升个人和组织的安全意识。通过实际案例分析和代码示例,我们将揭示黑客如何利用漏洞进行攻击,展示如何使用加密技术保护数据,并强调培养网络安全意识的重要性。让我们一同揭开网络安全的神秘面纱,为打造更加坚固的数字防线做好准备。
47 3
|
1月前
|
安全 Ubuntu Shell
深入解析 vsftpd 2.3.4 的笑脸漏洞及其检测方法
本文详细解析了 vsftpd 2.3.4 版本中的“笑脸漏洞”,该漏洞允许攻击者通过特定用户名和密码触发后门,获取远程代码执行权限。文章提供了漏洞概述、影响范围及一个 Python 脚本,用于检测目标服务器是否受此漏洞影响。通过连接至目标服务器并尝试登录特定用户名,脚本能够判断服务器是否存在该漏洞,并给出相应的警告信息。
167 84
|
1月前
|
SQL 安全 算法
网络安全之盾:漏洞防御与加密技术解析
在数字时代的浪潮中,网络安全和信息安全成为维护个人隐私和企业资产的重要防线。本文将深入探讨网络安全的薄弱环节—漏洞,并分析如何通过加密技术来加固这道防线。文章还将分享提升安全意识的重要性,以预防潜在的网络威胁,确保数据的安全与隐私。
75 2
|
2月前
|
安全 算法 网络安全
网络安全的盾牌与剑:漏洞防御与加密技术深度解析
在数字信息的海洋中,网络安全是航行者不可或缺的指南针。本文将深入探讨网络安全的两大支柱——漏洞防御和加密技术,揭示它们如何共同构筑起信息时代的安全屏障。从最新的网络攻击手段到防御策略,再到加密技术的奥秘,我们将一起揭开网络安全的神秘面纱,理解其背后的科学原理,并掌握保护个人和企业数据的关键技能。
81 3
|
2月前
|
SQL 监控 安全
网络安全的盾牌与利剑:漏洞防御与加密技术解析
在数字时代的洪流中,网络安全如同一场没有硝烟的战争。本文将深入探讨网络安全的核心议题,从网络漏洞的发现到防御策略的实施,以及加密技术的运用,揭示保护信息安全的关键所在。通过实际案例分析,我们将一窥网络攻击的手段和防御的艺术,同时提升个人与企业的安全意识,共同构筑一道坚固的数字防线。
|
2月前
|
安全 算法 网络安全
网络安全的盾牌与剑:漏洞防御与加密技术解析
【10月更文挑战第42天】在数字时代的海洋中,网络安全是守护数据宝藏的坚固盾牌和锋利之剑。本文将揭示网络安全的两大支柱——漏洞防御和加密技术,通过深入浅出的方式,带你了解如何发现并堵塞安全漏洞,以及如何使用加密技术保护信息不被窃取。我们将一起探索网络安全的奥秘,让你成为信息时代的智者和守护者。
49 6
|
2月前
|
存储 SQL 安全
网络安全的屏障与钥匙:漏洞防御与加密技术解析
【10月更文挑战第42天】在数字时代的浪潮中,网络安全成为守护个人隐私与企业数据不被侵犯的关键防线。本文将深入探讨网络安全中的两大核心议题——漏洞防御和加密技术。我们将从网络漏洞的识别开始,逐步揭示如何通过有效的安全策略和技术手段来防范潜在的网络攻击。随后,文章将转向加密技术的奥秘,解读其在数据传输和存储过程中保护信息安全的作用机制。最后,强调提升个人和企业的安全意识,是构建坚固网络安全屏障的重要一环。
|
3月前
|
存储 域名解析 缓存
了解攻击者如何利用Active Directory中的DNS漏洞
DNS服务器是AD环境中不可或缺的一部分。使用DNS服务器可以完成一些简单但关键的活动,如身份验证、查找计算机和识别域控制器。
|
2月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
103 2

推荐镜像

更多