zl程序教程

您现在的位置是:首页 >  后端

当前栏目

JSP漏洞大观

2023-06-13 09:13:45 时间
综述:服务器漏洞是安全问题的起源,黑客对网站的攻击也大多是从查找对方的漏洞开始的。所以只有了解自身的漏洞,网站管理人员才能采取相应的对策,阻止外来的攻击。下面介绍一下一些服务器(包括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)Apache1.3.12
  2)Apache1.3.11win32
  3)Apache1.2.x

  不受影响系统:Apache1.3.13

  怎样解决在HTTP请求中添加特殊字符导致暴露JSP源代码文件?
  UnifyeWaveServletExec是一个Java/JavaServlet引擎插件,主要用于WEB服务器,例如:MicrosoftIIS,Apache,NetscapeEnterprise服务器等等。
  当一个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)UnifyeWaveServletExec3.0c
  2)SunSolaris8.0
  3)MicrosoftWindows98
  4)MicrosoftWindowsNT4.0
  5)MicrosoftWindowsNT2000
  6)Linuxkernel2.3.x
  7)IBMAIX4.3.2
  8)HPHP-UX11.4

  解决方案:

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

  Tomcat有哪些漏洞?

  Tomcat3.1存在暴露网站路径问题

  Tomcat3.1是在Apache软件环境下开发的一个支持JSP1.1和Servlets2.2的软件。它存在一个安全问题当发送一个不存在的jsp请求时会暴露网站上网页的全路径。

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

  结果显示:
Error:404
Location:/anything.jsp
JSPfile"/appsrv2/jakarta-tomcat/webapps/ROOT/anything.jsp"notfound

  解决方案:升级到新版本

  Tomcat暴露JSP文件内容

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

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

  如何在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


  AllairJrun漏洞有哪些漏洞?

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

  受影响的系统:AllaireJRun3.0

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

Allairepatchjr233p_ASB00_28_29
http://download.allaire.com/jrun/jr233p_ASB00_28_29.zip
Windows95/98/NT/2000andWindowsNTAlpha
Allairepatchjr233p_ASB00_28_29tar
http://download.allaire.com/jrun/jr233p_ASB00_28_29.tar.gz
UNIX/Linuxpatch-GNUgzip/tar  

  AllaireJRUN2.3查看任意文件漏洞

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

http://jrun:8000/servlet/com.livesoftware.jrun.plugins.ssi.SSIFilter/../../test.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。

  受影响的系统:AllaireJRun2.3.x

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

Allairepatchjr233p_ASB00_28_29
http://download.allaire.com/jrun/jr233p_ASB00_28_29.zip
Windows95/98/NT/2000andWindowsNTAlpha
Allairepatchjr233p_ASB00_28_29tar
http://download.allaire.com/jrun/jr233p_ASB00_28_29.tar.gz
UNIX/Linuxpatch-GNUgzip/tar

  AllaireJRUN2.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

  受影响的系统:AllaireJRun2.3.x

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

Allairepatchjr233p_ASB00_28_29
http://download.allaire.com/jrun/jr233p_ASB00_28_29.zip
Windows95/98/NT/2000andWindowsNTAlpha
Allairepatchjr233p_ASB00_28_29tar
http://download.allaire.com/jrun/jr233p_ASB00_28_29.tar.gz
UNIX/Linuxpatch-GNUgzip/tar  

  JRun2.3.x范例文件暴露站点安全信息

  JRun2.3.x在JRUN_HOME/servlets目录下有一些servlet范例文件,这个目录是JRun2.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.3servicepack
  2)从服务器上删除所有的说明文档、演示编码、范例和教材,包括安装JRun  2.3.x时存放于JRUN_HOME/servlets目录和JRUN_HOME/jsm-default/services/jws/htdocs目录里的文档。
  相关站点:http://www.allaire.com/

  IBMWebSphereApplicationServer有哪些漏洞?

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

  受影响系统:IBMWebSphere3.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/
  IBMWebSphereApplicationServer暴露JSP文件内容
  JavaServerPages(JSP)类型的文件是以".jsp"扩展名在WebSphereApplicationServe上注册,WebSphere是文件名大小写敏感的,".jsp"和".JSP"是不同类型的文件扩展名。如果提交有".JSP"的链接给WebSphere,而WebSphere找不到".JSP"就会以默认的".text"文件类型来响应请求。因为在NT系统中大小写文件名是非敏感的,所以被请求的文件会以文本的形式送出。

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

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

  受影响版本:

  所有系统上的

  BEAWebLogicEnterprise5.1.x
  BEAWebLogicServerandExpress5.1.x
  BEAWebLogicServerandExpress4.5.x
  BEAWebLogicServerandExpress4.0.x
  BEAWebLogicServerandExpress3.1.8  

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

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

  1)FileServlet-for简单HTML页面
  2)SSIServlet-forServerSideIncludes页面
  3)PageCompileServlet-forJHTML页面
  4)JSPServlet-forJavaServer页面

  看着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是如何注册的。

  #Defaultservletregistration
  #------------------------------------------------
  #Virtualnameofthedefaultservletifnomatchingservlet
  #isfoundweblogic.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配置ConsoleHelpservlet,在weblogic.properties文件的以下内容可得知:

#ForConsolehelp.Donotmodify.
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使用wildcards声明你将使用所有这些文件扩展名作服务。举例注册文件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.
  注意:这些信息是备有证明在BEAWebLogicServerandExpress说明档的:http://www.weblogic.com/docs51/admindocs/lockdown.html
  另:请留意新版本并升级吧。