我有一个运行在Tomcat上的Java应用程序,我应该在上面利用路径遍历漏洞。有一个部分(在应用程序中),我可以上传一个.zip文件,在服务器的/tmp
目录中提取该文件。.zip
文件的内容没有被检查,所以基本上我可以在其中放任何东西。我试着把一个.jsp
文件放进去,它提取得很好。我的问题是,我不知道如何通过浏览器作为“正常”用户访问这个文件。我试着在地址栏中输入../../../tmp/somepage.jsp
,但是Tomcat只是去掉了../
,给了我不可用的http://localhost:8080/tmp/
资源。理想的情况是,我可以在somepage.jsp
的路径中对../进行编码,以便将其提取到web的Web防暴目录中。这个是可能的吗?是否有任何转义序列可以在提取后转化为../
?
任何想法都将不胜感激。
注意:这是安全课程中的一个学校项目,我应该在那里查找漏洞并纠正它们。不想伤害任何人。
发布于 2013-10-21 21:47:54
很抱歉投票失败了。安全是非常重要的,应该被教导。
您是否传入要使用的文件名?
服务器所做的检查可能类似于If location starts with "/tmp" then allow it
。那么,您想要做的是传递`/tmp/./home/webapp/“?
另一个想法是,看看是否可以创建一个压缩文件,从而将内容向上移动--就像在zip中的文件名中设置"../“,会发生什么?如果您的zip工具不允许,您可能需要手动修改它。
发布于 2013-10-21 21:51:04
为了防止这种漏洞,您需要如下所示:
String somedirectory = "c:/fixed_directory/";
String file = request.getParameter("file");
if(file.indexOf(".")>-1)
{
//if it contains a ., disallow
out.print("stop trying to hack");
return;
}
else
{
//load specified file and print to screen
loadfile(somedirectory+file+".txt");
///.....
}
如果您只是将变量" file“传递给您的loadfile函数而不进行检查,那么有人可以创建一个链接来加载他们想要的任何文件。请参阅Traversal
https://stackoverflow.com/questions/19504327
复制相似问题