博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Struts2 漏洞彻底解决办法
阅读量:6189 次
发布时间:2019-06-21

本文共 1605 字,大约阅读时间需要 5 分钟。

  hot3.png

转自5年前的我的文章,希望还有用,struts 今天又爆安全漏洞了,坑爹啊

====================== 5年前====================

Struts2官方已经发布了多次漏洞补丁,但根源在于OGNL能调用静态办法,所以彻底解决漏洞的办法是底层禁止OGNL调用一些特定的java类,如System,Runtime类

我们底层入手,调用OGNLRuntime静态方法,设置我们自己的MethodAccessor类,能禁止OGNL在表达式中调用Runtime,System等类。这已经验证通过。

 
如下图从左到右,是action的参数赋值过程,为了堵住漏洞,通常是在ParameterInteceptor做过滤,但几年来,都有漏洞,如果我们在OGNLRuntime那做过滤,因为这是调用java类方法最底层的方法,所以很保险

我们目前推荐在原有过滤的基础上,增加一个patch包以对底层调用过滤,随后,公司内部已经布一个ongl_patch.jar,基本上引入后,在项目的servlet/struts/spring 任何一个框架的listener里调用里面的方法初始化一下,就可以了

其实质就是做如下初始化:

OgnlRuntime.setMethodAccessor(OgnlTest.class, new NoMethodAccessor());OgnlRuntime.setMethodAccessor(Runtime.class, new NoMethodAccessor());OgnlRuntime.setMethodAccessor(System.class, new NoMethodAccessor());OgnlRuntime.setMethodAccessor(ProcessBuilder.class,new NoMethodAccessor());OgnlRuntime.setMethodAccessor(OgnlRuntime.class, new NoMethodAccessor()); NoMethodAccessor实现了OGNL的 MethodAccessor,如下:public class NoMethodAccessor implements MethodAccessor {public NoMethodAccessor() {int i = 1;}@Overridepublic Object callStaticMethod(Map context, Class targetClass,String methodName, Object[] args) throws MethodFailedException {throw new MethodFailedException("do not run", "123");}@Overridepublic Object callMethod(Map context, Object target, String methodName,Object[] args) throws MethodFailedException {// TODO Auto-generated method stubthrow new MethodFailedException("do not run", "123");}}

======================

上面的初始化·可以在系统启动的地方使用,实际上,beetl的安全管理器就来自于这个想法,所以,如果你访问, 你可以调用@java.util.Collections 下的所有方法,但你不能调用@java.lang.Runtime......

 

转载于:https://my.oschina.net/xiandafu/blog/638259

你可能感兴趣的文章
多线程&线程同步
查看>>
Coding and Paper Letter(四)
查看>>
网站前端_JavaScript-DOM编程.0001.JavaScriptDom基础核心?
查看>>
统计之 - Contingency Table
查看>>
java Servlet
查看>>
华为荣获LTE研发贡献和标准贡献两项大奖 商用保持领先
查看>>
BaseActivity公用界面的使用
查看>>
linux文件系统特殊权限及suid sgid sticky
查看>>
centos 自带mysql卸载时出现无法卸载情况
查看>>
java 把多个list 合并成一个去重的
查看>>
CSS3媒体判断iphone4 5 6 6plus 7 7puls 8 8puls iphonex
查看>>
蒸妙熏蒸,疏通身体的“堵”
查看>>
Apache和PHP结合
查看>>
帮助瘫痪之人 未来人工智能将会经脑神经讯号转语音
查看>>
Spring-IOC[01-xml[配置方式]
查看>>
Spring的四大优势,你是如何理解的?
查看>>
微信公众号开发
查看>>
android 之Fragment
查看>>
OSChina 周三乱弹 ——只有我还散发着单身狗的清香
查看>>
OSChina 周二乱弹 ——女孩在身上纹了个四叶草
查看>>