JSP漏洞大观

综述:服务器漏洞是安全问题的起源,黑客对网站的攻击也大多是从查找对方的漏洞开始的。所以只有了解自身的漏洞,网站管理人员才能采取相应的对策,阻止外来的攻击。下面介绍一下一些服务器(包括Web服务器和JSP服务器)的常见漏洞。

  Apache泄露重写的任意文件漏洞是怎么回事?

  在Apache1.2以及以后的版本中存在一个mod_rewrite模块,它用来指定特殊URLS在网络服务器文件系统上所映射的绝对路径。如果传送一个包含正确表达参数的重写规则,攻击者就可以查看目标主机上的任意文件。

  下面举例说明重写规则指令(其中第一行只有是包含漏洞的):

  RewriteRule /test/(.*) /usr/local/data/test-stuff/$1
  RewriteRule /more-icons/(.*) /icons/$1
  RewriteRule /go/(.*) http://www.apacheweek.com/$1

  受影响的系统:

  1)Apache 1.3.12
  2)Apache 1.3.11win32
  3)Apache 1.2.x

  不受影响系统:Apache 1.3.13

  怎样解决在HTTP请求中添加特殊字符导致暴露JSP源代码文件?
  Unify eWave ServletExec 是一个 Java/Java Servlet 引擎插件,主要用于 WEB 服务器,例如:Microsoft IIS, Apache, Netscape Enterprise 服务器等等。
  当一个 HTTP 请求中添加下列字符之一,ServletExec 将返回 JSP 源代码文件。
.

  %2E
  +
  %2B
  \
  %5C
  %20
  %00

  成功的利用该漏洞将导致泄露指定的JSP文件的源代码,例如:使用下面的任意一个URL请求将输出指定的JSP文件的源代码:

  1)http://target/directory/jsp/file.jsp.
  2)http://target/directory/jsp/file.jsp%2E
  3)http://target/directory/jsp/file.jsp+
  4)http://target/directory/jsp/file.jsp%2B
  5)http://target/directory/jsp/file.jsp\
  6)http://target/directory/jsp/file.jsp%5C
  7)http://target/directory/jsp/file.jsp%20
  8)http://target/directory/jsp/file.jsp%00

  受影响的系统:

  1)Unify eWave ServletExec 3.0c
  2)Sun Solaris 8.0
  3)Microsoft Windows 98
  4)Microsoft Windows NT 4.0
  5)Microsoft Windows NT 2000
  6)Linux kernel 2.3.x
  7)IBM AIX 4.3.2
  8)HP HP-UX 11.4

  解决方案:

  如果没有使用任何静态页面或图像,可以配置一个默认的 servlet,并将"/"映射到这个默认的 servlet。这样当收到一个未映射到某个 servlet 的 URL 时,这个默认的servlet 就会被调用。在这种情况下,默认的 servlet 可以仅仅返回"未找到文件"。如果使用了静态的页面或图像,仍然可以作这样的配置,但是需要让这个默认的servlet 处理对合法的静态页面和图像的请求。
  另一种可能就是将*.jsp+、*.jsp.和*.jsp\等映射到一个 servlet,而该servlet只是返回"未找到文件"。对于*.jsp%00和*.jsp%20这样的情况,映射应以未经编码的形式输入。例如,对于*.jsp%20的映射应输入"*.jsp "。注意%20被转换成一个空格字符。

  Tomcat有哪些漏洞?

  Tomcat 3.1 存在暴露网站路径问题

  Tomcat 3.1 是在 Apache 软件环境下开发的一个支持 JSP 1.1 和 Servlets 2.2 的软件。它存在一个安全问题当发送一个不存在的 jsp 请求时会暴露网站上网页的全路径。

  举例:
  http://narco.guerrilla.sucks.co:8080/anything.jsp

  结果显示:
Error: 404
Location: /anything.jsp
JSP file "/appsrv2/jakarta-tomcat/webapps/ROOT/anything.jsp" not found

  解决方案:升级到新版本

  Tomcat 暴露JSP文件内容

  Java Server Pages (JSP)类型的文件是以'.jsp'扩展名在Tomcat 上注册,Tomcat 是文件名大小写敏感的,'.jsp'和'.JSP'是不同类型的文件扩展名。如果提交有'.JSP'的链接给Tomcat,而Tomcat找不到'.JSP'就会以默认的'.text'文件类型来响应请求。因为在NT系统中大小写文件名是非敏感的,所以被请求的文件会以文本的形式送出。

  如果在UNIX服务器上会出现"file not found"的错误信息。

  如何在windows下对Tomcat实施代码保护

  Tomcat的一些版本有泄露源代码的漏洞,如果在浏览器中调用JSP页面时将该文件的后缀改成大写,这个JSP文件的源代码将完全输出到浏览器中(也许浏览器窗口中什么都没有,这时你只需查看HTML源文件就可以发现)。如此一来,网站的源代码是不是都会暴露在互联网上那?
  不用担心,解决方法很简单,把各种后缀的组合全部写到Tomcat_Home\conf \web.xml里就可以了,这样Tomcat会将不同后缀名的JSP分开对待,就不会泄露代码了。

    jsp
    *.jsp

    jsP
    *.jsP

   ?lt;servlet-name>jSp
    *.jSp

    jSP
    *.jSP

    Jsp
    *.Jsp

    JsP
    *.JsP

    JSp
    *.JSp

    JSP
    *.JSP

  Allair Jrun漏洞有哪些漏洞?

  Allair JRUN 非法读取 WEB-INF 漏洞
  在Allaire 的 JRUN 服务器 2.3版本中存在一个严重的安全漏洞。它允许一个攻击者在 JRun 3.0 服务器中查看 WEB-INF 目录。
  如果用户在提交 URL 请求时在,通过附加一个"/"使该 URL 成为畸形的 URL,这时 WEB-INF 下的所有子目录将会暴露出来。攻击者巧妙的利用该漏洞将能够远程获得目标主机系统中 WEB-INF 目录下的所有文件的读取权限。
  例如使用下面这个 URL 将会暴露 WEB-INF 下的所有文件:
http://site.running.jrun:8100//WEB-INF/

  受影响的系统:Allaire JRun 3.0

  解决方案:下载并安装补丁:

Allaire patch jr233p_ASB00_28_29
http://download.allaire.com/jrun/jr233p_ASB00_28_29.zip
Windows 95/98/NT/2000 and Windows NT Alpha
Allaire patch jr233p_ASB00_28_29tar
http://download.allaire.com/jrun/jr233p_ASB00_28_29.tar.gz
UNIX/Linux patch - GNU gzip/tar

  Allaire JRUN 2.3 查看任意文件漏洞

  Allaire 的 JRUN 服务器 2.3上存在多重显示代码漏洞。该漏洞允许攻击者在 WEB 服务器上查看根目录下的任意文件的源代码。
  JRun 2.3 使用 Java Servlets 解析各种各样类型的页面(例如:HTML, JSP等等)。基于rules.properties 和 servlets.properties 的文件设置,可能利用URL前缀"/servlet/"调用任何servlet。
  它可能使用 Jrun 的 SSIFilter servlet 在目标系统上检索任意的文件。下列 2 个例子显示出能被用来检索任意的文件的 URLs :

http://jrun:8000/servlet/com.livesoftware.jrun.plugins.ssi.SSIFilter/../../t est.jsp
http://jrun:8000/servlet/com.livesoftware.jrun.plugins.ssi.SSIFilter/../../../../../../../boot.ini
http://jrun:8000/servlet/com.livesoftware.jrun.plugins.ssi.SSIFilter/../../. ./../../../../winnt/repair/sam
http://jrun:8000/servlet/ssifilter/../../test.jsp
http://jrun:8000/servlet/ssifilter/../../../../../../../boot.ini
http://jrun:8000/servlet/ssifilter/../../../../../../../winnt/repair/sam._

  注意:假设JRun在主机" jrun "上运行,端口8000。

  受影响的系统:Allaire JRun 2.3.x

  解决方案:下载并安装补丁:

Allaire patch jr233p_ASB00_28_29
http://download.allaire.com/jrun/jr233p_ASB00_28_29.zip
Windows 95/98/NT/2000 and Windows NT Alpha
Allaire patch jr233p_ASB00_28_29tar
http://download.allaire.com/jrun/jr233p_ASB00_28_29.tar.gz
UNIX/Linux patch - GNU gzip/tar

  Allaire JRUN 2.3远程执行任意命令漏洞

  Allaire 的 JRUN 服务器 2.3上存在一个安全漏洞,允许远程用户把在 WEB 服务器上的任意文件作为JSP代码编译/执行。   如果URL请求的目标文件使用了前缀"/servlet/",则JSP解释执行功能被激活。这时在用户请求的目标文件路径中使用"../",就有可能访问到 WEB 服务器上根目录以外的文件。在目标主机上利用该漏洞请求用户输入产生的一个文件,将严重威胁到目标主机系统的安全。

  例如:

http://jrun:8000/servlet/com.livesoftware.jrun.plugins.jsp.JSP/../../path/to /temp.txt
http://jrun:8000/servlet/jsp/../../path/to/temp.txt

  受影响的系统:Allaire JRun 2.3.x

  解决方案:下载并安装补丁:

Allaire patch jr233p_ASB00_28_29
http://download.allaire.com/jrun/jr233p_ASB00_28_29.zip
Windows 95/98/NT/2000 and Windows NT Alpha
Allaire patch jr233p_ASB00_28_29tar
http://download.allaire.com/jrun/jr233p_ASB00_28_29.tar.gz
UNIX/Linux patch - GNU gzip/tar

  JRun 2.3.x 范例文件暴露站点安全信息

  JRun 2.3.x 在 JRUN_HOME/servlets 目录下有一些 servlet 范例文件,这个目录是 JRun 2.3.x 用于加载和执行 servlets 文件。所有扩展名为 ".Java" 或 "class" 的文件必须被删除,这是因为这些文件会暴露站点的安全信息。例如:
http://www.xxx.xxx/servlet/SessionServlet 会暴露当前服务器保持的HTTP连接信息。JRUN_HOME/jsm-default/services/jws/htdocs 目录下的内容也应被删除掉。这个目录保存有演示服务器功能的 '.jsp' 文件,其中一些文件牵涉到访问服务器文件系统和暴露服务器设置的问题。例如对文件 "viewsource.jsp" 的路径检查是默认关闭的,它可被用于访问服务器文件系统。

  解决方案:

  1)安装 2.3.3 service pack
  2)从服务器上删除所有的说明文档、演示编码、范例和教材,包括安装 JRun   2.3.x 时存放于 JRUN_HOME/servlets 目录和JRUN_HOME/jsm-default/services/jws/htdocs 目录里的文档。
  相关站点:http://www.allaire.com/

  IBM WebSphere Application Server有哪些漏洞?

  1、IBM WebSphere Application Server 3.0.2 存在暴露源代码漏洞
IBM WebSphere Application Server 允许攻击者查看 Web server 根目录以上的所有文件。IBM WebSphere 使用 Java Servlets 处理多种页面类型的分析(如 HTML, JSP, JHTML, 等等)。In addition 不同的 servlets 对不同的页面进行处理,如果一个请求的文件是未进行注册管理的,WebSphere 会使用一个默认的 servlet 作调用。如果文件路径以"/servlet/file/"作开头这个默认的 servlet 会被调用这个请求的文件会未被分析或编译就显示出来。

  受影响系统:IBM WebSphere 3.0.2 的所有版本

  举例:

  如果一个请求文件的 URL 为 "login.jsp"::  http://site.running.websphere/login.jsp那么访问  http://site.running.websphere/servlet/file/login.jsp将看到这个文件的源代码。
  解决方案:下载并安装补丁
http://www-4.ibm.com/software/webservers/appserv/efix.html
  相关站点:http://www-4.ibm.com/software/webservers/appserv/
  IBM WebSphere Application Server 暴露JSP文件内容
  Java Server Pages (JSP)类型的文件是以'.jsp'扩展名在WebSphere Application Serve 上注册,WebSphere 是文件名大小写敏感的,'.jsp'和'.JSP'是不同类型的文件扩展名。如果提交有'.JSP'的链接给WebSphere,而WebSphere找不到'.JSP'就会以默认的'.text'文件类型来响应请求。因为在NT系统中大小写文件名是非敏感的,所以被请求的文件会以文本的形式送出。

  如果在UNIX服务器上会出现"file not found"的错误信息。

  解决方案:点击此处下载补丁
  相关站点:http://www-4.ibm.com/software/webservers/appserv/efix.html
  BEA WebLogic有哪些暴露源代码漏洞?

  受影响版本:

  所有系统上的

  BEA WebLogic Enterprise 5.1.x
  BEA WebLogic Server and Express 5.1.x
  BEA WebLogic Server and Express 4.5.x
  BEA WebLogic Server and Express 4.0.x
  BEA WebLogic Server and Express 3.1.8

  这个漏洞使攻击者能读取 Web 目录下所有文件的源代码。

  WebLogic 依赖四个主要 Java Servlets to 服务不同类型的文件。这些 servlets 是:

  1)FileServlet - for 简单 HTML 页面
  2)SSIServlet - for Server Side Includes 页面
  3)PageCompileServlet - for JHTML 页面
  4)JSPServlet - for Java Server 页面

  看着weblogic.properties 文件, 这儿是各个 servlets 的注册值:

  1)weblogic.httpd.register.file=weblogic.servlet.FileServlet
  2)weblogic.httpd.register.*.shtml=weblogic.servlet.ServerSideIncludeServlet
  3)weblogic.httpd.register.*.jhtml=weblogic.servlet.jhtmlc.PageCompileServlet
  4)weblogic.httpd.register.*.jsp=weblogic.servlet.JSPServlet
更多的 weblogic.properties 文件, 如果一个请求文件是没有注册管理的,那么就会调用一个默认的 servlet 。以下是展示默认的 servlet 是如何注册的。

  # Default servlet registration
  # ------------------------------------------------
  # Virtual name of the default servlet if no matching servlet
  # is found weblogic.httpd.defaultServlet=file

  因此如果 URL 中的文件路径开头为 "/file/" , 将会引致 WebLogic 调用默认的 servlet, 那将会使网页未加分析和编译而直接显示。

  论证:

  只要在想看的文件原来的 URL 路径之前加入 "/file/" 就会让文件未经分析和编译,直接暴露源代码。如:http://site.running.weblogic/login.jsp ,那么只要访问 http://site.running.weblogic/file/login.jsp 就会在 WEB 浏览器里看到文件的内容。

  以下是使用方法:

  1. 通过强制使用 SSIServlet 查看未分析的页面 :
  服务器站点通过 WebLogic 中的 SSIServlet 处理页面,它在weblogic.properties 文件中注册以下信息:weblogic.httpd.register.*.shtml= weblogic.servlet.ServerSideIncludeServlet

  通过 URL 使用 SSIServlet 自动处理通配符 (*) 。因此 如果文件路径开头为 /*.shtml/,将强制文件由 SSIServlet 处理。如果使用其它文件类型如 .jsp 和 .jhtml, 就能查看未分析的 jsp 和 jhtml 代码。举例:http://www.xxx.com/*.shtml/login.jsp

  2. 通过强制使用 FileServlet 查看未分析的页面 :
  WebLogic 使用 FileServlet 配置 ConsoleHelp servlet ,在weblogic.properties 文件的以下内容可得知:

# For Console help. Do not modify.
weblogic.httpd.register.ConsoleHelp= weblogic.servlet.FileServlet
weblogic.httpd.initArgs.ConsoleHelp=\defaultFilename=/weblogic/admin/help/NoContent.html
weblogic.allow.execute.weblogic.servlet.ConsoleHelp=everyone

  因此如果文件路径以 /ConsoleHelp/ 开头将导致 WebLogic 使用 FileServlet,使未分析或编译的文件作页面显示出来,举例:http://www.xxx.com/ConsoleHelp/login.jsp

  解决方案:
  不要使用示例中的设置方法设置 FileServlet 。这可能会让你的 JSP/JHTML 文件的源代码暴露出来。请查看在线文档:
  http://www.weblogic.com/docs51/admindocs/http.html#file

  示例的 registrations 如下:
  weblogic.httpd.register.file=weblogic.servlet.FileServlet
  weblogic.httpd.initArgs.file=defaultFilename=index.html
  weblogic.httpd.defaultServlet=file

  有两种方法可以避免这个问题:

  (1)注册那些文件 servlet 使用随机用户名,加大猜测难度。例如使用象这样注册文件 servlet 为 12foo34:
  weblogic.httpd.register.12foo34=weblogic.servlet.FileServlet
  weblogic.httpd.initArgs.12foo34=defaultFilename=index.html
  weblogic.httpd.defaultServlet=12foo34

  (2)注册文件 servlet 使用 wild cards 声明你将使用所有这些文件扩展名作服务。举例注册文件 servlet 为 .html 文件服务:
  weblogic.httpd.register.*.html=weblogic.servlet.FileServlet
  weblogic.httpd.initArgs.*.html=defaultFilename=index.html
  weblogic.httpd.defaultServlet=*.html

  使用上面的方法重复加入以下类型的文件 *.gif, *.jpg, *.pdf, *.txt, etc.
  注意:这些信息是备有证明在 BEA WebLogic Server and Express 说明档的:http://www.weblogic.com/docs51/admindocs/lockdown.html
  另:请留意新版本并升级吧。

(0)

相关推荐

  • JSP漏洞大观

    综述:服务器漏洞是安全问题的起源,黑客对网站的攻击也大多是从查找对方的漏洞开始的.所以只有了解自身的漏洞,网站管理人员才能采取相应的对策,阻止外来的攻击.下面介绍一下一些服务器(包括Web服务器和JSP服务器)的常见漏洞. Apache泄露重写的任意文件漏洞是怎么回事? 在Apache1.2以及以后的版本中存在一个mod_rewrite模块,它用来指定特殊URLS在网络服务器文件系统上所映射的绝对路径.如果传送一个包含正确表达参数的重写规则,攻击者就可以查看目标主机上的任意文件. 下面举例说明重

  • JSP中的源代码泄漏问题

    摘要:在JSP技术得到广泛应用的同时,由于源代码泄漏而引起的JSP安全性也受到了广泛的关注.本文分析了几种造成源代码泄漏的因素,并针对每种因素提出了各自的解决方法. 关键词:JSP  源代码 泄漏 引言 JSP编程语言自从推出之日起,由于它的快速.平台无关.可扩展.面向对象等特性得到了越来越广泛的应用,越来越多的厂家开发出了各种各样的支持平台如IBM 公司的WebSphere.BEA公司的WebLogic等等,也有越来越多的网站开始将自己的平台架构在JSP 环境中.   但是随之而来的就是一系列

  • JSP多种web应用服务器导致JSP源码泄漏漏洞

    JSP多种web应用服务器导致JSP源码泄漏漏洞 作者:中联绿盟 汉化:不详 整理:JSPER 受影响的系统: BEA Systems Weblogic 4.5.1 - Microsoft Windows NT 4.0 BEA Systems Weblogic 4.0.4 - Microsoft Windows NT 4.0 BEA Systems Weblogic 3.1.8 - Microsoft Windows NT 4.0 IBM Websphere Application Server

  • JSP过滤器防止Xss漏洞的实现方法(分享)

    在用java进行web业务开发的时候,对于页面上接收到的参数,除了极少数是步可预知的内容外,大量的参数名和参数值都是不会出现触发Xss漏洞的字符.而通常为了避免Xss漏洞,都是开发人员各自在页面输出和数据入库等地方加上各种各样的encode方法来避免Xss问题.而由于开发人员的水平不一,加上在编写代码的过程中安全意识的差异,可能会粗心漏掉对用户输入内容进行encode处理.针对这种大量参数是不可能出现引起Xss和SQL注入漏洞的业务场景下,因此可以使用一个适用大多数业务场景的通用处理方法,牺牲少

  • JSP脚本漏洞面面观

    服务器漏洞是安全问题的起源,黑客对网站的攻击也大多是从查找对方的漏洞开始的.所以只有了解自身的漏洞,网站管理人员才能采取相应的对策,阻止外来的攻击.下面介绍一下一些服务器(包括Web服务器和JSP服务器)的常见漏洞. Apache泄露重写的任意文件漏洞是怎么回事? 在Apache1.2以及以后的版本中存在一个mod_rewrite模块,它用来指定特殊URLS在网络服务器文件系统上所映射的绝对路径.如果传送一个包含正确表达参数的重写规则,攻击者就可以查看目标主机上的任意文件. 下面举例说明重写规则

  • JSP安全开发之XSS漏洞详解

    前言 大家好,好男人就是我,我就是好男人,我就是-0nise.在各大漏洞举报平台,我们时常会看到XSS漏洞.那么问题来了,为何会出现这种漏洞?出现这种漏洞应该怎么修复? 正文 1.XSS?XSS?XSS是什么鬼? XSS又叫跨站脚本攻击(Cross Site Scripting),我不会告诉他原本是叫CSS的,但是为了不和我们所用的层叠样式表(Cascading Style Sheets)CSS搞混.CSS(跨站脚本攻击),CSS(层叠样式表)傻傻分不清.所以就叫XSS咯. 2.XSS的危害是什

  • JSP使用过滤器防止Xss漏洞

    在用java进行web业务开发的时候,对于页面上接收到的参数,除了极少数是步可预知的内容外,大量的参数名和参数值都是不会出现触发Xss漏洞的字符.而通常为了避免Xss漏洞,都是开发人员各自在页面输出和数据入库等地方加上各种各样的encode方法来避免Xss问题.而由于开发人员的水平不一,加上在编写代码的过程中安全意识的差异,可能会粗心漏掉对用户输入内容进行encode处理.针对这种大量参数是不可能出现引起Xss和SQL注入漏洞的业务场景下,因此可以使用一个适用大多数业务场景的通用处理方法,牺牲少

  • jsp 对request.getSession(false)的理解(附程序员常疏忽的一个漏洞)

    [前面的话] 在网上经常看到有人对request.getSession(false)提出疑问,我第一次也很迷惑,看了一下J2EE1.3 API,看一下官网是怎么解释的. [官方解释] getSession public HttpSession getSession(boolean create) Returns the current HttpSession associated with this request or, if if there is no current session an

  • JSP安全性初探

    综述:有几种办法可以暴露JSP代码,不过经过大量测试,这和WEB SERVER的配置有绝对的关系,就拿IBM Websphere Commerce Suite而言,还有别的方法看到JSP源代码,但相信是IBM HTTP SERVER的配置造成的. 如果想发现JSP暴露源代码的BUG的话,首先需要了解JSP的工作原理. JSP和其它的PHP.ASP工作机制不一样,虽然它也是一种web编程语言.首次调用JSP文件其实是执行一个编译为Servlet的过程.注意我们就要在这上边做文章,明白吗?我们要干的

  • ASP.NET、ASP、PHP、JSP之间有什么区别?

    Asp:      首先说Asp,它是属于脚本语言,一般连接的数据库为 Access 和 MsSql(SqlServer).当我们开发一个一般的小型数据库网站的时候,一般在3万条记录以下的,一般用Access数据库.      Access数据库的优势就是一般的服务器都支持.      SqlServer数据库的优势就是速度快,比如当记录集在10万以上,可以推荐用Sql的数据库. 这两种数据库在Asp中都是用Sql语法,但Access数据库和SqlServer数据库的使用语法有一定的不同. 在制

随机推荐