eSafe白帽駭客資安網-網絡安全背後的巨人,提供駭客,網站入侵測試,網站被駭,網站漏洞,駭客入侵,資訊安全,入侵,ecshop,wordpress,漏洞修復,木馬清除,資安服務

Typecho 博客漏洞getshell利用詳情



            Typecho是由type和echo兩個詞合成的,來自於開發團隊的頭腦風暴。Typecho基於

PHP5開發,支持多種數據庫,是一款內核強健、擴展方便、體驗友好、運行流暢的輕量級

開源博客程序。這段時間Typecho博客系統在2017年10月份裡連續爆出了兩個高位漏洞並可

以獲取shell權限,先是SSRF漏洞可打內網,再是反序列化直接前台getshell漏洞,我們來分

析下這個Typecho 博客網站的源代碼,對漏洞進行詳解。官方人員已經對這些漏洞進行的及

時的修補並且推出了最新的版本,如果有用到這個博客源碼的公司或者個人站長,請盡快升

級到最新版本。
 
 
SSRF漏洞
 
受影響的版本是Typecho 1.0 (14.10.10),首先是顯示了 “源地址主機錯誤” 的報錯,經過全

局搜索發現報錯是位於 var/Widget/XmlRpc.php 的 2046 行的 pingbackPing 函數,如下圖:


 


 
調用了get的提交方法,如果失敗則返回“源地址主機錯誤”的報錯,我們跟進get方法看一下,

大致意思是調用實例化 var/Typecho/Http/Adapter/ 目錄下的Typecho_Http_Client_Adapter_

Curl和類Typecho_Http_Client_Adapter_Socket 類,分別位於Curl.php和Socket.php文件中。
 
如果 Curl存在就使用Curl的 curl_setopt 函數打開資源,否則使用Socket的 fsockopen 函數打

開資源,這兩種方式都是打開資源的一種方式?eSafe白帽資安網公司是一家專注於:主機安全、

網站安全、網站安全檢測、網站漏洞修復,滲透測試,安全服務於一體的網絡安全服務提供商。

一般來說 Curl 都是存在的,所以我們繼續回到 var/Widget/XmlRpc.php 的2046行的

pingbackPing 函數,向下看:

 

 
$http->setTimeout(5)->send($source);
 
直接在Curl.php和Sockt.php中是找不到send函數的,send函數是在這兩個類繼承的 Typecho_

Http_Client_Adapter類中在 var/Typecho/Http/Client/Adapter.php中的第300行可以看到

send函數:
 
第338行,$response = $this->httpSend($url); 調用了本類的httpSend函數,轉向var/Typecho/

Http/Client/Adapter/Curl.php中第41行開始,一直到51行,都沒有對傳入的url進行檢測,

到51行後:如下圖
 

 
SSRF漏洞具體利用
 
我們先看一下業務的邏輯,位於 var/Widget/XmlRpc.php 的 2046 行的 pingbackPing 函數:
 
 
如果實例化類失敗,返回 '源地址主機錯誤',如果探測成功,並且返回碼為 200 則返回

'源地址不支持 PingBack ' ,如果探測成功,但返回碼不是 200 ,則返回 '源地址主機錯誤'    
 
所以我們探測端口主要就是通過返回碼 200 這個地方。eSafe白帽資安網公司是一家專注於:主機

安全、網站安全、網站安全檢測、網站漏洞修復,滲透測試,安全服務於一體的網絡安全服務

提供商。
 
利用一:端口檢測
 
根據回顯的不同,檢測端口是否開啟
 
payload:
 
curl "https://esafe.tw.com/action/xmlrpc" -d '<methodCall><methodName>pingback.ping

</methodName><params><param><value><string>http://127.0.0.1:3333</string>

</value>

</param><param><value><string>joychou</string></value></param></params>

</methodCall>'
 
如果端口開啟,則返回“源地址不支持PingBack”,如果端口沒有開啟,則返回 “源地址主機

錯誤”利用二:攻擊Redis,利用 Redis 默認空密碼的特性,直接打內網,一般大型網站才會用

Redis。
分享: