WEB中間件漏洞

寫在前面

  下午的一個電話面試讓我措手不及,壓根就沒準備。不過面試官很好,引導我回答問題,也瞭解很多了知識,但自己不爭氣,給了他一種似懂非懂的感覺,估計是涼了。。。

 

WEB常見中間件

  一開始我聽到這個我人傻掉,啥是中間件,經過面試官引導才知道就是Tomcat、Weblogic、Jboss這些東西,我們經常管web中間件叫做web服務器或者web容器

  中間件是提供系統軟件和應用軟件之間連接的軟件,以便於軟件各部件之間的溝通。中間件處在操作系統和更高一級應用程序之間。他充當的功能是:將應用程序運行環境與操作系統隔離,從而實現應用程序開發者不必爲更多系統問題憂慮,而直接關注該應用程序在解決問題上的能力 。容器就是中間件的一種。

  也就是說,關於中間件,我們可以理解爲:是一類能夠爲一種或多種應用程序合作互通、資源共享,同時還能夠爲該應用程序提供相關的服務的軟件。(注意:中間件是一類軟件的總稱,不是單獨的一個軟件)

  web服務器:IIS、Apache、Nginx、Tomcat、Jboss、Jetty、Weblogic、Webshere、Glasshfish、Lighttpd等
  web中間件:Tomcat、Jboss、Jetty、Weblogic、Webshere、Glasshfish等
  web容器:IIS(asp容器)、Tomcat(servlet容器)、Jboss(EJB容器)
  所以應該是  web服務器>web中間件>web容器

 

WEB常見中間件漏洞

一、IIS中間組件:

  1、PUT漏洞   

    IIS Server 在 Web 服務擴展中開啓了 WebDAV ,配置了可以寫入的權限,造成任意文件上傳。版本: IIS6.0

    1)關閉WebDAV 和寫權限

  2、短文件名猜解

    IIS的短文件名機制,可以暴力猜解短文件名,訪問構造的某個存在的短文件名,會返回404,訪問構造的某個不存在的短文件名,返回400。

    1)升級.net framework

    2)修改註冊表禁用短文件名功能

  3、遠程代碼執行

    在IIS6.0處理PROPFIND指令的時候,由於對url的長度沒有進行有效的長度控制和檢查,導致執行memcpy對虛擬路徑進行構造的時候,引發棧溢出,從而導致遠程代碼執行。

    1)關閉 WebDAV 服務

    2) 使用相關防護設備

  4、解析漏洞

    IIS 6.0 在處理含有特殊符號的文件路徑時會出現邏輯錯誤,從而造成文件解析漏洞。

      第一種是新建一個名爲 “test.asp” 的目錄,該目錄中的任何文件都被 IIS 當作 asp 程序執行(特殊符號是 “/” )

      第二種是上傳名爲 “test.asp;.jpg” 的文件,雖然該文件真正的後綴名是 “.jpg”, 但由於含有特殊符號 “;” ,仍會被 IIS 當做 asp 程序執行

    IIS7.5 文件解析漏洞

      若有文件 test.jpg ,訪問時在其後加 /.php ,便可以把 “test.jpg/.php” 交給 php , php 修理文件路徑 “test.jpg/.php” 得到 ”test.jpg” ,該文件存在,便把該文件作爲 php 程序執行了

    1)對新建目錄文件名進行過濾,不允許新建包含‘.’的文件

    2)曲線網站後臺新建目錄的功能,不允許新建目錄

    3)限制上傳的腳本執行權限,不允許執行腳本

 

 

二、Apache中間組件:

  1、解析漏洞

    Apache默認一個文件可以有多個以點分隔的後綴,當右邊的後綴無法識別(不在mime.tyoes內),則繼續向左識別

    1)將AddHandler application/x-httpd-php .php的配置文件刪除。

  2、目錄遍歷

    由於配置錯誤導致的目錄遍歷

    1)修改apache配置文件httpd.conf,找到Options+Indexes+FollowSymLinks +ExecCGI並修改成 Options-Indexes+FollowSymLinks +ExecCGI 並保存;

 

三、Nginx中間組件:

  1、文件解析

    對任意文件名,在後面添加/任意文件名.php的解析漏洞,比如原本文件名是test.jpg,可以添加test.jpg/x.php進行解析攻擊。

  2、目錄遍歷

    Nginx的目錄遍歷與Apache一樣,屬於配置方面的問題,錯誤的配置可到導致目錄遍歷與源碼泄露

    1)將/etc/nginx/sites-avaliable/default裏的autoindex on改爲autoindex off

  3、CRLF注入

  4、目錄穿越

    Nginx反向代理,靜態文件存儲在/home/下,而訪問時需要在url中輸入files,配置文件中/files沒有用/閉合,導致可以穿越至上層目錄。

    1)Nginx的配置文件/etc/nginx/conf.d/error2.conf的/files使用/閉合。

四、Tomcat中間組件:

  1、遠程代碼執行

    Tomcat 運行在Windows 主機上,且啓用了 HTTP PUT 請求方法,可通過構造的攻擊請求向服務器上傳包含任意代碼的 JSP 文件,造成任意代碼執行。影響版本: Apache Tomcat 7.0.0 – 7.0.81

    1)檢測當前版本是否在影響範圍內,並禁用PUT方法。

    2)更新並升級至最新版。

  2、war後門文件部署

    Tomcat 支持在後臺部署war文件,可以直接將webshell部署到web目錄下。

    若後臺管理頁面存在弱口令,則可以通過爆破獲取密碼。

    1)在系統上以低權限運行Tomcat應用程序

五、jBoss中間組件:

  1、反序列化漏洞

    Java序列化,簡而言之就是把java對象轉化爲字節序列的過程。而反序列話則是再把字節序列恢復爲java對象的過程,然而就在這一轉一變得過程中,程序員的過濾不嚴格,就可以導致惡意構造的代碼的實現。

    1)不需要http-invoker.sar 組件的用戶可直接刪除此組件;

    2)用於對 httpinvoker 組件進行訪問控制。

  2、war後門文件部署

    jBoss後臺管理頁面存在弱口令,通過爆破獲得賬號密碼。登陸後臺上傳包含後門的war包。

六、WebLogic中間組件:

  1、反序列化漏洞

    Java序列化,簡而言之就是把java對象轉化爲字節序列的過程。而反序列話則是再把字節序列恢復爲java對象的過程,然而就在這一轉一變得過程中,程序員的過濾不嚴格,就可以導致惡意構造的代碼的實現。

  2、SSRF

    Weblogic 中存在一個SSRF漏洞,利用該漏洞可以發送任意HTTP請求,進而攻擊內網中redis、fastcgi等脆弱組件。

    方法一:以修復的直接方法是將SearchPublicRegistries.jsp直接刪除就好了;

    方法二:1)刪除uddiexplorer文件夾   2)限制uddiexplorer應用只能內網訪問

    方法三:(常用)

    Weblogic服務端請求僞造漏洞出現在uddi組件(所以安裝Weblogic時如果沒有選擇uddi組件那麼就不會有該漏洞),更準確地說是uudi包實現包uddiexplorer.war下的SearchPublicRegistries.jsp。方法二採用的是改後輟的方式,修復步驟如下:

    1)將weblogic安裝目錄下的wlserver_10.3/server/lib/uddiexplorer.war做好備份

    2)將weblogic安裝目錄下的server/lib/uddiexplorer.war下載

    3)用winrar等工具打開uddiexplorer.war

    4)將其下的SearchPublicRegistries.jsp重命名爲SearchPublicRegistries.jspx

    5)保存後上傳回服務端替換原先的uddiexplorer.war

    6)對於多臺主機組成的集羣,針對每臺主機都要做這樣的操作

    7)由於每個server的tmp目錄下都有緩存所以修改後要徹底重啓weblogic(即停應用–停server–停控制檯–啓控制檯–啓server–啓應用)

  3、任意文件上傳

    通過訪問config.do配置頁面,先更改Work Home工作目錄,用有效的已部署的Web應用目錄替換默認的存儲JKS Keystores文件的目錄,之後使用”添加Keystore設置”的功能,可上傳惡意的JSP腳本文件。  

    方案1:使用Oracle官方通告中的補丁鏈接:http://www.oracle.com/technetwork/security-advisory/cpujul2018-4258247.html;https://support.oracle.com/rs?type=doc&id=2394520.1

    方案2:

    1)進入Weblogic Server管理控制檯;

    2)domain設置中,啓用”生產模式”。

  4、war後門文件部署

    由於WebLogic後臺存在弱口令,可直接登陸後臺上傳包含後門的war包。

    1)防火牆設置端口過濾,也可以設置只允許訪問後臺的IP列表,避免後臺弱口令。

 

七、其它中間件相關漏洞

  1、FastCGI未授權訪問、任意命令執行

    服務端使用fastcgi協議並對外網開放9000端口,可以構造fastcgi協議包內容,實現未授權訪問服務端.php文件以及執行任意命令。

    1)更改默認端口

  2、PHP CGI遠程代碼執行

    在apache調用php解釋器解釋.php文件時,會將url參數傳我給php解釋器,如果在url後加傳命令行開關(例如-s、-d 、-c或-dauto_prepend_file%3d/etc/passwd+-n)等參數時,會導致源代碼泄露和任意代碼執行。此漏洞影響php-5.3.12以前的版本,mod方式、fpm方式不受影響。

    1)升級php版本;(php-5.3.12以上版本);

    2)在apache上做文章,開啓url過濾,把危險的命令行參數給過濾掉,由於這種方法修補比較簡單,採用比較多吧。

    具體做法:

    修改http.conf文件,找到<Directory/>增加以下三行

    RewriteEngine on

    RewriteCond %{QUERY_STRING} ^(%2d|-)[^=]+$ [NC]

    RewriteRule ^(.*) $1? [L]

    重啓一下apache即可,但是要考慮到,相當於每次request就要進行一次url過濾,如果訪問量大的話,可能會增加apache的負擔。

    3)打上php補丁。補丁下載地址:https://eindbazen.net/2012/05/php-cgi-advisory-cve-2012-1823/

 

參考鏈接

  https://www.jianshu.com/p/1e82b7a18866

  https://www.jianshu.com/p/b8d95de87344

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章