天天看點

JSP漏洞大觀

綜述:伺服器漏洞是安全問題的起源,黑客對網站的攻擊也大多是從查找對方的漏洞開始的。是以隻有了解自身的漏洞,網站管理人員才能采取相應的對策,阻止外來的攻擊。下面介紹一下一些伺服器(包括Web伺服器和JSP伺服器)的常見漏洞。 

  Apache洩露重寫的任意檔案漏洞是怎麼回事? 

  在Apache1.2以及以後的版本中存在一個mod_rewrite子產品,它用來指定特殊URLS在網絡伺服器檔案系統上所映射的絕對路徑。如果傳送一個包含正确表達參數的重寫規則,攻擊者就可以檢視目标主機上的任意檔案。 

  下面舉例說明重寫規則指令(其中第一行隻有是包含漏洞的): 

  RewriteRule /test/(.*) /usr/local/data/test-stuff/$1

  RewriteRule /more-icons/(.*) /icons/$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)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 請求時會暴露網站上網頁的全路徑。 

  舉例:

  結果顯示:

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 下的所有檔案:

  受影響的系統:Allaire JRun 3.0 

  解決方案:下載下傳并安裝更新檔: 

Allaire patch jr233p_ASB00_28_29

<a href="http://download.allaire.com/jrun/jr233p_ASB00_28_29.zip" target="_blank">[url]http://download.allaire.com/jrun/jr233p_ASB00_28_29.zip[/url]</a>

Windows 95/98/NT/2000 and Windows NT Alpha

Allaire patch jr233p_ASB00_28_29tar

<a href="http://download.allaire.com/jrun/jr233p_ASB00_28_29.tar.gz" target="_blank">[url]http://download.allaire.com/jrun/jr233p_ASB00_28_29.tar.gz[/url]</a>

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 : 

  注意:假設JRun在主機" jrun "上運作,端口8000。 

  受影響的系統:Allaire JRun 2.3.x 

Allaire JRUN 2.3遠端執行任意指令漏洞 

  Allaire 的 JRUN 伺服器 2.3上存在一個安全漏洞,允許遠端使用者把在 WEB 伺服器上的任意檔案作為JSP代碼編譯/執行。   如果URL請求的目标檔案使用了字首"/servlet/",則JSP解釋執行功能被激活。這時在使用者請求的目标檔案路徑中使用"../",就有可能通路到 WEB 伺服器上根目錄以外的檔案。在目标主機上利用該漏洞請求使用者輸入産生的一個檔案,将嚴重威脅到目标主機系統的安全。 

  例如: 

  JRun 2.3.x 範例檔案暴露站點安全資訊 

  JRun 2.3.x 在 JRUN_HOME/servlets 目錄下有一些 servlet 範例檔案,這個目錄是 JRun 2.3.x 用于加載和執行 servlets 檔案。所有擴充名為 ".Java" 或 "class" 的檔案必須被删除,這是因為這些檔案會暴露站點的安全資訊。例如:

  1)安裝 2.3.3 service pack

  2)從伺服器上删除所有的說明文檔、示範編碼、範例和教材,包括安裝 JRun   2.3.x 時存放于 JRUN_HOME/servlets 目錄和JRUN_HOME/jsm-default/services/jws/htdocs 目錄裡的文檔。 

  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 的所有版本 

  舉例: 

  解決方案:下載下傳并安裝更新檔

  IBM WebSphere Application Server 暴露JSP檔案内容

  Java Server Pages (JSP)類型的檔案是以'.jsp'擴充名在WebSphere Application Serve 上注冊,WebSphere 是檔案名大小寫敏感的,'.jsp'和'.JSP'是不同類型的檔案擴充名。如果送出有'.JSP'的連結給WebSphere,而WebSphere找不到'.JSP'就會以預設的'.text'檔案類型來響應請求。因為在NT系統中大小寫檔案名是非敏感的,是以被請求的檔案會以文本的形式送出。

  解決方案:點選此處下載下傳更新檔 

  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, 那将會使網頁未加分析和編譯而直接顯示。 

  論證: 

  以下是使用方法: 

  1. 通過強制使用 SSIServlet 檢視未分析的頁面 :

  伺服器站點通過 WebLogic 中的 SSIServlet 處理頁面,它在weblogic.properties 檔案中注冊以下資訊:weblogic.httpd.register.*.shtml= weblogic.servlet.ServerSideIncludeServlet 

  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 

  解決方案:

  不要使用示例中的設定方法設定 FileServlet 。這可能會讓你的 JSP/JHTML 檔案的源代碼暴露出來。請檢視線上文檔: 

  示例的 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. 

  另:請留意新版本并更新吧。

本文轉自loveme2351CTO部落格,原文連結: http://blog.51cto.com/loveme23/8519,如需轉載請自行聯系原作者