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网关.网关作为流量的,在微服务系统中有着非常作 ...
随机推荐
- React native中DrawerNavigator,StackNavigator,TabNavigator导航栏使用
import React from 'react'; import { View, Text,Button } from 'react-native'; import { DrawerNavigato ...
- .Net memory management Learning Notes
Managed Heaps In general it can be categorized into 1) SOH and 2) LOH. size lower than 85K will be ...
- GLog 初始化说明
#include <iostream> #include <glog/logging.h> int main(int argc, char* argv[]) { google: ...
- ubuntu下编译小知识点
#改变编译器选项 SET(CMAKE_C_COMPILER"g++") #出现如下错误:添加C++11特性 #error: #error This file requires co ...
- 在typeScript+vue项目中使用ref
因为vue项目是无法直接操作dom的,但是有时候开发需求迫使我们去操作dom. 两个办法,一个是很low的再引入jq,然后通过jq来操作,但是这样就失去了我们使用vue的意义, 可惜的是我曾经这样干过 ...
- linux下 编译安装Mysql
正文: 一:卸载旧版本 使用下面的命令检查是否安装有MySQL Server rpm -qa | grep mysql 有的话通过下面的命令来卸载掉 rpm -e mysql //普通删除模式 rpm ...
- GAN试验记录.
1.GAN目标函数不收敛,参数难调 2.数据集与生成集比例 3.生成四不像,模式崩塌
- hbase整合
hbase與hive整合 1. hive中有數據 --> 創建hive管理表映射hbase 例如: 1)hive創建內部表 create tabl ...
- <%@taglib prefix="c" uri="http://java.sun.com/jsp/jst1/core"%>报错
查了一晚上 刚开始觉得最靠谱的还是这个说法: 1.下载jakarta-taglibs-standard-1.1.2.zip(在Weblogic中必须下载1.0版 http://jakarta.apa ...
- canvas画小叮当
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...