首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >挖掘和纠正路径遍历漏洞

挖掘和纠正路径遍历漏洞
EN

Stack Overflow用户
提问于 2013-10-21 20:44:27
回答 2查看 6.6K关注 0票数 2

我有一个运行在Tomcat上的Java应用程序,我应该在上面利用路径遍历漏洞。有一个部分(在应用程序中),我可以上传一个.zip文件,在服务器的/tmp目录中提取该文件。.zip文件的内容没有被检查,所以基本上我可以在其中放任何东西。我试着把一个.jsp文件放进去,它提取得很好。我的问题是,我不知道如何通过浏览器作为“正常”用户访问这个文件。我试着在地址栏中输入../../../tmp/somepage.jsp,但是Tomcat只是去掉了../,给了我不可用的http://localhost:8080/tmp/资源。理想的情况是,我可以在somepage.jsp的路径中对../进行编码,以便将其提取到web的Web防暴目录中。这个是可能的吗?是否有任何转义序列可以在提取后转化为../

任何想法都将不胜感激。

注意:这是安全课程中的一个学校项目,我应该在那里查找漏洞并纠正它们。不想伤害任何人。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-21 21:47:54

很抱歉投票失败了。安全是非常重要的,应该被教导。

您是否传入要使用的文件名?

服务器所做的检查可能类似于If location starts with "/tmp" then allow it。那么,您想要做的是传递`/tmp/./home/webapp/“?

另一个想法是,看看是否可以创建一个压缩文件,从而将内容向上移动--就像在zip中的文件名中设置"../“,会发生什么?如果您的zip工具不允许,您可能需要手动修改它。

票数 2
EN

Stack Overflow用户

发布于 2013-10-21 21:51:04

为了防止这种漏洞,您需要如下所示:

代码语言:javascript
运行
复制
 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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19504327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档