2

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

任何想法将不胜感激。
注意:这是安全课程中的一个学校项目,我应该在其中找到漏洞并纠正它们。不想伤害任何人...

4

2 回答 2

2

很抱歉投反对票。安全非常重要,应该被教导。

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

服务器所做的检查可能类似于If location starts with "/tmp" then allow it. 所以你想要做的是通过`/tmp/../home/webapp/"?

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

于 2013-10-21T21:47:54.633 回答
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

于 2013-10-21T21:51:04.817 回答