我们使用自动安全性探测,并且它显示出一个vulernability,导致500响应返回默认错误。 JRun返回错误的信息泄漏被视为漏洞。这个500错误发生在JRun中的CF之上,并且不能由CF处理。
以下是导致内部JRun错误的测试代码段:
<cfhttp url="https://www.domain.com/FormController.cfc" method="post" result="r"><cfhttpparam type="header" name="Accept" value="text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5" />
<cfhttpparam type="header" name="Accept-Charset" value="ISO-8859-1,utf-8;q=0.7,*;q=0.7" />
<cfhttpparam type="header" name="Accept-Encoding" value="gzip;q=1.0, x-gzip;q=0.9, x-bzip2;q=0.9, deflate;q=0.8, identity;q=0.5, base64;q=0.1, quoted-printable;q=0.1, compress;q=0, *;q=0" />
<cfhttpparam type="header" name="Accept-Language" value="en-us,en;q=0.5" />
<cfhttpparam type="header" name="User-Agent" value="Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:13.0) Gecko/20100101 Firefox/13.0.1 WhiteHat Security" />
<cfhttpparam type="header" name="Content-Length" value="158" />
<cfhttpparam type="header" name="Content-Type" value="application/x-www-form-urlencoded" />
<cfhttpparam type="body" value="Method=%u002e%u002e%u2216%u002e%u002e%u2216%u002e%u002e%u2216%u002e%u002e%u2216%u002e%u002e%u2216%u002e%u002e%u2216%u002e%u002e%u2216%u002e%u002e%u2216%u002e%u002e%u2216%u002e%u002e%u2216boot%u002eini%00">
</cfhttp>
<cfdump var="#r#">
<cfoutput>#r.filecontent#</cfoutput>
我使用了这里提供的信息: Handling 500 JRun servlet in ColdFusion 将自定义处理程序添加到JRun中以获取500错误,如下所示:
<error-page>
<error-code>500</error-code>
<location>/WEB-INF/error-pages/500error.jsp</location>
</error-page>
500error.jsp文件只输出一些基本信息,如“发生错误的Opps ...”以及状态代码和消息,但不输出堆栈跟踪。
使用CF9 Developer版本在我的MBP开发中运行良好。当我昨晚投入生产时(在CF9 Standard / Win2k服务器上)我希望它能正常工作。当我再次使用请求运行测试代码段而不是返回自定义错误时,它返回标准错误servlet错误。我仔细检查了路径,并认为可能在jsp中有错误。我将其更改为纯HTML,仍然是默认错误。
出于纯粹的随机性,我尝试了http://www.domain.com/error-pages/500error.jsp。除了404之外,我没有发生任何事情,但实际上我得到了这个:
500
A License exception has occurred: You tried to access a restricted feature for the Standard edition: JSP
coldfusion.license.LicenseManager$LicenseIllegalAccessException: A License exception has occurred: You tried to access a restricted feature for the Standard edition: JSP
at coldfusion.license.LicenseManager.byte(Unknown Source)
at coldfusion.license.LicenseManager.checkJSP(Unknown Source)
at coldfusion.license.JspLicenseServlet.service(Unknown Source)
at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89)
at jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:106)
at jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42)
at jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:286)
at jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:543)
at jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:203)
at jrunx.scheduler.ThreadPool$DownstreamMetrics.invokeRunnable(ThreadPool.java:320)
at jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java:428)
at jrunx.scheduler.ThreadPool$UpstreamMetrics.invokeRunnable(ThreadPool.java:266)
at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)
那么,似乎jsp不是标准版的功能?所以我接着尝试将500error.jsp更改为500error.html。对文件名进行了更改,使其成为静态html,更新了web.xml,重新启动,现在我在POST上获得403 Forbidden并点击http://www.domain.com/error-pages/500error.html。
所以我不确定发生了什么。在JRun级别的自定义处理是否只是标准版不允许的?它适用于Developer Edition,因为它基本上不受限制?无法在文档中找到答案。除了JRun解决方案之外,还有另一种方法可以处理这500个吗?
由于
答案 0 :(得分:1)
在搜索了Adobe文档和许多不起眼的论坛帖子后,我发现标准版实际上并不支持JSP,但开发人员和企业版都支持JSP。所以这回答了一个问题。
至于将错误处理程序从jsp更改为html,我认为这也不可能。除非有一个我缺少的设置。除了jsp错误之外的任何内容都会导致IIS和Apache出现403
错误。
在IIS上,我检查了我创建的/ WEB-INF / error-pages目录的所有权限,但找不到阻止访问的任何内容。我也尝试将html文件放入/ WEB-INF / root,但没有运气。所以在这一点上我倾向于放弃。我认为像这样的模糊黑客尝试有403错误。
答案 1 :(得分:0)
似乎错误处理与开发服务器到生产服务器不同。您可以比较IIS设置下“错误页面”的设置。检查为500个错误设置的内容,并检查错误响应的功能设置(在左侧)。
希望有所帮助。