利用和纠正路径遍历漏洞

时间:2013-10-21 20:44:27

标签: security jsp tomcat path traversal

我有一个在Tomcat上运行的Java Web App,我应该利用它来利用Path遍历漏洞。有一个部分(在应用程序中)我可以上传.zip文件,该文件将在服务器的/tmp目录中提取。 .zip文件的内容未被检查,所以基本上我可以放入任何内容。我尝试在其中放入一个.jsp文件并完美地提取。我的问题是我不知道如何从浏览器作为“普通”用户访问此文件。我尝试在地址栏中输入../../../tmp/somepage.jsp,但Tomcat只删除../并提供http://localhost:8080/tmp/资源不可用。 理想的情况是,如果我可以在somepage.jsp的路径中以某种方式编码../,以便它在Web应用程序的Web防暴目录中被提取。这可能吗?在提取后是否有任何转义为../的转义序列?

任何想法都将受到高度赞赏 注意:这是一个安全课程中的学校项目,我应该找到漏洞并进行纠正。不试图伤害任何人...

2 个答案:

答案 0 :(得分:2)

对于downvotes抱歉。安全非常重要,应该教授。

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

服务器执行的检查可能类似于If location starts with "/tmp" then allow it。所以你要做的是传递`/ tmp /../ home / webapp /“?

另一个想法是看看你是否可以制作一个拉链文件,这会导致内容向上移动 - 就像你在拉链内的文件名中设置“../”一样,会发生什么?如果您的zip工具不允许,您可能需要手动修改。

答案 1 :(得分:0)

为了防范此类漏洞,您需要寻找以下内容:

 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函数而不进行检查,那么有人可以创建一个链接来加载他们想要的任何文件。见https://www.owasp.org/index.php/Path_Traversal