Struts2 OGNL表达式注入漏洞解决
Struts2 OGNL表达式注入漏洞解决
线上项目使用Struts2 版本2.3,需要升级版本,记录解决步骤,不确保其它项目都可以
- pom.xml
<struts.version>2.5.30</struts.version>
<!-- struts相关库 -->
<dependency><groupId>org.apache.struts</groupId><artifactId>struts2-core</artifactId><version>${struts.version}</version>
</dependency>
<dependency><groupId>org.apache.struts</groupId><artifactId>struts2-config-browser-plugin</artifactId><version>${struts.version}</version>
</dependency>
<dependency><groupId>org.apache.struts</groupId><artifactId>struts2-spring-plugin</artifactId><version>${struts.version}</version>
</dependency>
<dependency><groupId>org.apache.struts</groupId><artifactId>struts2-json-plugin</artifactId><version>${struts.version}</version>
</dependency>
- web.xml
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
替换成
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
- struts.xml
2.1 > 2.5
package
添加 strict-method-invocation=“false” 属性
添加 global-allowed-methods
如下
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN""http://struts.apache.org/dtds/struts-2.1.dtd">替换成
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd">
<package name="root" extends="default" namespace="/" strict-method-invocation="false"><default-interceptor-ref name="myStack" /><global-allowed-methods>regex:.*</global-allowed-methods>
</package>
- 拦截器 参数处理
Map<String, Object> parameters = invocation.getInvocationContext().getParameters();
ActionContext ac = invocation.getInvocationContext();
ValueStack stack = ac.getValueStack();
for (Map.Entry<String, Object> map : parameters.entrySet()) {Object[] obj = (Object[]) map.getValue();// 获取传入的参数值是否有非法,xss攻击stack.setValue(map.getKey(), xssEncode(obj[0].toString()));
}
修改为
HttpParameters parameters = invocation.getInvocationContext().getParameters();
ActionContext ac = invocation.getInvocationContext();
ValueStack stack = ac.getValueStack();
for (Map.Entry<String, Parameter> map : parameters.entrySet()) {Parameter obj = map.getValue();// 获取传入的参数值是否有非法,xss攻击stack.setValue(map.getKey(), xssEncode(obj.getValue()));
}
编译部署,启动成功
补充
网址访问存在 https 访问变为 http
需要再tomcat server.xml中 修改这一部分
<Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"
URIEncoding="UTF-8" secure="true" scheme="https" proxyPort="443"/>
Struts2 OGNL表达式注入漏洞解决相关推荐
- SQL注入漏洞解决方法
本文只指针编码层次的SQL注入漏洞解决方法,例子代码是以java为主. 1,参数化的预编译查询语句 不安全例子 String query = "SELECT account_balance ...
- Spring Data MongoDB SpEL表达式注入漏洞安全风险通告第二次更新
奇安信CERT 致力于第一时间为企业级用户提供安全风险通告和有效解决方案. 安全通告 近日,奇安信CERT监测到Spring Data MongoDB SpEL表达式注入漏洞(CVE-2022-229 ...
- 浅入深SpEL表达式注入漏洞总结
SpEL 简介 在Spring 3 中引入了 Spring 表达式语言 (Spring Expression Language,简称SpEL), 这是一种功能强大的表达式语言,支持在运行时查询和操作对 ...
- Spring Boot框架表达式注入漏洞
2019独角兽企业重金招聘Python工程师标准>>> 高危漏洞的曝光总是发生在意想不到的时刻:周末所有人都准备享受周末的时间,Spring Boot框架的SpEL表达式注入通用漏洞 ...
- Struts2 ognl表达式
一.实验目的 1. 掌握OGNL表达式的语法结构 2. 掌握OGNL表达式获取Action中的相关值的方法. 3. 理解投影的含义. 二.实验内容 创建业务控制类OgnlAction,测试基本属性.基 ...
- struts2 OGNL表达式
一.OGNL OGNL是Object-Graph Navigation Language的缩写,全称为对象图导航语言,是一种功能强大的表达式语言,它通过简单一致的语法,可以任意存取对象的属性或者调用对 ...
- Atlassian Confluence OGNL表达式注入代码执行漏洞(CVE-2021-26084)
环境搭建: 使用vulhub,进入文件夹启动环境: docker-compose up -d 环境启动后,访问http://your-ip:8090即可进入安装向导,参考CVE-2019-3396这个 ...
- 阿里云服务器漏洞phpmyadmin CVE-2016-6617 SQL注入漏洞 解决方法
阿里云服务器漏洞phpmyadmin CVE-2016-6617如下图: 首先上网搜了下 漏洞phpmyadmin CVE-2016-6617,有人这样回答的 于是又开始搜phpmyadmin的升级 ...
- java 代码执行el,专属于java的漏洞——EL表达式注入
前言"FSRC经验分享"系列文章,旨在分享焦点科技信息安全部工作过程中的经验总结,包括但不限于漏洞分析.运营技巧.sdl推行.等保合规.自研工具等等. 欢迎各位安全从业者持续关注~ ...
最新文章
- ArcEngine读取数据(数据访问)-转载
- ssm框架app管理平台_后端程序员跨平台应用的前端框架uni-app初探
- FastJsonUtils 需要fastjson
- 基于主成分分析法的综合评价模型及matlab实现
- esp32 怎么分配freertos 堆栈大小_详解STM32单片机的堆栈
- VINS(五)非线性优化与在线标定调整
- 客户的价值源于客户的流程
- 同事发来的文件是个html,逮到一个疑是感染html,htm,网页文件的木马
- unity天空盒渐变,Unity 3D从一个天空盒淡入另一个天空盒
- 微型计算机控制技术第二版答案第四章,微型计算机控制技术答案第四章2.pdf
- 希尔密码C语言源代码,希尔密码加密解密(示例代码)
- 上次来杭州,已经六年了。。
- 笔记本电脑的计算机配置在哪里可以找到,笔记本无线设置在哪里_笔记本电脑设置无线网络的步骤-win7之家...
- android 更新相册,Android 图片存入系统相册更新显示实例详解
- 用友 hr win10 java_用友u8win10安装教程_用友u8win10安装方法步骤教程_用友u8安装教程...
- 人体神经网络的组成部分,人体的神经网络是什么
- python照片转彩色手绘_python实现图片彩色转化为素描
- caffe 人脸关键点检测_密集人脸关键点检测
- Cisco设备的启动以及交换机的介绍
- 第三章微分中值定理及导数应用(方程的根)
热门文章
- 【最通俗易懂】C#有限状态机
- 【随笔】秋天刚到,夏天未远
- C语言sizeof()函数
- 论文解读《MSNet-4mC:学习有效的多尺度表示来识别DNAn4-甲基胞嘧啶位点》
- java 插入到完整的classbody_java语法错误,将“}”插入到完整 MethodBody 中
- 10道网络八股文,每道都很经典,让你在面试中逼格满满
- 【ORACLE】Oracle提高篇之DECODE
- ZigBee 3.0教程-步骤7:物理接口-Switch
- C# 通过搜狐微博api远程更换壁纸
- 【Python】爬虫初体验,40行代码爬取双色球2003年至今的开奖号码