淺談中介軟體漏洞與防護

FLy_鵬程萬里發表於2018-06-23
中介軟體漏洞可以說是最容易被web管理員忽視的漏洞,原因很簡單,因為這並不是應用程式程式碼上存在的漏洞,而是屬於一種應用部署環境的配置不當或者使用不當造成的。那麼從實際情況來看,預防這種漏洞最大的難點,在於中介軟體安全該由誰負責?

    我們在處理應急響應事件時經常遇到這麼一種情況,客戶網站程式碼是外包的,也就是第三方公司負責開發,而部署可能是由客戶內部運維人員負責。暫不說他們對於中介軟體安全的重視程度與瞭解程度,只談發現漏洞後如何處理,便是一團亂。開發商推卸說這並不是程式碼上的問題,他們完全是按照安全開發流程(SDL)走的,所以跟他無關;運維人員就一臉矇蔽了,反駁道:你們當初沒跟我說要配置什麼啊,只是讓我安裝個程式就ok了,我怎麼知道?
 那麼除此之外,開發人員以及運維人員對中介軟體安全意識的缺失也是一個重要因素,有些開發商可能會對自身程式碼進行安全檢測,但只對程式碼部分進行審查是遠遠不夠的。本篇用來記錄總結一些常見的web中介軟體漏洞以及防護問題(記錄的只是一部分,不代表全部),內容一部分摘自道哥的《白帽子講web安全》一書,算做讀書筆記亦或者讀後感。

中介軟體、容器、伺服器傻傻分不清?

  在談中介軟體安全問題時,我覺得有必要先梳理下以上幾種關係以及概念。當初我在接觸這些概念時,腦子裡就是一團漿糊,中介軟體、容器、伺服器、webserver等等概念感覺彼此很相似,但又有所區別。因此在書寫本篇時,我特意翻查了一些資料,試圖梳理清這幾者之間的關係,參考了文章:http://www.voidcn.com/blog/saoraozhe3hao/article/p-2428756.html

基礎概念與作用

這裡只介紹web中介軟體、web伺服器、web容器,因為除了web以外,其概念還可以擴充套件為資料庫等。

web伺服器

web伺服器用於提供http服務,即向客戶端返回資訊,其可以處理HTTP協議,響應針對靜態頁面或圖片的請求,控制頁面跳轉,或者把動態請求委託其它程式(中介軟體程式)等。

web中介軟體

web中介軟體用於提供系統軟體和應用軟體之間的連線,以便於軟體各部件之間的溝通,其可以為一種或多種應用程式提供容器。

web容器

web容器用於給處於其中的應用程式元件(JSP,SERVLET)提供一個環境,是中介軟體的一個組成部分,它實現了對動態語言的解析。比如tomcat可以解析jsp,是因為其內部有一個jsp容器。

所屬的類別

web伺服器:IIS、Apache、nginx、tomcat、weblogic、websphere等。
web中介軟體:apache tomcat、BEA WebLogic、IBM WebSphere等。
web容器:JSP容器、SERVLET容器、ASP容器等。

注意:web中介軟體與web伺服器是有重疊的,原因在於tomcat等web中介軟體也具備web伺服器的功能。

重點分析

  web伺服器只是提供靜態網頁解析(如apache),或者提供跳轉的這麼一種服務。而web中介軟體(其包含web容器)可以解析動態語言,比如tomcat可以解析jsp(因為tomcat含有jsp容器),當然它也可以解析靜態資源,因此它既是web中介軟體也是web伺服器。不過tomcat解析靜態資源的速度不如apache,因此常常兩者結合使用。

Tomcat漏洞與防護

  tomcat是apache的一箇中介軟體軟體,其可以提供jsp或者php的解析服務,為了方便遠端管理與部署,安裝完tomcat以後預設會有一個管理頁面,管理員只需要遠端上傳一個WAR格式的檔案,便可以將內容釋出到網站,這一功能方便了管理員的同時也給黑客開啟了方便之門,除此之外,tomcat還有一些樣本頁面,如果處理不當也會導致安全問題。

tomcat遠端部署漏洞詳情

tomcat管理地址通常是:


預設賬號密碼:

tomcat口令爆破

  在預設不對tomcat做任何配置的時候爆破是無效的,而如果設定了賬號密碼就可以進行爆破。Tomcat的認證比較弱,Base64(使用者名稱:密碼)編碼,請求響應碼如果不是401(未經授權:訪問由於憑據無效被拒絕。)即表示登入成功。登入成功後,可直接上傳war檔案,getshell(當然上傳war檔案需要manager許可權)

getshell過程

首先將我們的.jsp shell檔案打包為war檔案:

登入管理頁面後,選擇上傳war檔案。

截圖中間的目錄便是上傳成功以後的木馬檔案,可以點選瀏覽。

直接在當前目錄下訪問shell.jsp。

Session Example樣本頁面

預設地址:

用來設定任意會話變數,惡意使用可對應用程式造成破壞。

tomcat漏洞防護

  • 升級tomcat版本
  • 刪除遠端部署頁面,或者限定頁面的訪問許可權。
  • 找到/conf/tomcat-users.xml修改使用者名稱密碼以及許可權。
  • 刪除樣例頁面檔案

JBoss漏洞與防護

JBoss這是一個基於JavaEE的應用伺服器,與tomcat類似的是jboss也有遠端部署平臺,但不需要登陸。漏洞利用過程與tomcat類似,因此不再截圖說明。除了遠端部署漏洞外,jboss還存在反序列化漏洞,這裡不再詳述。

JBoss遠端部署漏洞詳情

預設管理後臺地址:

getshell過程  

  訪問管理頁面,檢視jboss配置頁面中的JMX Console,這是JBoss的管理臺程式,進入後找到Jboss.deployment包,該包下有flavor=URL.type=DeploymentSccanner選項。進入部署頁面後便可以上傳war檔案,但與tomcat不同的是它不是本地上傳war檔案,而是從遠端地址下載,因此需要自己準備一個檔案伺服器,用於遠端下載war到目標jboss伺服器上。具體方法是在部署頁面找到”ADDURL”方法,輸入URL地址,點選invoke。除了以上方法外,JMX-Console提供的BSH方法,同樣也可以部署war包。

JBoss漏洞防護

  • 開啟jmx-console密碼認證
  • 刪除jmx-console.war與web-console.war

WebLogic漏洞與防護

weblogic是一個基於JavaEE構架的中介軟體,安裝完weblogic預設會監聽7001埠。漏洞利用過程與tomcat類似,因此不再截圖說明。

Weblogic遠端部署漏洞詳情

預設後臺地址:

賬號密碼:

  • 使用者名稱密碼均為:weblogic
  • 使用者名稱密碼均為:system
  • 使用者名稱密碼均為:portaladmin
  • 使用者名稱密碼均為:guest

getshell過程

成功登陸weblogic後臺後,找到部署按鈕,點選後選擇安裝,然後可以選擇本地上傳war包也可以利用遠端url下載,部署完成後,weblogic會給出檔案地址。

Weblogic漏洞防護

  • 刪除遠端部署頁面

axis2漏洞與防護

axis2也是apache的一個專案,是新一代的SOAP引擎,其存在一個任意命令執行漏洞。(該漏洞來自補天平臺)

axis2命令執行漏洞詳情

預設後臺地址:

預設賬號密碼:admin與axis2
登入後效果如下:

執行系統命令poc

IIS漏洞與防護

  IIS是微軟的一款web伺服器,其配置不當容易產生webdav漏洞。webdav本身是iis的一項擴充套件功能,開啟後可以使用除了get、post以外的一些請求型別,比如put等。但如果配置不當,就會導致檔案上傳漏洞。除了webdav漏洞,近期還爆出了一個遠端命令執行漏洞,CVE-2017-7269。

IIS Webdav漏洞詳情

  當測試一個站點是否存在webdav漏洞時,可以先構造一個OPTIONS請求,若返回200,則檢視返回頭的Allow引數中包含哪些方法(可以請求)。

如果存在PUT方法,則可以嘗試寫入一個txt檔案。

若返回200則說明上傳成功,此時可以手動訪問此檔案,確認是否存在。當然也有可能返回403,這表示此目錄沒有上傳的許可權,可以嘗試上傳到其他目錄。
通過MOVE或COPY方法改檔案字尾名。

IIS漏洞防護

關閉webdav功能

Apache漏洞與防護

  Apache本身也存在一些漏洞,比如slowhttp漏洞,當然官方認為其是apache的特性而不算是一種漏洞,然而事實證明它的危害真的很大。除了slowhttp漏洞以外,其第三方moudle存在很多反序列化或者遠端命令執行的漏洞。

Apache slowhttp漏洞詳情

關於slowhttp漏洞請移步:https://blog.csdn.net/fly_hps/article/details/80782127

HPP漏洞

HPP漏洞是web容器處理http引數時的問題,前面幾款web伺服器都或多或少存在這樣的問題。

比如訪問URL:

此時頁面顯示hello
但如果訪問:

此時頁面顯示nmask,把前面引數的值給覆蓋了,這就是http引數汙染。

利用場景

繞過WAF,如:

因為WAF可能會校驗值的第一個單詞,如果為select則觸發,這樣子可以避免被觸發。

相關文章