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服务器小案例的主要内容,如果未能解决你的问题,请参考以下文章

Tomcat服务器 Tomcat应用案例 Varnish代理服务器

ASP.ENT中做登陆怎么防止注入攻击?

ASP.NET如何防止SQL注入

教你ASP.NET中如何防止注入攻击

JSP使用过滤器防止SQL注入

如何实现php的安全最大化?怎样避免sql注入漏洞和xss跨站脚本攻击漏洞