如何永久解决Apache Struts文件上传漏洞
Apache Struts又双叒叕爆文件上传漏洞了。
自Apache Struts框架发布以来,就存在多个版本的漏洞,其中一些漏洞涉及到文件上传功能。这些漏洞可能允许攻击者通过构造特定的请求来绕过安全限制,从而上传恶意文件。虽然每次官方都发布补丁进行修复,但是问题一直没有根除过,时不时的又爆出新的漏洞。
那么有没有办法杜绝Apache Struts文件上传漏洞呢?
依靠Apache Struts自身肯定是不行的,毕竟官方也不知道什么时候爆出新的漏洞。
所谓文件上传漏洞,是指绕过系统安全限制,非法上传恶意文件。哪如果让黑客不能上传恶意文件,或是让上传的恶意文件不能被执行,不就解决问题了吗?
思路有了,接下来就是如何实现拦截功能。要阻止黑客上传恶意文件,可以使用杀毒软件和防篡改功能来解决。杀毒软件不说了,没有一家杀毒公司敢保证100%的拦截效果,只能作为辅助手段。那就只剩下防篡改功能了。
但新的问题又来了,恶意文件有两种,一种是破坏操作系统的可执行文件,一种是破坏网站的网页木马。对于破坏操作系统的可执行文件,总不至于对全操作系统做防篡改保护吧,这样操作系统将立刻蓝屏。幸运的是,可以使用《护卫神.防入侵系统》的“进程防护”来解决这个问题。“进程防护”模块用于对软件做防护,可以限制软件的网络通信范围和文件访问范围。设置以后,软件只能按照预定规则访问文件和网络,没有任何办法越权,轻松搞定非法提权。
Apache Struts一般和Tomcat集成使用,接下来我们以Tomcat为防护对象,通过《护卫神.防入侵系统》,手把手演示如何一劳永逸的解决Apache Struts文件上传漏洞。
防护思路如下:
1、 设置Tomcat对jsp文件和可执行文件只有读取权限(阻止上传非法文件)
2、 设置Tomcat只对网站目录和日志目录有写权限(保障网站正常访问)
3、 设置Tomcat不能执行任何文件(禁止执行高危命令,例如cmd.exe、net.exe)
注意:虽然本文以Windows为例,但对Linux系统也适用,只是设置方法大同小异,详情请咨询护卫神客服!
第一步:添加Tomcat防护对象

(图一:添加Tomcat防护)
第二步:在“文件访问”选项卡,添加如下文件访问规则
温馨提示:护卫神.防入侵系统按优化级顺序逐条匹配访问路径规则,匹配到禁止操作就跳出。优先级数字越小,越优先执行!
| 优先级 | 访问路径 | 操作限制 |
| 1 | *\conhost.exe | 禁止新建、禁止改名、禁止修改、禁止删除 |
| 1 | *\werfault.exe | 禁止新建、禁止改名、禁止修改、禁止删除 |
| 10 | *.jsp | 禁止执行、禁止新建、禁止改名、禁止修改、禁止删除 |
| 10 | *.exe | 禁止执行、禁止新建、禁止改名、禁止修改、禁止删除 |
| 20 | d:\wwwroot\* | 禁止执行 |
| 20 | c:\hws.com\hwsjspmaster\tomcat9\* | 禁止执行 |
| 20 | c:\windows\temp\* | 禁止执行 |
| 20 | c:\windows\syswow64\config\systemprofile\* | 禁止执行 |
| 20 | c:\programdata\microsoft\* | 禁止执行 |
| 99 | * | 禁止执行、禁止新建、禁止改名、禁止修改、禁止删除 |
添加结果如下图:

(图二:Tomcat进程防护规则)
文件访问规则解释:
优先级为“1”的规则:
最先执行的规则,这2个是Windows启动Tomcat产生的配套进程。
只允许读取和执行,防止黑客创建同名文件绕过防护。

优先级为“10”的规则:
设置禁止写操作的文件类型。.jsp是网页木马,.exe是可执行文件。同样还可以添加其他类型,例如:.do、.dll、.vbs等等。
只允许读取,防止黑客上传此类恶意文件。

优先级为“20”的规则:
设置允许写操作的目录。一般填写网站目录、Tomcat安装目录、系统临时目录。
允许读取和写操作,禁止执行。

优先级为“99”的规则:
设置其他文件的访问规则。填写“*”,表示所有文件。
只允许读取,禁止黑客写操作任何文件,或执行高危命令(cmd.exe、net.exe)。

第三步:检查拦截效果
设置好防护规则后,黑客再想通过Apache Struts上传网页木马、恶意病毒,或执行高危命令(cmd.exe、net.exe)就成为不可能了,都会被护卫神拦截,轻松搞定Apache Struts文件上传漏洞。即使后期再次爆出此种漏洞,也不用担心,护卫神会一如既往的守护服务器安全!拦截效果如下图:

(图七:拦截非法执行cmd.exe提权)

(图八:拦截上传可执行文件)

(图八:拦截上传JSP文件)
原文:如何一劳永逸解决Apache Struts文件上传漏洞
相关文章:
如何永久解决Apache Struts文件上传漏洞
Apache Struts又双叒叕爆文件上传漏洞了。 自Apache Struts框架发布以来,就存在多个版本的漏洞,其中一些漏洞涉及到文件上传功能。这些漏洞可能允许攻击者通过构造特定的请求来绕过安全限制,从而上传恶意文件。虽然每次官方都发布补丁进行修…...
FPGA远程升级 -- FLASH控制
简介 前文讲到如何实现XILINX芯片程序跳转,但升级程序是事先通过VIVADO工具将两个程序合成一个BIN文件实现升级的,并不能在线更新升级。要实现远程升级的能力需要对FPGA的FLASH进行在线写入升级程序。 FLASH介绍 本次设计FLASH选用的是S25FL128芯片&…...
企业内训|高智能数据构建、Agent研发及AI测评技术内训-吉林省某汽车厂商
吉林省某汽车厂商为提升员工在AI大模型技术方面的知识和实践能力,举办本次为期8天的综合培训课程。本课程分为两大部分:面向全体团队成员的AI大模型技术结构与行业应用,以及针对技术团队的高智能数据构建与Agent研发。课程内容涵盖非结构化数…...
ARM异常处理 M33
1. ARMv8-M异常类型及其详细解释 ARMv8-M Exception分为两类:预定义系统异常(015)和外部中断(1616N)。 各种异常的状态可以通过Status bit查看,获取更信息的异常原因: CFSR是由UFSR、BFSR和MMFSR组成: 下面列举HFSR、MMFSR、…...
(补)算法刷题Day24: BM61 矩阵最长递增路径
题目链接 思路 方法一:dfs暴力回溯 使用原始used数组4个方向遍历框架 , 全局添加一个最大值判断最大的路径长度。 方法二:加上dp数组记忆的优雅回溯 抛弃掉used数组,使用dp数组来记忆遍历过的节点的最长递增路径长度。每遍历到已…...
探索 Bokeh:轻松创建交互式数据可视化的强大工具
探索 Bokeh:轻松创建交互式数据可视化的强大工具 在数据科学和数据分析领域,交互式数据可视化是一项不可或缺的技能。Bokeh 是一个强大的 Python 库,它可以帮助我们快速构建高质量的交互式图表和仪表盘,同时兼具高性能和灵活性。…...
【Rust自学】6.1. 定义枚举
喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 6.1.1. 什么是枚举 枚举允许我们列举所有可能的值来定义一个类型。这与其他编程语言中的枚举类似,但 Rust 的枚举更加灵活和强…...
【Java基础面试题035】什么是Java泛型的上下界限定符?
回答重点 Java泛型的上下界限定符用于对泛型类型参数进行范围限制,主要有上界限定符和下届限定符。 1)上界限定符 (? extends T): 定义:通配符?的类型必须是T或者T的子类,保证集合元素一定是T或者T的子类作用&…...
0基础学前端系列 -- 深入理解 HTML 布局
在现代网页设计中,布局是至关重要的一环。良好的布局不仅能提升用户体验,还能使内容更具可读性和美观性。HTML(超文本标记语言)结合 CSS(层叠样式表)为我们提供了多种布局方式。本文将详细介绍流式布局、Fl…...
【python高级】342-TCP服务器开发流程
CS模式:客户端-服务端模式 TCP客户端开发流程介绍(五步)(C端) 1.创建客户端套接字对象 2.和服务端套接字建立连接 3.发送数据 4.接收数据 5.关闭客户端套接字 TCP服务端开发流程(七步)…...
《计算机组成及汇编语言原理》阅读笔记:p48-p81
《计算机组成及汇编语言原理》学习第 4 天,p48-p81 总结,总计 34 页。 一、技术总结 1.CISC vs RISC p49, complex instruction set computing For example, a complex instruction set computing (CISC) chip may be able to move a lar…...
AI在传统周公解梦中的技术实践与应用
本文深入探讨了人工智能在传统周公解梦领域的技术实践与应用。首先介绍了传统周公解梦的背景与局限性,随后详细阐述了 AI 技术如何应用于梦境数据的采集、整理与分析,包括自然语言处理技术对梦境描述的理解,机器学习算法构建解梦模型以及深度…...
GIS数据处理/程序/指导,街景百度热力图POI路网建筑物AOI等
简介其他数据处理/程序/指导!!!(1)街景数据获取(2)街景语义分割后像素提取,指标计算代码(绿视率,天空开阔度、视觉熵/景观多样性等)(3…...
ssr实现方案
目录 序言 一、流程 二、前端要做的事情 三、节点介绍 四、总结 序言 本文不是详细的实现过程,是让你最快最直接的理解ssr的真正实现方法,有前端经验的同学,能够很好的理解过程,细节根据具体项目实现 一、前端要做的事情 1.…...
手动修改nginx-rtmp模块,让nginx-rtmp-module支持LLHLS
文章目录 1. 背景2. 开发环境搭建2.1 ffmpeg在ubuntu上安装2.2 nginx-rtmp-module在ubuntu上安装2.3 安装vscode环境2. 修改nginx-rtmp-module2.1 主要更新内容2.2 新增配置项2.3 代码更新3. LLHLS验证方法3.1 配置验证3.2 功能验证4. 注意事项5. 已知问题6. 后续计划1. 背景 …...
gitee别人仓库再上传自己仓库
一、新建一个自己的Git仓库 如果没有注册账号的朋友,可以先去注册一个Gitee的账号,用于管理自己的代码特别好用!!! 接下来就是在gitee上新建一个自己的仓库,如下图所示 二、右建 Git Bush Here删除.git文件…...
create-react-app 创建react项目报错 ERESOLVE unable to resolve dependency tree
会报下面这样一个错误,这个错误以前是没有的,最近才出现这个错误。这个非常的蛋疼,意思是testing-library这个库的版本需要react18,但现在安装的是react19。 create-react-app的github是有这个issue的,但官方好像没给…...
从git上下载的项目不完整,关于git lfs
文章目录 问题一、git lfs是什么?二、如何获取git lfs中的文件1.安装 Git LFS2.下载文件 问题 在git上下载的项目无法执行,打开相关文件后发现如下内容: git lfs pull version https://git-lfs.github.com/spec/v1 oid sha256:00920b6723bb39321eea748fd96279f8a…...
sqlite3,一个轻量级的 C++ 数据库库!
宝子们,今天咱来唠唠 sqlite3 这个超棒的轻量级 C 数据库库。它就像是一个小巧但功能齐全的“数据仓库”,能帮咱们轻松地存储、查询和管理数据,无论是开发小型的桌面应用,还是做一些简单的数据处理程序,它都能派上大用…...
Pytorch | 从零构建ParNet/Non-Deep Networks对CIFAR10进行分类
Pytorch | 从零构建ParNet/Non-Deep Networks对CIFAR10进行分类 CIFAR10数据集ParNet架构特点优势应用 ParNet结构代码详解结构代码代码详解SSEParNetBlock 类DownsamplingBlock 类FusionBlock 类ParNet 类 训练过程和测试结果代码汇总parnet.pytrain.pytest.py 前面文章我们构…...
Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...
#Uniapp篇:chrome调试unapp适配
chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器:Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...
MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...
Caliper 负载(Workload)详细解析
Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...
