[漏洞复现]Struts2-016命令执行漏洞复现

本文详细介绍了Struts2的S2-016命令执行漏洞,该漏洞影响2.0.0到2.3.15版本。攻击者可通过构造特定的URL执行任意Java代码,从而执行系统命令。文中给出了POC示例,如执行`uname -a`命令,并提供了如何利用URL编码进行攻击的方法。此外,还展示了如何获取Web目录和写入webshell。文章最后提及了相关的Docker命令。

Struts2-016命令执行漏洞

Struts2有很多漏洞,但是很多老系统都漏补了这个洞,成功率较高。

影响版本:

2.0.0 - 2.3.15

简述

Struts2的action:、redirect:和redirectAction:前缀参数在实现其功能的过程中使用了Ognl表达式,并将用户通过URL提交的内容拼接入Ognl表达式中,从而造成攻击者可以通过构造恶意URL来执行任意Java代码,进而可执行任意命令。redirect:和redirectAction:此两项前缀为Struts默认开启功能。

在struts2中,DefaultActionMapper类支持以"action:"、“redirect:”、"redirectAction:"作为导航或是重定向前缀,但是这些前缀后面同时可以跟OGNL表达式,由于struts2没有对这些前缀做过滤,导致利用OGNL表达式调用java静态方法执行任意系统命令

所以,访问http://ip/index.action?redirect:OGNL表达式即可执行OGNL表达式。

环境

docker重启:sudo systemctl restart docker.service

vulhub-master/struts2/s2-016

启动之后访问:

http://ip:8080/

image-20210520171540436

POC:执行命令: uname -a

redirect:${#context[“xwork.MethodAccessor.denyMethodExecution”]=

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值