JSP漏洞大观(三)

80酷酷网    80kuku.com

  jsAllaire 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
  另:请留意新版本并升级吧。
(完) 



分享到
  • 微信分享
  • 新浪微博
  • QQ好友
  • QQ空间
点击: