概述
产生原因
Struts2 标签中 <s:a> 和 <s:url> 都包含一个 includeParams 属性,其值可设置为 none,get 或 all,参考官方其对应意义如下:
none 链接不包含请求的任意参数值(默认)
get 链接只包含 GET 请求中的参数和其值
all 链接包含 GET 和 POST 所有参数和其值
<s:a>用来显示一个超链接,当includeParams=all的时候,会将本次请求的GET和POST参数都放在URL的GET参数上。在放置参数的过程中会将参数进行OGNL渲染,造成任意命令执行漏洞。
S2-014 是对 S2-013 修复的加强,在 S2-013 修复的代码中忽略了 ${ognl_exp} OGNL 表达式执行的方式,因此 S2-014 是对其的补丁加强。
影响
Struts 2.0.0 Struts 2.3.14.1
环境搭建
vulhub
1 | cd struts2/s2-013 |
复现
见利用
攻防
利用
msf中exploit/multi/http/struts_include_params模块
1 | use exploit/multi/http/struts_include_params |

防御
升级至Struts 2.3.14.2
参考
vulhub