Struts2

总结了一部分 Strtus2 漏洞,虽然现在这部分的漏洞很少了,但也是学习的一部分,收集的并不全面,后续会做补充。
log4j漏洞影响面太广,最为一个经常使用strusts2开发的我来说,第一反应就是strusts2也默认使用了该库,所以进行了分析,发现确实能够触发,一点拙见分享出来,希望能够帮助加快行业尽快修复该漏洞,减小其影响。
S2-009是S2-003与S2-005的补丁绕过,当时的补丁是增加了正则以及相关的限制(这些限制可以通过执行OGNL表达式进行修改),主要的防御还是正则。
S2-008涉及多个漏洞,其中有着前面所存在的漏洞比如S2-007,还有S2-003&S2-005中通过参数执行OGNL表达式的方式,这里引出了一种新的执行方式,即通过Cookie的方式传参,最后一种则是devMode下支持直接执行OGNL表达式,本文着重记录最后一个漏洞的细节。
S2-007的漏洞原理是在处理类型转换的错误时会存入错误到内存中,在后续调用流程中触发OGNL表达式注入。
S2-003的漏洞核心在于Struts2中的ParametersInterceptor(某个拦截器)会对请求中的参数名称进行OGNL的表达式解析,虽然有一定的过滤,但是过滤的不完全导致被绕过。
S2-001的漏洞原理是模板文件(JSP)中引用了不合适的标签进行渲染,并且渲染的值是用户可控的,此时则达成了表达式注入的目的。
Struts2是以MVC架构为基础的WEB框架,通过WEB Filter的方式内嵌在WEB服务器中进行使用。
hi!! 新面孔打个招呼~最近花了蛮长时间看 Struts2 的漏洞,可能某些安全研究人员(像我)会选择 Struts2 作为入手 java 研究的第一个框架,毕竟最早实现 MVC(Model+View+Controller) 模式的 java web 框架就是 struts 了。所以输出这篇文章记录下我的总结以及理解,如果能对你有所帮助就更好了 ~!
从零开始分析struts2代码执行exp,其中不但包括了struts2自己设置的防护机制绕过,还有ognl防护绕过。