您的位置 首页 java

一次测试引发的探索:关于分号在java web中的一个特性

还记得IIS的剖析破绽吗?xx.asp;.jpg。而近来对java网站停止测试的时刻发明了一个成绩,也是由分号惹起的,也是以去检查了一下源码,大概许多人曾经晓得了这个成绩,然则大概有的人不晓得,以是我将内容记载上去了并停止了分享。

原由

我在测试的时刻的一个功效的设置装备摆设文件片断为:

<bean id="viewResolver" 

代码片断:

 public static String PRE = "landingpage/"; @ request Mapping({"online"}) public String toOnline(String version) { if (StringUtils.isBlank(version)) { 

很显著,version的值是能够经由进程客户端通报过去的,也便是前往的文件门路是能够被节制的:

当version=xxx时,前往的文件应当是:/view/landingpage/online-xxx. jsp

以是这一功效是存在随意率性文件下载破绽的,条件是咱们若何把后面的.jsp给朋分进来,在许多时刻咱们会应用%00等空字符停止截断,然则这里并不能胜利。

而颠末一些测试,我发明分号在这里能有截断的功效,也便是当我输出../../WEB-INF/web.xml;的时刻,我能够或许获得到web.xml的设置装备摆设信息:

狐疑

破绽曾经测试胜利,然则为何分号能够或许有截断的功效呢?

我开端以为是spring mvc的框架中的成绩,但彷佛并非,我又狐疑是 tomcat 中间件的成绩,彷佛也不满是。

若何验证这些疑难呢?

找一个java的网站,在门路的开头也便是问号的后面输出:,你会发明和前往的成果同样的,并无提醒找不到对应的页面。

也便是说;xxxx在处置的进程当中与后面的内容被分开开了。

也便是说这彷佛是java web的一个广泛征象,而不仅仅是某个中间件或许 spring 的成绩。

调试

因而间接写了一个简略的jsp的代码,来调试这个进程:

<% request.getRequestDispatcher(request.getParameter("filename")+".doc"). include (request, response); %> 

作为突破口,应用tomcat作为中间件停止调试,关上接口requestDispatcher的一个完成类:ApplicationDispatcher

在ApplicationDispatcher中设置断点停止调试

拜访上面地点来触发断点:

 

这时候发明doForward函数中的变量servletPath中的值为:WEB-INF/web.xml,曾经将分号和后面的数据给去除

而颠末变量的追踪,就发明在颠末wrequest.setServletPath(servletPath)这个办法前:wrequest.getServletPath=”test123.jsp”,而之后变成为了/WEB-INF/web.xml,以是成绩出在servletPath的获得上:servletPath的获得应当是在实例化的时刻,也便是在代码中:

public ApplicationDispatcher (Wrapper wrapper, String requestURI, String servletPath, String pathInfo, String queryString, String name) { super(); // Save all of our configuration parameters 

由此看进去servletPath的值也是从外部通报进来的

实例化该类的工具为:ApplicationContext.getRequestDispatcher:

检查代码

和调试时发明初始的path通报的值为

而终极前往的内容的值为:/WEB-INF/web.xml

也是以定位了症结地位:

而这里并无停止,由于在这个办法中,除分号的一个截断外,还有一个标记也会被朋分,便是问号“?”:

停止

也便是说在java web中咱们应用分号和问号,在某种程度上来讲,是能够起到截断的作用的,但会不会如xx.asp;.jpg同样,招致剖析破绽呢,事实上是没有的,当咱们去拜访的时刻,事实上拜访的是1.jsp这个文件,而不是1.jsp;.jpg这个文件,当咱们上传了1.jsp;.jpg文件时,经由进程web是拜访不到的。

PS:java servlet的重定向和转发:

request.getRequestDispatcher("").forward(request,reponse); 

文章来源:智云一二三科技

文章标题:一次测试引发的探索:关于分号在java web中的一个特性

文章地址:https://www.zhihuclub.com/184096.shtml

关于作者: 智云科技

热门文章

发表回复

您的电子邮箱地址不会被公开。

网站地图