正在阅读:

Struts2漏洞修复方案

9,944

最近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
                        + "|看到这个消息,请联系安全工程师!!!","4700012@qq.com");
            }
        }

        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

http://www.91ri.org/6629.html

留下脚印,证明你来过。

*

*

流汗坏笑撇嘴大兵流泪发呆抠鼻吓到偷笑得意呲牙亲亲疑问调皮可爱白眼难过愤怒惊讶鼓掌