java struts2 远程执行任意java代码漏洞

默北 Linux 安全java struts2 远程执行任意java代码漏洞已关闭评论10,7123字数 608阅读2分1秒阅读模式

最近网络上爆发大规模的struts2远程代码执行漏洞。

漏洞说明

漏洞危害文章源自运维生存时间-https://www.ttlsa.com/linux/java-struts2-execute-code-vulnerability/

漏洞可以远程执行任意Java代码文章源自运维生存时间-https://www.ttlsa.com/linux/java-struts2-execute-code-vulnerability/

危险等级文章源自运维生存时间-https://www.ttlsa.com/linux/java-struts2-execute-code-vulnerability/

高危文章源自运维生存时间-https://www.ttlsa.com/linux/java-struts2-execute-code-vulnerability/

受影响版本文章源自运维生存时间-https://www.ttlsa.com/linux/java-struts2-execute-code-vulnerability/

Struts 2.3.20 - Struts 2.3.28 (2.3.20.2 和 2.3.24.2 除外)文章源自运维生存时间-https://www.ttlsa.com/linux/java-struts2-execute-code-vulnerability/

CVE文章源自运维生存时间-https://www.ttlsa.com/linux/java-struts2-execute-code-vulnerability/

CVE-2016-3081文章源自运维生存时间-https://www.ttlsa.com/linux/java-struts2-execute-code-vulnerability/

漏洞前提

开启动态方法调用, struts.xml配置 文章源自运维生存时间-https://www.ttlsa.com/linux/java-struts2-execute-code-vulnerability/

<constant name="struts.enable.DynamicMethodInvocation" value="true" />文章源自运维生存时间-https://www.ttlsa.com/linux/java-struts2-execute-code-vulnerability/

沙盒绕过

通过ognl表达式静态调用获取ognl.OgnlContext的DEFAULT_MEMBER_ACCESS属性,并将获取的结果覆盖_memberAccess属性,这样就可以绕过SecurityMemberAccess的限制。文章源自运维生存时间-https://www.ttlsa.com/linux/java-struts2-execute-code-vulnerability/

漏洞详情

https://struts.apache.org/docs/s2-032.html文章源自运维生存时间-https://www.ttlsa.com/linux/java-struts2-execute-code-vulnerability/

http://www.freebuf.com/vuls/102836.html文章源自运维生存时间-https://www.ttlsa.com/linux/java-struts2-execute-code-vulnerability/

临时解决方案

1. 检查是否使用struts2 文章源自运维生存时间-https://www.ttlsa.com/linux/java-struts2-execute-code-vulnerability/

2. 检查是否开启动态方法调用 文章源自运维生存时间-https://www.ttlsa.com/linux/java-struts2-execute-code-vulnerability/

3. 在struts前端nginx配置正则拦截攻击请求 文章源自运维生存时间-https://www.ttlsa.com/linux/java-struts2-execute-code-vulnerability/

正则:if($args ~ @ognl.OgnlContext@DEFAULT_MEMBER_ACCESS) { return 404;}文章源自运维生存时间-https://www.ttlsa.com/linux/java-struts2-execute-code-vulnerability/

升级Struts 2至Struts 2.3.20.2, Struts 2.3.24.2 或者 Struts 2.3.28.1,以便彻底解决此问题。文章源自运维生存时间-https://www.ttlsa.com/linux/java-struts2-execute-code-vulnerability/ 文章源自运维生存时间-https://www.ttlsa.com/linux/java-struts2-execute-code-vulnerability/

weinxin
我的微信
微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~
默北
  • 本文由 发表于 27/04/2016 15:23:20
  • 转载请务必保留本文链接:https://www.ttlsa.com/linux/java-struts2-execute-code-vulnerability/