Jetty服务器跨站脚本和目录遍历漏洞

Jetty是一款流行的Java Web服务器。

Jetty中捆绑有HTTP服务器、HTTP客户端和javax.servlet容器, 其中HTTP服务器的URI处理器没有正确的解释规范的路径,远程攻击者可以通过目录遍历攻击访问web应用或文档树以外的文件。成功利用这个漏洞要求使 用了支持别名的DefaultServlet,或使用ResourceHandler类提供静态内容。对于UNIX系统,仅在webapp或 docroot中存在以“?”字符结尾的目录名时才受这个漏洞影响。

Jetty在显示Web目录列表时没有正确地过滤URL输入便返回给了用户,远程攻击者可以在HTTP响应中目录列表路径前附加“;”字符执行跨站脚本攻击,在用户浏览器会话中注入并执行任意HTML和脚本代码。

<*来源:Greg Wilkins
 
  链接:http://secunia.com/advisories/34975/
        http://www.kb.cert.org/vuls/id/402580
        http://jira.codehaus.org/si/jira.issueviews:issue-html/JETTY-1004/JETTY-1004.html
        http://jira.codehaus.org/si/jira.issueviews:issue-html/JETTY-980/JETTY-980.html
*>

测试方法:
--------------------------------------------------------------------------------

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

$ echo -e "GET /cometd/dijit/;<script>alert(document.title);</script> HTTP/1.0\n\n" | nc 127.0.0.1 8080
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 5097
Server: Jetty(7.0.0.pre5)

建议:
--------------------------------------------------------------------------------
临时解决方法:

* 如果没有使用ResourceHandler,确认jetty例程默认的servlet别名initParam设置为false,还要确认没有设置org.mortbay.util.FileResource.checkAliases系统属性或设置为true。

* 如果在使用ResourceHandler,对所使用的Jetty编译以下源码,并使用这个类而不是ResourceHandler:

package org.mortbay.jetty.cert;
import java.net.MalformedURLException;
import org.mortbay.jetty.handler.ResourceHandler;
import org.mortbay.resource.Resource;
import org.mortbay.util.StringUtil;
import org.mortbay.util.URIUtil;
public class TempFixResourceHandler extends ResourceHandler
{
    public Resource getResource(String path) throws MalformedURLException
    {
        if (path!=null && path.indexOf('?')>=0)
        {
            path=URIUtil.decodePath(URIUtil.canonicalPath(StringUtil.replace(path,"?","%3F")));
            if (path==null)
                return null;
        }
        return super.getResource(path);
    }
}

厂商补丁:

Jetty
-----
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

http://jira.codehaus.org/secure/attachment/41486/JETTY-980.patch

你可能感兴趣的:(Jetty服务器跨站脚本和目录遍历漏洞)