S2-057原理分析与复现过程(POC)

栏目: Struts · 发布时间: 6年前

内容简介:0x00 漏洞简介加固建议:

0x00 漏洞简介

S2-057原理分析与复现过程(POC)

加固建议:

对 Structs 2 版本进行升级以更新安全补丁:

Struts 2.3.x 版本升级到 2.3.35

Struts 2.5.x 版本升级到 2.5.17

0x01 补丁分析

在github上进行Tag对比

S2-057原理分析与复现过程(POC)

分析patch,定位问题点

https://github.com/apache/struts/commit/918182344cc97515353cc3dcb09b9fce19c739c0

S2-057原理分析与复现过程(POC)

0x02 环境搭建

根据漏洞作者的博客描述,直接使用Struts2-2.3.34的showcase,修改struts-actionchaining.xml

S2-057原理分析与复现过程(POC)

使用${1+1}验证漏洞存在

S2-057原理分析与复现过程(POC)

0x03 漏洞分析

DefaultActionMapper调用parseNameAndNamespace()解析namespace和name。当alwaysSelectFullNamespace为true时,namespace的值可以通过uri控制

S2-057原理分析与复现过程(POC)

Action执行结束时,调用ServletActionRedirectResult.execute()进行重定向Result的解析,通过ActionMapper.getUriFromActionMapping()重组namespace和name后,由setLocation() 将带namespace的location放入父类StrutsResultSupport中

S2-057原理分析与复现过程(POC)

StrutsResultSupport拿到location后,通过TextParseUtil.translateVariables()调用OgnlTextParser.evaluate()解析执行url中的OGNL表达式,导致代码执行

S2-057原理分析与复现过程(POC)

0x04 利用条件

最小条件:

1. alwaysSelectFullNamespace值为true

2. Struts2配置文件中,action元素未设置namespace属性,或使用了通配符

漏洞场景:

1. 在Struts2配置文件中,对未正确配置的action元素提供如下三类返回元素:

a. Redirect Action

b. Action Chaining

c. Postback Result

S2-057原理分析与复现过程(POC)

2. 在模板中使用url元素标记:

S2-057原理分析与复现过程(POC)

S2-057原理分析与复现过程(POC)

0x05 PoC编写

使用Struts2老版本的PoC无法正常弹出计算器,会在获取#context时得到null值,导致['com.opensymphony.xwork2.ActionContext.container']求值时的source为空,抛出异常

通过跟踪OGNL底层代码发现,在比较新的版本的OGNL包中,OgnlContext移除了CONTEXT_CONTEXT_KEY、CLASS_RESOLVER_CONTEXT_KEY和MEMBER_ACCESS_CONTEXT_KEY,使OGNL表达式无法继续使用#context、#_classResolver和#_memberAccess来获得相应对象

S2-057原理分析与复现过程(POC)

S2-057原理分析与复现过程(POC)

获取不到context就无法进行后续Struts2的沙盒绕过。通过分析,发现在#request域下的struts.ValueStack对象中存在context属性,因此对S2-052的Payload进行一下简单改造即可

成功弹出计算器

S2-057原理分析与复现过程(POC)

另外,由于Struts2.5中,几个excluded的map使用的是immutable collection,不允许修改,因此该PoC只适用于Struts2.3环境

再多说一嘴,Struts2的showcase项目没有通过大家知道的struts.mapper.alwaysSelectFullNamespace配置项控制alwaysSelectFullNamespace的值,而是通过@Inject进行了IoC

0x06 参考

1. https://cwiki.apache.org/confluence/display/WW/S2-057

2. https://lgtm.com/blog/apache_struts_CVE-2018-11776

3. https://semmle.com/news/apache-struts-CVE-2018-11776


以上所述就是小编给大家介绍的《S2-057原理分析与复现过程(POC)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Google's PageRank and Beyond

Google's PageRank and Beyond

Amy N. Langville、Carl D. Meyer / Princeton University Press / 2006-7-23 / USD 57.50

Why doesn't your home page appear on the first page of search results, even when you query your own name? How do other web pages always appear at the top? What creates these powerful rankings? And how......一起来看看 《Google's PageRank and Beyond》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器