綜述:服務器漏洞是安全問題的起源,黑客對網站的攻擊也大多是從查找對方的漏洞開始的。所以只有了解自身的漏洞,網站管理人員才能采取相應的對策,阻止外來的攻擊。下面介紹一下一些服務器(包括Web服務器和JSP服務器)的常見漏洞。
Apache洩露重寫的任意文件漏洞是怎麼回事?
在Apache1.2以及以後的版本中存在一個mod_rewrite模塊,它用來指定特殊URLS在網絡服務器文件系統上所映射的絕對路徑。如果傳送一個包含正確表達參數的重寫規則,攻擊者就可以查看目標主機上的任意文件。
下面舉例說明重寫規則指令(其中第一行只有是包含漏洞的):
RewriteRule /test/(.*) /usr/local/data/test-stuff/$1
RewriteRule /more-icons/(.*) /icons/$1
RewriteRule /go/(.*) http://www.apacheweek.com/$1
受影響的系統:
1)Apache 1.3.12
2)Apache 1.3.11win32
3)Apache 1.2.x
不受影響系統:Apache 1.3.13
怎樣解決在HTTP請求中添加特殊字符導致暴露JSP源代碼文件?
Unify eWave ServletExec 是一個 Java/Java Servlet 引擎插件,主要用於 WEB 服務器,例如:Microsoft IIS, Apache, Netscape Enterprise 服務器等等。
當一個 HTTP 請求中添加下列字符之一,ServletExec 將返回 JSP 源代碼文件。
.
%2E
+
%2B
\
%5C
%20
%00
成功的利用該漏洞將導致洩露指定的JSP文件的源代碼,例如:使用下面的任意一個URL請求將輸出指定的JSP文件的源代碼:
1)http://target/directory/jsp/file.jsp.
2)http://target/directory/jsp/file.jsp%2E
3)http://target/directory/jsp/file.jsp+
4)http://target/directory/jsp/file.jsp%2B
5)http://target/directory/jsp/file.jsp\
6)http://target/directory/jsp/file.jsp%5C
7)http://target/directory/jsp/file.jsp%20
8)http://target/directory/jsp/file.jsp%00
受影響的系統:
1)Unify eWave ServletExec 3.0c
2)Sun Solaris 8.0
3)Microsoft Windows 98
4)Microsoft Windows NT 4.0
5)Microsoft Windows NT 2000
6)Linux kernel 2.3.x
7)IBM AIX 4.3.2
8)HP HP-UX 11.4
解決方案:
如果沒有使用任何靜態頁面或圖像,可以配置一個默認的 servlet,並將"/"映射到這個默認的 servlet。這樣當收到一個未映射到某個 servlet 的 URL 時,這個默認的servlet 就會被調用。在這種情況下,默認的 servlet 可以僅僅返回"未找到文件"。如果使用了靜態的頁面或圖像,仍然可以作這樣的配置,但是需要讓這個默認的servlet 處理對合法的靜態頁面和圖像的請求。
另一種可能就是將*.jsp+、*.jsp.和*.jsp\等映射到一個 servlet,而該servlet只是返回"未找到文件"。對於*.jsp%00和*.jsp%20這樣的情況,映射應以未經編碼的形式輸入。例如,對於*.jsp%20的映射應輸入"*.jsp "。注意%20被轉換成一個空格字符。
Tomcat有哪些漏洞?
Tomcat 3.1 存在暴露網站路徑問題
Tomcat 3.1 是在 Apache 軟件環境下開發的一個支持 JSP 1.1 和 Servlets 2.2 的軟件。它存在一個安全問題當發送一個不存在的 jsp 請求時會暴露網站上網頁的全路徑。
舉例:
http://narco.guerrilla.sucks.co:8080/anything.jsp
結果顯示:
Error: 404
Location: /anything.jsp
JSP file "/appsrv2/jakarta-tomcat/webapps/ROOT/anything.jsp" not found
解決方案:升級到新版本
Tomcat 暴露JSP文件內容
Java Server Pages (JSP)類型的文件是以'.jsp'擴展名在Tomcat 上注冊,Tomcat 是文件名大小寫敏感的,'.jsp'和'.JSP'是不同類型的文件擴展名。如果提交有'.JSP'的鏈接給Tomcat,而Tomcat找不到'.JSP'就會以默認的'.text'文件類型來響應請求。因為在NT系統中大小寫文件名是非敏感的,所以被請求的文件會以文本的形式送出。
如果在UNIX服務器上會出現"file not found"的錯誤信息。
如何在windows下對Tomcat實施代碼保護
Tomcat的一些版本有洩露源代碼的漏洞,如果在浏覽器中調用JSP頁面時將該文件的後綴改成大寫,這個JSP文件的源代碼將完全輸出到浏覽器中(也許浏覽器窗口中什麼都沒有,這時你只需查看HTML源文件就可以發現)。如此一來,網站的源代碼是不是都會暴露在互聯網上那?
不用擔心,解決方法很簡單,把各種後綴的組合全部寫到Tomcat_Home\conf \web.xml裡就可以了,這樣Tomcat會將不同後綴名的JSP分開對待,就不會洩露代碼了。
jsp
*.jsp
jsP
*.jsP
?lt;servlet-name>jSp
*.jSp
jSP
*.jSP
Jsp
*.Jsp
JsP
*.JsP
JSp
*.JSp
JSP
*.JSP
Allair Jrun漏洞有哪些漏洞?
Allair JRUN 非法讀取 WEB-INF 漏洞
在Allaire 的 JRUN 服務器 2.3版本中存在一個嚴重的安全漏洞。它允許一個攻擊者在 JRun 3.0 服務器中查看 WEB-INF 目錄。
如果用戶在提交 URL 請求時在,通過附加一個"/"使該 URL 成為畸形的 URL,這時 WEB-INF 下的所有子目錄將會暴露出來。攻擊者巧妙的利用該漏洞將能夠遠程獲得目標主機系統中 WEB-INF 目錄下的所有文件的讀取權限。
例如使用下面這個 URL 將會暴露 WEB-INF 下的所有文件:
http://site.running.jrun:8100//WEB-INF/
受影響的系統:Allaire JRun 3.0
解決方案:下載並安裝補丁:
Allaire patch jr233p_ASB00_28_29
http://download.allaire.com/jrun/jr233p_ASB00_28_29.zip
Windows 95/98/NT/2000 and Windows NT Alpha
Allaire patch jr233p_ASB00_28_29tar
http://download.allaire.com/jrun/jr233p_ASB00_28_29.tar.gz
UNIX/Linux patch - GNU gzip/tar
Allaire JRUN 2.3 查看任意文件漏洞
Allaire 的 JRUN 服務器 2.3上存在多重顯示代碼漏洞。該漏洞允許攻擊者在 WEB 服務器上查看根目錄下的任意文件的源代碼。
JRun 2.3 使用 Java Servlets 解析各種各樣類型的頁面(例如:HTML, JSP等等)。基於rules.properties 和 servlets.properties 的文件設置,可能利用URL前綴"/servlet/"調用任何servlet。
它可能使用 Jrun 的 SSIFilter servlet 在目標系統上檢索任意的文件。下列 2 個例子顯示出能被用來檢索任意的文件的 URLs :
http://jrun:8000/servlet/com.livesoftware.jrun.plugins.ssi.SSIFilter/../../t est.jsp
http://jrun:8000/servlet/com.livesoftware.jrun.plugins.ssi.SSIFilter/../../../../../../../boot.ini
http://jrun:8000/servlet/com.livesoftware.jrun.plugins.ssi.SSIFilter/../../. ./../../../../winnt/repair/sam
http://jrun:8000/servlet/ssifilter/../../test.jsp
http://jrun:8000/servlet/ssifilter/../../../../../../../boot.ini
http://jrun:8000/servlet/ssifilter/../../../../../../../winnt/repair/sam._
注意:假設JRun在主機" jrun "上運行,端口8000。
受影響的系統:Allaire JRun 2.3.x
解決方案:下載並安裝補丁:
Allaire patch jr233p_ASB00_28_29
http://download.allaire.com/jrun/jr233p_ASB00_28_29.zip
Windows 95/98/NT/2000 and Windows NT Alpha
Allaire patch jr233p_ASB00_28_29tar
http://download.allaire.com/jrun/jr233p_ASB00_28_29.tar.gz
UNIX/Linux patch - GNU gzip/tar
Allaire JRUN 2.3遠程執行任意命令漏洞
Allaire 的 JRUN 服務器 2.3上存在一個安全漏洞,允許遠程用戶把在 WEB 服務器上的任意文件作為JSP代碼編譯/執行。 如果URL請求的目標文件使用了前綴"/servlet/",則JSP解釋執行功能被激活。這時在用戶請求的目標文件路徑中使用"../",就有可能訪問到 WEB 服務器上根目錄以外的文件。在目標主機上利用該漏洞請求用戶輸入產生的一個文件,將嚴重威脅到目標主機系統的安全。
例如:
http://jrun:8000/servlet/com.livesoftware.jrun.plugins.jsp.JSP/../../path/to /temp.txt
http://jrun:8000/servlet/jsp/../../path/to/temp.txt
受影響的系統:Allaire JRun 2.3.x
解決方案:下載並安裝補丁:
Allaire patch jr233p_ASB00_28_29
http://download.allaire.com/jrun/jr233p_ASB00_28_29.zip
Windows 95/98/NT/2000 and Windows NT Alpha
Allaire patch jr233p_ASB00_28_29tar
http://download.allaire.com/jrun/jr233p_ASB00_28_29.tar.gz
UNIX/Linux patch - GNU gzip/tar
JRun 2.3.x 范例文件暴露站點安全信息
JRun 2.3.x 在 JRUN_HOME/servlets 目錄下有一些 servlet 范例文件,這個目錄是 JRun 2.3.x 用於加載和執行 servlets 文件。所有擴展名為 ".Java" 或 "class" 的文件必須被刪除,這是因為這些文件會暴露站點的安全信息。例如:
http://www.xxx.xxx/servlet/SessionServlet 會暴露當前服務器保持的HTTP連接信息。JRUN_HOME/jsm-default/services/jws/htdocs 目錄下的內容也應被刪除掉。這個目錄保存有演示服務器功能的 '.jsp' 文件,其中一些文件牽涉到訪問服務器文件系統和暴露服務器設置的問題。例如對文件 "viewsource.jsp" 的路徑檢查是默認關閉的,它可被用於訪問服務器文件系統。
解決方案:
1)安裝 2.3.3 service pack
2)從服務器上刪除所有的說明文檔、演示編碼、范例和教材,包括安裝 JRun 2.3.x 時存放於 JRUN_HOME/servlets 目錄和JRUN_HOME/jsm-default/services/jws/htdocs 目錄裡的文檔。
相關站點:http://www.allaire.com/
IBM WebSphere Application Server有哪些漏洞?
1、IBM WebSphere Application Server 3.0.2 存在暴露源代碼漏洞
IBM WebSphere Application Server 允許攻擊者查看 Web server 根目錄以上的所有文件。IBM WebSphere 使用 Java Servlets 處理多種頁面類型的分析(如 HTML, JSP, JHTML, 等等)。In addition 不同的 servlets 對不同的頁面進行處理,如果一個請求的文件是未進行注冊管理的,WebSphere 會使用一個默認的 servlet 作調用。如果文件路徑以"/servlet/file/"作開頭這個默認的 servlet 會被調用這個請求的文件會未被分析或編譯就顯示出來。
受影響系統:IBM WebSphere 3.0.2 的所有版本
舉例:
如果一個請求文件的 URL 為 "login.jsp":: http://site.running.websphere/login.jsp那麼訪問 http://site.running.websphere/servlet/file/login.jsp將看到這個文件的源代碼。
解決方案:下載並安裝補丁
http://www-4.ibm.com/software/webservers/appserv/efix.html
相關站點:http://www-4.ibm.com/software/webservers/appserv/
IBM WebSphere Application Server 暴露JSP文件內容
Java Server Pages (JSP)類型的文件是以'.jsp'擴展名在WebSphere Application Serve 上注冊,WebSphere 是文件名大小寫敏感的,'.jsp'和'.JSP'是不同類型的文件擴展名。如果提交有'.JSP'的鏈接給WebSphere,而WebSphere找不到'.JSP'就會以默認的'.text'文件類型來響應請求。因為在NT系統中大小寫文件名是非敏感的,所以被請求的文件會以文本的形式送出。
如果在UNIX服務器上會出現"file not found"的錯誤信息。
解決方案:點擊此處下載補丁
相關站點:http://www-4.ibm.com/software/webservers/appserv/efix.html
BEA WebLogic有哪些暴露源代碼漏洞?
受影響版本:
所有系統上的
BEA WebLogic Enterprise 5.1.x
BEA WebLogic Server and Express 5.1.x
BEA WebLogic Server and Express 4.5.x
BEA WebLogic Server and Express 4.0.x
BEA WebLogic Server and Express 3.1.8
這個漏洞使攻擊者能讀取 Web 目錄下所有文件的源代碼。
WebLogic 依賴四個主要 Java Servlets to 服務不同類型的文件。這些 servlets 是:
1)FileServlet - for 簡單 HTML 頁面
2)SSIServlet - for Server Side Includes 頁面
3)PageCompileServlet - for JHTML 頁面
4)JSPServlet - for Java Server 頁面
看著weblogic.properties 文件, 這兒是各個 servlets 的注冊值:
1)weblogic.httpd.register.file=weblogic.servlet.FileServlet
2)weblogic.httpd.register.*.shtml=weblogic.servlet.ServerSideIncludeServlet
3)weblogic.httpd.register.*.jhtml=weblogic.servlet.jhtmlc.PageCompileServlet
4)weblogic.httpd.register.*.jsp=weblogic.servlet.JSPServlet
更多的 weblogic.properties 文件, 如果一個請求文件是沒有注冊管理的,那麼就會調用一個默認的 servlet 。以下是展示默認的 servlet 是如何注冊的。
# Default servlet registration
# ------------------------------------------------
# Virtual name of the default servlet if no matching servlet
# is found weblogic.httpd.defaultServlet=file
因此如果 URL 中的文件路徑開頭為 "/file/" , 將會引致 WebLogic 調用默認的 servlet, 那將會使網頁未加分析和編譯而直接顯示。
論證:
只要在想看的文件原來的 URL 路徑之前加入 "/file/" 就會讓文件未經分析和編譯,直接暴露源代碼。如:http://site.running.weblogic/login.jsp ,那麼只要訪問 http://site.running.weblogic/file/login.jsp 就會在 WEB 浏覽器裡看到文件的內容。
以下是使用方法:
1. 通過強制使用 SSIServlet 查看未分析的頁面 :
服務器站點通過 WebLogic 中的 SSIServlet 處理頁面,它在weblogic.properties 文件中注冊以下信息:weblogic.httpd.register.*.shtml= weblogic.servlet.ServerSideIncludeServlet
通過 URL 使用 SSIServlet 自動處理通配符 (*) 。因此 如果文件路徑開頭為 /*.shtml/,將強制文件由 SSIServlet 處理。如果使用其它文件類型如 .jsp 和 .jhtml, 就能查看未分析的 jsp 和 jhtml 代碼。舉例:http://www.xxx.com/*.shtml/login.jsp
2. 通過強制使用 FileServlet 查看未分析的頁面 :
WebLogic 使用 FileServlet 配置 ConsoleHelp servlet ,在weblogic.properties 文件的以下內容可得知:
# For Console help. Do not modify.
weblogic.httpd.register.ConsoleHelp= weblogic.servlet.FileServlet
weblogic.httpd.initArgs.ConsoleHelp=\defaultFilename=/weblogic/admin/help/NoContent.html
weblogic.allow.execute.weblogic.servlet.ConsoleHelp=everyone
因此如果文件路徑以 /ConsoleHelp/ 開頭將導致 WebLogic 使用 FileServlet,使未分析或編譯的文件作頁面顯示出來,舉例:http://www.xxx.com/ConsoleHelp/login.jsp
解決方案:
不要使用示例中的設置方法設置 FileServlet 。這可能會讓你的 JSP/JHTML 文件的源代碼暴露出來。請查看在線文檔:
http://www.weblogic.com/docs51/admindocs/http.html#file
示例的 registrations 如下:
weblogic.httpd.register.file=weblogic.servlet.FileServlet
weblogic.httpd.initArgs.file=defaultFilename=index.html
weblogic.httpd.defaultServlet=file
有兩種方法可以避免這個問題:
(1)注冊那些文件 servlet 使用隨機用戶名,加大猜測難度。例如使用象這樣注冊文件 servlet 為 12foo34:
weblogic.httpd.register.12foo34=weblogic.servlet.FileServlet
weblogic.httpd.initArgs.12foo34=defaultFilename=index.html
weblogic.httpd.defaultServlet=12foo34
(2)注冊文件 servlet 使用 wild cards 聲明你將使用所有這些文件擴展名作服務。舉例注冊文件 servlet 為 .html 文件服務:
weblogic.httpd.register.*.html=weblogic.servlet.FileServlet
weblogic.httpd.initArgs.*.html=defaultFilename=index.html
weblogic.httpd.defaultServlet=*.html
使用上面的方法重復加入以下類型的文件 *.gif, *.jpg, *.pdf, *.txt, etc.
注意:這些信息是備有證明在 BEA WebLogic Server and Express 說明檔的:http://www.weblogic.com/docs51/admindocs/lockdown.html
另:請留意新版本並升級吧。