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.2019.V2.3
Struts2漏洞检查工具2019版 警告: 本工具为漏洞自查工具,请勿非法攻击他人网站! ==漏洞编号==============影响版本=========================官方公告==========================================影响范围====...
Struts2漏洞检查工具2018版,带最新的漏洞检查,方便使用。目前支持一键检测Struts2漏洞
Struts2漏洞利用工具2019版 V2.3.zip
Struts2低版本安全漏洞及解决办法 Struts2低版本安全漏洞及解决办法
struts2漏洞解决方案
对struts2远程漏洞扫描工具
Struts2各版本漏洞扫描利用工具
struts2 漏洞检测工具 ,快速检测struts命令执行漏洞,可批量。运行环境要求:MAC/Linux下的Python2、Python3 。支持ST2-005,ST2-008,ST2-009,ST2-013,ST2-016,ST2-019,ST2-020,ST2-devmode,ST2-032,ST2-033,ST2-037...
检测struts2系统漏洞 包含s2-032、s2-037、s2-019、s2-016、s2-045、s2-046、s2-052、s2-059
Struts2是一个基于MVC设计模式的Web应用框架,但2存在远程代码执行的漏洞,现在Struts2漏洞检测工具2017版增加S2-046,官方发布S2-046和S2-045漏洞引发原因一样,只是利用漏洞的位置发生了变化,S2-046方式可能绕过...
Struts2漏洞检查软件2017版,支持045,046,048验证.100%有效果
Struts2漏洞利用工具2016版,基本信息,命令执行,文件上传,批量验证,文件管理
Struts 2 全版本漏洞检测工具
Struts终极漏洞利用工具 Powered By 独孤城 Thanks to 峙酿君edwardz
解决Struts2存在的重大后门BUG,并附带详细介绍文档
该漏洞影响范围(Struts 2.3.5 - Struts 2.3.31, Struts 2.5 ...文件包含ognl-3.0.21.jar,struts2-convention-plugin-2.3.34.jar,struts2-core-2.3.34.jar,struts2-spring-plugin-2.3.34.jar,xwork-core-2.3.34.jar