Struts2 S2-045 远程OGNL表达式执行漏洞 园长 2017-03-06 Struts2 0 2,786 Struts2在解析请求的时候会主动把MULTIPART请求给解析成参数,这里的MULTIPART请求被解析了两遍。一遍是框架解析的,另一遍是那个自带的插件解析的。两个地方判断是否是文件上传请求的时候的代码不一致,导致了error。 Struts2的验证是否是MULTIPART的方式: FileUploadBase验证方式: 简单的说就是Struts2的开发者判断是否是MULTIPART方式是如果字符串里面包含了multipart/form-data就认为是,而后面的FileUploadBase判断是字符串里面必须是以multipart/form-data开头的请求才认为是文件上传。如果把FileUploadBase的判断MULTIPART的时候方法换成Dispatcher类的content_type.contains("multipart/form-data")就不会触发这个error了。而这个error中的异常信息最终会被拿去当ognl表达式执行。这种神逻辑其实算起来跟上次的springboot的表达式注入漏洞差不多,因为异常导致的表达式注入。 官方的修复方式代码替换掉了LocalizedTextUtil.findText:
Struts2 Security Bulletins 备份 园长 2014-12-26 Struts2 0 2,125 S2-001 S2-002 S2-003 S2-004 S2-005 S2-006 S2-007 S2-008 S2-009 S2-010 S2-011 S2-012 S2-013 S2-014 S2-015 S2-016 S2-017 S2-018 S2-019 S2-020 S2-021 S2-022