如何永久解决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 前面文章我们构…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...
基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...
