`
javamonkey
  • 浏览: 169418 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Struts2 漏洞彻底解决办法

阅读更多

Beetl最近也没有更新,正好有时间贡献点其他方面的文章。

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;
}

@Override
public Object callStaticMethod(Map context, Class targetClass,
String methodName, Object[] args) throws MethodFailedException {
throw new MethodFailedException("do not run", "123");
}

@Override
public Object callMethod(Map context, Object target, String methodName,
Object[] args) throws MethodFailedException {
// TODO Auto-generated method stub
throw new MethodFailedException("do not run", "123");
}

}

 



分享到:
评论

相关推荐

    Struts2漏洞测试

    Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试...

    Struts2漏洞检查工具Struts2.2019.V2.3

    "Struts2漏洞检查工具Struts2.2019.V2.3"是一个专门针对这些漏洞进行检测的工具,旨在帮助开发者和网络安全专业人员识别并修复Struts2框架中的安全问题。 Struts2的安全漏洞主要包括以下几类: 1. OGNL(Object-...

    Struts2漏洞利用工具

    Struts2是一个基于MVC设计模式的Web应用框架,但2存在远程代码执行的漏洞,现在Struts2漏洞检测工具2017版增加S2-046,官方发布S2-046和S2-045漏洞引发原因一样,只是利用漏洞的位置发生了变化,S2-046方式可能绕过...

    Struts2漏洞利用工具2019版 V2.3.zip

    "Struts2漏洞利用工具2019版 V2.3.zip" 是一个针对这些安全漏洞的检测和利用工具,用于帮助安全研究人员和系统管理员识别和修复Struts2框架的安全问题。 首先,Struts2框架的最著名的漏洞之一是S2-045,这是一个...

    struts2漏洞解决

    在"struts2漏洞解决"这个主题下,我们需要关注以下几个关键知识点: 1. **Struts2漏洞概述**:Struts2框架在处理用户输入时,如果存在不当的类型转换或对象初始化,可能导致远程代码执行(RCE)漏洞。这些漏洞通常...

    Struts2漏洞检查工具2018版.zip

    "Struts2漏洞检查工具2018版.zip"这个压缩包很可能包含了专门用于检测Struts2框架是否存在这些安全漏洞的工具。`Struts2漏洞检查工具2018版.exe`可能是一个可执行程序,用户可以运行它来扫描自己的系统,查找任何...

    Struts2漏洞检查工具2018版.rar

    描述中提到的"Struts2各版本漏洞扫描利用工具"表明该工具不仅能够扫描Struts2应用的漏洞,还可能包含了一些漏洞利用的模块。这可能是为了进行安全测试,模拟黑客可能采取的攻击手段,以便于防御。 在标签中,“漏洞...

    struts2漏洞利用工具

    然而,Struts2在历史上曾出现过一系列的安全漏洞,其中一些是高危的,允许攻击者执行远程代码或控制系统。这个"Struts终极漏洞利用工具"显然旨在帮助安全研究人员和管理员检测和测试Struts2应用是否存在这些已知漏洞...

    Struts2漏洞检查工具2019版 V2.3.exe

    Struts2漏洞检查工具2019版 警告: 本工具为漏洞自查工具,请勿非法攻击他人网站! ==漏洞编号==============影响版本=========================官方公告==========================================影响范围====...

    Struts2漏洞检查工具2017版

    "Struts2漏洞检查工具2017版"提供了一种高效且全面的方式来识别和解决这些问题,确保你的Web应用程序免受恶意攻击,保护用户数据和系统安全。在进行安全检查的同时,也应关注最新的安全公告和补丁,及时采取预防措施...

    Struts2漏洞检查工具2018版

    Struts2漏洞检查工具2018版,带最新的漏洞检查,方便使用。目前支持一键检测Struts2漏洞

    关于struts2漏洞问题及解决办法

    这篇博客文章“关于struts2漏洞问题及解决办法”可能详细探讨了Struts2框架中的一些关键安全问题,以及如何通过更新、配置优化或使用安全工具来应对这些问题。 首先,Struts2最臭名昭著的漏洞是S2-045,这是一个...

    struts2漏洞s2-045,不升级jar版本的修补方法,已验证.docx

    同时,我们也可以了解到 Struts2 漏洞 S2-045 的成因和解决方法,对于企业级应用程序的安全性具有重要意义。 参考文献 Apache Struts 2 - S2-045 Vulnerability. (n.d.). Retrieved from Struts 2 -Downloads. ...

    Struts2低版本安全漏洞及解决办法

    Struts2低版本安全漏洞及解决办法 Struts2低版本安全漏洞及解决办法

    Struts2漏洞利用工具-可用于检测

    然而,Struts2在过去的几年里遭遇了一系列的安全漏洞,这些漏洞可能使攻击者能够远程执行代码,从而对系统造成严重威胁。 标题提及的“Struts2漏洞利用工具”是一种用于检测Struts2框架是否存在已知安全漏洞的工具...

    struts2漏洞解决方案

    struts2漏洞解决方案

    struts2 最新漏洞 S2-016、S2-017修补方案 .docx

    Struts2 最新漏洞 S2-016、S2-017 修补方案 Struts2 是一个基于 Java 的 Web 应用程序框架,由 Apache 软件基金会维护。最近,Struts2 发生了两个严重的漏洞,分别是 S2-016 和 S2-017,这两个漏洞可能会导致攻击者...

Global site tag (gtag.js) - Google Analytics