Struts S2-048 RCE漏洞分析
应该是S2-048目前最详细的一篇了..
漏洞影响
Struts 2.3.x系列中的Showcase应用
使用了struts1 插件,并在使用ActionMessages时将客户端可控的参数拼接传递给new ActionMessage,如下图
插件介绍
Struts1插件主要是为了可以在Struts2应用程序中使用Struts1操作和ActionForms,插件提供了一个包装类org.apache.struts2.s1.Struts1Action来对Struts1的 Action 包装成为 Struts2中的Action,要在Struts 2应用程序中使用现有的Struts 1操作和ActionForms需要在对应的struts.xml中进行配置,如下图
触发流程
拿官网中漏洞公告提到的应用Showcase做演示,将程序导入到eclipse中方便分析。根据官网给出的关键字进行搜索,发现 org.apache.struts2.showcase.integration.SaveGangsterAction 满足漏洞触发条件。
根据对应的配置文件找到对应的action为/integration/saveGangster,将showcase在tomcat中跑起来,访问/integration/saveGangster,将断点设置在org.apache.struts2.s1.Struts1Action的execute方法中,发起一次请求来试试。
我们看到88行获取了一个Action对象,这个对象就是存在漏洞那个class
99行调用了存在漏洞的SaveGangsterAction的execute方法,并将我们的表单请求封装到了actionForm中
org.apache.struts2.showcase.integration.SaveGangsterAction的execute方法在45行在new ActionMessage对象时将表单的name参数拼接到了构造方法传递的参数中。通过org.apache.struts.action.Action.addMessages(HttpServletRequest request, ActionMessages messages)将请求与ActionMessages一起封装,使用了一个全局变量Globals.MESSAGE_KEY来做标识
在String org.apache.struts2.s1.Struts1Action.execute()的101行通过Globals.MESSAGE_KEY将这个ActionMessages获取了出来,进入后面的流程
108行调用了getText(msg.getKey()),将我们拼接后的参数后传入了getText(),最后在com.opensymphony.xwork2.util.LocalizedTextUtil.getDefaultMessage(String key, Locale locale, ValueStack valueStack, Object[] args, String defaultMessage)方法的683行调用了TextParseUtil.translateVariables来执行了ognl表达式
Struts S2-048 RCE漏洞分析的更多相关文章
- Struts2-057/CVE-2018-11776两个版本RCE漏洞分析(含EXP)
0x01 前言 2018年8月22日,Apache Strust2发布最新安全公告,Apache Struts2存在远程代码执行的高危漏洞(S2-057/CVE-2018-11776),该漏洞由Sem ...
- Joomla 3.0.0 - 3.4.6 RCE漏洞分析记录
0x00 前言 今天早上看到了国内几家安全媒体发了Joomla RCE漏洞的预警,漏洞利用的EXP也在Github公开了.我大致看了一眼描述,觉得是个挺有意思的漏洞,因此有了这篇分析的文章,其实这个 ...
- Sunlogin RCE漏洞分析和使用
介绍 前两天网上曝出了关于向日葵远控工具(Sunlogin)Windows个人版的RCE漏洞POC.因为利用简单并且网上出现了公开的自动化扫描脚本,所以测试的人很多,也出现了一些真实攻击.漏洞的问 ...
- 向日葵远程RCE漏洞分析及漏洞利用脚本编写
0x00 漏洞概述 向日葵是一款免费的,集远程控制电脑.手机.远程桌面连接.远程开机.远程管理.支持内网穿透等功能的一体化远程控制管理软件.如果想要手机远控电脑,或者电脑远控手机可以利用向日葵:如果是 ...
- Windows RDP的RCE漏洞分析和复现(CVE-2019-0708)
0x00 漏洞描述 Windows系列服务器于2019年5月15号,被爆出高危漏洞,该漏洞影响范围较广如:windows2003.windows2008.windows2008 R2.windows ...
- Spring Core rce漏洞分析(CVE-2022-22965)
漏洞描述: Springmvc框架参数绑定功能,绑定了请求里的参数造成变量注入,攻击者可以实现任意文件写入,漏洞点spring-beans包中. 漏洞编号: CVE-2022-22965 影响范围: ...
- Nuxeo 认证绕过和RCE漏洞分析(CVE-2018-16341)
简介 Nuxeo Platform是一款跨平台开源的企业级内容管理系统(CMS).nuxeo-jsf-ui组件处理facelet模板不当,当访问的facelet模板不存在时,相关的文件名会输出到错误页 ...
- Joomla3.4.6 RCE漏洞深度分析
笔者<Qftm>原文发布:https://www.freebuf.com/vuls/216512.html *严正声明:本文仅限于技术讨论与分享,严禁用于非法途径 0×00 背景 10月9 ...
- Spring Cloud Gateway actuator组建对外暴露RCE问题漏洞分析
Spring Cloud gateway是什么? Spring Cloud Gateway是Spring Cloud官方推出的第二代网关框架,取代Zuul网关.网关作为流量的,在微服务系统中有着非常作 ...
随机推荐
- linux ps 按进程消耗内存资源大小排序
linux ps 关于sort的解释 --sort spec specify sorting order. Sorting syntax is [+|-]key[,[+|-]key[,...]] Ch ...
- Unity对象池的实现
对象池是一个单例类: using System.Collections; using System.Collections.Generic; using UnityEngine; public cla ...
- Installshield创建快捷方式不能正常运行的几种原因
Installshield软件提供创建快捷方式的功能,但是经常有朋友发现创建了以后快捷方式不能运行,在此列一下几种常见原因供各位朋友参考: 1. 没有选择相应的working directory,这种 ...
- Python学习之路基础篇--09Python基础,初识函数
函数可以分为内置函数 和 自定义函数.这次关注的主要是自定义函数.定义函数之后,就可以在任何需要它的地方调用. 1 返回值的重要性 返回值的3种情况 没有返回值 ---- 返回None 不定 retu ...
- 一个mysqldump的报错
1.MySQL版本 5.7.14-log 2.问题分析 mysqldump -uxxx -pxxx db_nale 一般来讲上述命令主要是用于MySQL的逻辑备份,用来备份某个数据的全部表,但是我在执 ...
- Classloader精简重点
如果想学习classloader的具体内容,请goodu JVM 在运行时会产生三个ClassLoader,Bootstrap ClassLoader.Extension ClassLoader和 A ...
- vue day7 table checkbox 全选
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- vpdn1
在使用L2TP协议构建的VPDN典型组网中,包含LAC和LNS两部分. 1.LAC LAC表示L2TP访问集中器(L2TP Access Concentrator),是附属在交换网络上的具有PPP端系 ...
- VS 2017 + opencv4.0
完全参考这一文章, 非常详细: https://blog.csdn.net/qq_41175905/article/details/80560429 记录自己遇到的问题: 1. VS 2017 专业版 ...
- expdp之include参数——实现表级别的expdp操作
需求是这样的:想将A库的某schema中的一部分表导入到B库的某schema中. 第一可以想到的是使用expdp工具,但是如何只挑选某些表呢,通过查看官方文档,include参数可以实现该需求. in ...