JSP注入攻击tomcat服务器小案例
Posted 时间沉淀美好
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSP注入攻击tomcat服务器小案例相关的知识,希望对你有一定的参考价值。
最近学了文件上传下载,但是注意到了一个问题,用户上传普通的比如图片小说,这是没有问题的,但是,如果用户上传了一个可以在服务器执行的文件比如jsp,这问题可就大了。
先演示一段jap注入攻击,假定上传的文件我们放在tomcat的根目录下:
这是上传页面代码
<form action="$pageContext.request.contextPath/UploadServlet" method="post" enctype="multipart/form-data">
名称:<input type="text" name="username"><br>
艳照:<input type="file" name="image"><br>
<input type="submit" value="上传">
</form>
这是servlet处理上传的代码
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
//普通字段
String username=request.getParameter("username");
//上传 Part servlet3.0用于描述文件上传的对象 类似于阿帕奇的fileupload(FileItem)
javax.servlet.http.Part imagePart = request.getPart("image");
// * 文件名 Content-Disposition: form-data; name="image"; filename="xxx.jpg"
String contentDisposition = imagePart.getHeader("Content-Disposition");
int beginIndex=contentDisposition.lastIndexOf("filename")+"filename=\\"".length();
int endIndex=contentDisposition.length()-1;
String fileName=contentDisposition.substring(beginIndex, endIndex);
//文件内容
InputStream is=imagePart.getInputStream();
File file=new File(this.getServletContext().getRealPath("/WEB-INF"),fileName);
FileOutputStream out=new FileOutputStream(file);
byte[] buf=new byte[1024];
int len=0;
while((len=is.read(buf)) !=-1)
out.write(buf,0,len);
out.close();
is.close();
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
doGet(request, response);
ok 来段攻击看看:
就是一段简单的文字打印o(^▽^)o
来看看浏览器给的回应:
注入成功了。
如果上传的是修改磁盘或者删文件的就麻烦了。目前解决办法,可以创建多层目录,不能放到根目录下。
以上是关于JSP注入攻击tomcat服务器小案例的主要内容,如果未能解决你的问题,请参考以下文章