最近strtus2漏洞爆发,严重影响了网站安全,很多站有提供测试工具,当然不排除本站,但是却少有人提及修复方案,今天看到了91ri.org上面的修复方法,转过来共享之,修复方案原作者为空虚浪子心。本站转的只是关键代码,代码自己拿去分析,其实我也看不懂,只希望能帮助需要帮助的人。
首先升级到最新版本。
在ognl这个语言的入口,加入拦截代码,一旦发现危险调用,直接干掉。
代码原理是,在OGNL执行之前,对语句做判断,看到有黑名单的代码,就干掉。理论上,开发人员理论上不会自己写OGNL用于操作文件,执行命令等,他们最多从session中取一个值,或者在页面上取一个值。
覆盖掉Ognl.Ognl类,添加如下代码:
public static Object parseExpression(String expression) throws OgnlException { //。。。下面是白名单列表,请各位同学自行搜索java危险代码,之后加入列表,实在不会的,找几个webshell看看,我肯定不会把阿里正在使用的列表告诉你们的。 String evalMethod[] = { "Runtime", "new file" }; String methodString = null; methodString = expression.toLowerCase(); for (int i = 0; i < evalMethod.length; i++) { if (methodString.indexOf(evalMethod[i].toLowerCase()) > -1) { Log.securityLog(Log.getInfo()+"|OGNL正在执行恶意语句|" + methodString + "|看到这个消息,请联系安全工程师!!!","[email protected]"); } } try { OgnlParser parser = new OgnlParser(new StringReader(expression)); return parser.topLevelExpression(); } catch (ParseException e) { throw new ExpressionSyntaxException(expression, e); } catch (TokenMgrError e) { throw new ExpressionSyntaxException(expression, e); } }
为什么要加入QQ邮箱呢?具体原因不说,只说结果,结果是,我的邮箱可以收到0DAY,你如果真的看懂了,自己猜猜原因?
原文地址:
http://www.inbreak.net/archives/507
from www.waitalone.cn.thanks for it.
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论