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

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

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平台中文件扩展名后存在 .或空格时,会自动去除,进行解析

相关文章
|
3月前
|
SQL 监控 安全
服务器安全性漏洞和常见攻击方式解析
服务器安全性漏洞和常见攻击方式解析
|
1月前
|
域名解析 弹性计算 网络协议
阿里云DNS常见问题之mx设置好但生效检测中未通过如何解决
阿里云DNS(Domain Name System)服务是一个高可用和可扩展的云端DNS服务,用于将域名转换为IP地址,从而让用户能够通过域名访问云端资源。以下是一些关于阿里云DNS服务的常见问题合集:
|
1月前
|
SQL 安全 网络安全
构筑数字堡垒:网络安全漏洞解析与防御策略
在数字化时代,网络安全已成为维护信息完整性、保障用户隐私和确保商业连续性的关键。本文将深入探讨网络安全领域的核心议题—安全漏洞及其防御机制。通过分析常见网络攻击手段,如SQL注入、跨站脚本攻击(XSS)及拒绝服务(DoS)攻击,揭示其背后的原理与潜在危害。同时,文章将重点介绍加密技术的种类和应用场景,以及如何通过强化安全意识,构建多层次的防御体系来有效预防和应对网络安全威胁。本研究旨在为读者提供一份系统性的网络安全防护指南,帮助个人和组织在不断演变的威胁面前保持警惕,并采取适当的安全措施。
21 2
|
2月前
|
开发框架 安全 中间件
38、中间件漏洞解析-IIS6.0
38、中间件漏洞解析-IIS6.0
15 0
|
3月前
|
传感器 机器学习/深度学习 自动驾驶
百度Apollo:激光雷达检测技术深度解析
百度Apollo:激光雷达检测技术深度解析
51 2
|
11月前
|
安全 网络协议 Shell
DNS域传送漏洞
备份服务器需要利用”域传送“从主服务器上复制数据,然后更新自身的数据库,以打到数据同步的目的,这样是为了服务器挂了还有备份可用。而DNS域传送漏洞,则是由于dns配置不当,本来只有备份服务器才能获取主从服务器的数据,由于漏洞导致 任意client都能通过“域传送”获得主服务器的数据(zone数据库信息)。
582 0
|
11月前
|
开发框架 安全 .NET
从零到IIS建站再到IIS解析漏洞复现
从零到IIS建站再到IIS解析漏洞复现
144 0
|
11月前
|
安全 应用服务中间件 PHP
NGINX文件解析漏洞
NGINX文件解析漏洞
197 0
|
开发框架 安全 .NET
38、中间件漏洞解析-IIS6.0
38、中间件漏洞解析-IIS6.0
73 1
38、中间件漏洞解析-IIS6.0
|
安全
蓝桥杯2020年第十一届JavaB组真题题目+解析+代码+答案:3.合并检测
蓝桥杯2020年第十一届JavaB组真题题目+解析+代码+答案:3.合并检测
142 0

推荐镜像

更多