我有一个在Tomcat上运行的Java Web App,我应该利用它来利用Path遍历漏洞。有一个部分(在应用程序中)我可以上传.zip文件,该文件将在服务器的/tmp
目录中提取。 .zip
文件的内容未被检查,所以基本上我可以放入任何内容。我尝试在其中放入一个.jsp
文件并完美地提取。我的问题是我不知道如何从浏览器作为“普通”用户访问此文件。我尝试在地址栏中输入../../../tmp/somepage.jsp
,但Tomcat只删除../
并提供http://localhost:8080/tmp/
资源不可用。
理想的情况是,如果我可以在somepage.jsp
的路径中以某种方式编码../,以便它在Web应用程序的Web防暴目录中被提取。这可能吗?在提取后是否有任何转义为../
的转义序列?
任何想法都将受到高度赞赏 注意:这是一个安全课程中的学校项目,我应该找到漏洞并进行纠正。不试图伤害任何人...
答案 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