随着互联网的迅速发展,网络安全问题变得日益复杂,而文件解析及上传漏洞成为攻击者们频繁攻击的热点之一。本文将深入研究文件解析及上传漏洞,通过对文件上传、Web容器IIS、命令执行、Nginx文件解析漏洞以及公猫任意文件上传等方面的细致分析,揭示这些漏洞背后的本质和攻击方式。
文件上传漏洞一直是攻击者们渗透系统的首选方式。通过构造巧妙的上传文件,攻击者能够实施多种恶意行为,如上传包含恶意脚本的文件,从而实现远程代码执行。本文将深入探讨文件上传漏洞的工作原理、攻击场景,并通过实际案例为读者提供更直观的理解,帮助其更好地认识这一类型漏洞的威胁性。
在网络攻击的舞台上,Web容器扮演着至关重要的角色。特别是在Windows操作系统下,IIS作为最为常见的Web服务器,存在着多种可能的文件解析和上传漏洞。本文将详细探讨这些潜在的漏洞,揭示攻击者如何善用这些漏洞渗透系统,以帮助读者更全面地了解并防范这一类威胁
五、Tomcat任意文件上传
1、Tomcat相关配置
(1)、环境讲解
Tomcat任意文件上传漏洞环境: Windows
Tomcat运行环境:JDK 8.0.
下载链接:
http://www.oracle.com/technetwork/java/javasedownloads/jdk8-downloads-2133151.html
Tomcat 7.0.79
(2)、环境配置
解压文件夹 将文件夹放到合适位置
(3)、环境变量
①、在运行Tomncat之前需要配置环境变量 环境变量1:JAVA_HOME 安装IDK8.0的目录路径在计算机->属性->高级程序设置->环境变量->系统变量中点击新建 然后输入变量名和变量值。
②、环境变量2: CATALINA HOME
变量值tomcat的目录路径 点击新建变量输入变量名和变量值
③、环境变量3: Path 点击系统变量中的Path:
(4)、环境启动
运行:cmd命令行运行tomcat文件夹下的bin文件夹中startup.bat
访问127.0.0.1:8080。有如下画面说明配置成功。
(5)、漏洞配置
①、tomcat文件夹下的/conf/web.xml文件
在114行插入以下内容:
<init-param>
<param-name>readonly</param-name>
<param-value>false</param-value>
</init-param>
②、漏洞配置
修改后如图
修改完成后重启Tomcat服务器
shutdown.bat startup.bat
2、Tomcat任意文件上传
(1)、漏洞介绍
Tomcat 远程代码执行漏洞,编号: CVE-2017-12615
将 readonly 参数设置为 false 时,即可通过 PUT 方式创建一个 JSP 文件,并可以执行任
意代码
(2)、漏洞复现
①、现在访问Tomcat服务,抓包,对包进行一些修改
为了方便查看效果,右键,选择send to repeater。
②、在repeater中发包: 提示404,请求被拦截
③、(1)、NTFS 文件流(2)、文件名相关限制(如 Windows 中文件名不能以空格结尾) 来绕过限 返回201说明
④、访问我们上传的文件,发现里面的代码已经被执行
六、上传漏洞的防御
1、上传漏洞防御原则
(1)、核心思想
确保上传的文件不会被服务器解析成可执行的脚本,进而引发偏离功能设计的意外后果。
(2)、限制文件上传类型
白名单结合黑名单: 黑名单常常会出现遗漏或者大小写绕过等问题, 所以通常采用白名单限制安全的文件类型,如
图片: .jpg,.png,.gif,.bmp
文档:.doc,.pdf,.txt
压缩包: .rar,.zip
类型限制前端JS结合后端限制。
扩展名检测,需要防范%截断或者文件名包含空格等特殊字符的绕过方式重命名用户上传的文件,杜绝上传时的文件名攻击。
对于图片上传,可以考虑对其进行二次渲染/压缩
(3)、限制上传文件大小
①、限制上传文件的大小,防止由于内存、磁盘耗尽造成的拒绝服务。
②、可以配置web server允许的最大Post大小。
③、可以在代码层面获取上传文件的大小,根据文件类型的不同进行进一步的过滤。
(4)、确保上传的文件被访问正确返回
①、将文件上传目录设置为静态资源目录,防止被解析为脚本执行
②、使用代理页面隐藏文件真实路径,如/attachment/getfile.php?fileid=123
③、使用上述方式时,确保Content-Type与实际文件类型一致
④、如果文件不允许在页面展示,仅允许下载,请设置Content-disposition:attachment
(5)、其他
①、确保上传的文件放在安全的路径下,必要时可将上传的文件存放于webserver之外的远程服务器。
②、确保web server版本为最新,防止由于web server漏洞造成的文件意外解析。
③、部分文件上传攻击会配合本地其他漏洞进行,所以也要保证web服务器减少其他可利用漏洞。
2、IIS6.0文件解析漏洞
(1)、防御方法
升级IIS版本,IIS5.1与7.5均无此漏洞
3、Apache文件解析漏洞
(1)、防御方法
不要使用AddHandler,改用SetHandler,写好正则,就不会有解析问题
<FilesMatch".+ .php$">
SetHandler application/x-httpd-php
</FilesMatch>
禁止.php.这样的文件执行,
<FilesMatch ".+ .ph(p[3457]?ltltml)\.">
Require all denied
</FilesMatch>
4、Nginx文件解析漏洞
(1)、防御方法
①、将php.ini文件中的cgi.fix_pathinfo的值设为0。这样php在解析1.php1.jpg这样的目录时,只要1.jpg不存在就会显示404.
②、将/etc/php5/fpm/pool.d/www.conf中security.limit_extensions后面的值设为.php。
5、Tomcat任意文件上传漏洞
(1)、防御方法
①、Tomcat任意文件上传漏洞环境较为苛刻,将Tomcat、jdk、php更新
②、避免开启可、通过 PUT 方式创建SP 文件的功能。