Web漏洞分析-文件解析及上传(下)

news2024/9/26 3:19:04

       随着互联网的迅速发展,网络安全问题变得日益复杂,而文件解析及上传漏洞成为攻击者们频繁攻击的热点之一。本文将深入研究文件解析及上传漏洞,通过对文件上传、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 文件的功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1310323.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端vue3——实现二次元人物拼图校验

文章目录 ⭐前言⭐vue3拖拽实现拼图&#x1f496; 思路分解&#x1f496; 布局结构&#x1f496; 拖拽函数&#x1f496; 校验函数&#x1f496; inscode整体代码 ⭐运行效果&#x1f496; 随机顺序&#x1f496; 拖拽中&#x1f496; 校验失败&#x1f496; 校验通过 ⭐总结⭐…

【LeetCode:2132. 用邮票贴满网格图 | 二维前缀和 + 二维差分和】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

【Java8系列08】Java8中reducing妙用

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

内网穿透的应用-如何在群辉7.2中使用Docker安装并远程访问本地网心云容器魔方管理界面

文章目录 1. 拉取容器魔方镜像2. 运行容器魔方3. 本地访问容器魔方4. 群辉安装Cpolar5. 配置容器魔方远程地址6. 远程访问测试7. 固定公网地址 本文主要介绍如何在群辉7.2版本中使用Docker安装容器魔方&#xff0c;并结合Cpolar内网穿透工具实现远程访问本地网心云容器魔方界面…

kernel32.dll动态链接库报错解决方法,详细解析kernel32.dll文件修复

在使用计算机过程中&#xff0c;你可能会遇到各种各样的错误消息。其中一个常见的错误是“找不到kernel32.dll”或类似的错误。这个错误消息通常会出现在运行某些程序时&#xff0c;可能会导致程序无法正常工作&#xff0c;甚至无法启动。那么&#xff0c;kernel32.dll到底是什…

UE5 C++(一)— 入门介绍

这里写目录标题 创建项目UBT和UHT介绍UnrealBuildTool&#xff08;UBT&#xff09;UnrealHeadTool&#xff08;UHT&#xff09; UEC主要的头文件介绍UEC各个宏的作用 创建项目 创建一个名为DEMO的UE5项目工程&#xff1a; 创建完成之后&#xff1a; 这里我使用的是VSCODE开…

计算机网络课程设计【Python实现】

一、网络聊天程序的设计与实现 1、实验目的 使用Socket编程&#xff0c;了解Socket通信的原理&#xff0c;会使用Socket进行简单的网络编程&#xff0c;并在此基础上编写聊天程序&#xff0c;运行服务器端和客户端&#xff0c;实现多个客户端通过服务器端进行通信。 2、总体设…

mybatis与oracle数据库jdbcType类型对应关系

之前都是百度上搜的&#xff0c;各种对应的都有&#xff0c;总觉得有问题&#xff0c;最后直接通过跑代码查看了一下对应关系&#xff0c;我用的oracle是19c。 常见的对应关系如下 oracle类型jdbcTypeVARCHAR2JdbcType.VARCHARNVARCHARJdbcType.NVARCHARCHARJdbcType.CHARCLOB…

阅读代码的记录

1-utils_metrics.py用在train.py中做指标衡量&#xff0c;现在想在推理&#xff08;predict.py&#xff09;的时候衡量一下指标 2-调研眼睛部位的单独分割。 https://blog.csdn.net/qq_40234695/article/details/88633094 衡量图像语义分割准确率主要有三种方法&#xff1a; …

CS106L2023 and CS106B 环境配置(详细教程)

1.问题&#xff1a; &#xff08;1&#xff09;CS106L 运行./setup.sh 脚本时出错 &#xff08;windows 请下载git&#xff0c;在git bash 打开运行&#xff09; &#xff08;2&#xff09;CS106B&#xff0c;QT构建 构建错误&#xff1a;一般构建错误&#xff0c;例如 Erro…

QT学习(0):qmake和编译

一、编译和链接 1.预处理 预处理是使用预处理器工具&#xff08;系统在编译过程中调用的预先编写的程序&#xff09;执行的 C 编译过程的第一步。C程序中所有以#符号开头的语句都会被预处理器处理&#xff0c;它将我们的程序文件转换为没有#语句的中间文件。 删除注释宏扩展…

【TC3xx】GETH

目录 一、RGMII 二、SMI接口 三、TC3xx MCAL 3.1 MCU 3.2 Port 3.3 DMA 3.4 中断配置 3.5 ETH 3.6 集成 一、RGMII TC3xx支持MII/RMII/RGMII三种以太网数据通信接口。其中RGMII经常用于MAC和MAC之间&#xff0c;或MAC与PHY之间的通信&#xff0c;RGMII的带宽可以是10M…

对于初学者来说,从哪些方面开始学习 Java 编程比较好?

对于初学者来说&#xff0c;从哪些方面开始学习 Java 编程比较好&#xff1f; 在开始前我有一些资料&#xff0c;是我根据自己从业十年经验&#xff0c;熬夜搞了几个通宵&#xff0c;精心整理了一份「Java的资料从专业入门到高级教程工具包」&#xff0c;点个关注&#xff0c;全…

vue2-安装elementUI时警告

警告内容&#xff1a;npm WARN deprecated core-js2.6.12: core-js<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up …

机器学习可重复性危机下,创建复杂数据系统的挑战

文章目录 一、前言二、主要内容三、总结 &#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 一、前言 数据科学系统已成为众多研究领域的关键性工具&#xff0c;其开发者群体呈现出多元化的背景特征。在过去十年中&#xff0c;尽管数据科学与机器学习的强…

OpenSSL的源码在哪里下载?

官方网站去下载&#xff0c;网址&#xff1a; https://www.openssl.org/source/ 比较老的版本的下载页面地址&#xff1a; https://www.openssl.org/source/old/ 由于某面板的OpenSSL模块的安装配置语句如下&#xff1a; --with-openssl/root/rpmbuild/BUILD/openssl-1.0.2u所…

TreeSelect 树型选择控件 编辑回显时所选的值与展开后的数据不对应 解决方案

一、业务场景&#xff1a; 最近在使用Vue框架和antd-vue组件库的时候&#xff0c;发现在做编辑回显时** TreeSelect 树型选择控件** 组件的选中的值能拿到&#xff0c;但是在下拉列表的回显位置有偏差。为了大家后面遇到和我一样的问题&#xff0c;给大家分享一下 二、bug信息…

商城免费搭建之java鸿鹄云商 java电子商务商城 Spring Cloud+Spring Boot+mybatis+MQ+VR全景+b2b2c

鸿鹄云商 SAAS云产品概述 1. 涉及平台 平台管理、商家端&#xff08;PC端、手机端&#xff09;、买家平台&#xff08;H5/公众号、小程序、APP端&#xff08;IOS/Android&#xff09;、微服务平台&#xff08;业务服务&#xff09; 2. 核心架构 Spring Cloud、Spring Boot、My…

el-tooltip 修改全局的样式 (默认的太丑了)

默认的是黑色的框 话不多说,上代码 : .atooltip.el-tooltip__popper[x-placement^"top"] .popper__arrow {border-top-color: #fff;color: #999;box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1); } .atooltip.el-tooltip__popper[x-placement^"top"] .popp…

kotlin 基础概览

继承类/实现接口 继承类和实现接口都是用的 : &#xff0c;如果类中没有构造器 ( constructor )&#xff0c;需要在父类类名后面加上 () &#xff1a; class MainActivity : BaseActivity(), View.OnClickListener 空安全设计 Kotlin 中的类型分为「可空类型」和「不可空类型」…