CVE-2021–26855漏洞分析及复现

admin 2021年12月14日13:00:50评论380 views字数 2347阅读7分49秒阅读模式

CVE-2021–26855

CVE-2021–26855是⼀个SSRF,只需要能够访问Exchange服务器,攻击者可以不经过任何类型的身份验证来利⽤此漏洞。

相关漏洞在C:Program FilesMicrosoftExchangeServerV15FrontEndHttpProxybin目录下的Microsoft.Exchange.FrontEndHttpProxy.dll

CVE-2021–26855漏洞分析及复现

进入ProxyModule类的OnPostAuthorizeRequest函数,该函数用于对post请求的安全检查,函数中继续调用了该类的OnPostAuthorizeInternal函数。


CVE-2021–26855漏洞分析及复现


OnPostAuthorizeInternal函数中调用SelectHandlerForUnauthenticatedRequest函数,从函数名称上来看该函数作用为:寻找对未验证安全请求的处理方法。


CVE-2021–26855漏洞分析及复现


跟进SelectHandlerForUnauthenticatedRequest函数,发现对不同的ProtocolType,生成了不同的 httpHandler。而这个ProtocolType正是url中的web子目录,比如请求/ecp/n.png,ProtocolType就是ecp。


CVE-2021–26855漏洞分析及复现


ProtocolType为ecp时,如果BEResourceRequestHandler类的CanHandle函数返回值为真,就会使用BEResourceRequestHandler作为处理方法。


CVE-2021–26855漏洞分析及复现


跟进CanHandle方法。


CVE-2021–26855漏洞分析及复现


可以看到如果要返回真,则需要同时让GetBEResouceCookieIsResourceRequest函数同时返回值为真。跟进这两个函数。


CVE-2021–26855漏洞分析及复现


CVE-2021–26855漏洞分析及复现


先看GetBEResouceCookie,该函数要请求cookies中一个BEResource字段的值,实际上就是X-BEResource


CVE-2021–26855漏洞分析及复现


那么在cookies中设置一个X-BEResource字段的值即可。
IsResourceRequest则是需要请求路径以.js,.png等结尾。

这时候回到OnPostAuthorizeInternal函数中,由于BEResourceRequestHandler是继承于ProxyRequstHandler类的,就会执行((ProxyRequestHandler)httpHandler).Run(context),最终在HttpContext.RemapHandler中把该httpHandler设置给this._remapHandler,即是context.Handler。

CVE-2021–26855漏洞分析及复现


CVE-2021–26855漏洞分析及复现


CVE-2021–26855漏洞分析及复现


又调用了Handler.BeginProcessRequest(),此时Handler为BEResourceRequestHandler,该类没有BeginProcessRequest函数,但却继承了ProxyRequestHandler。因此实际上调用的是ProxyRequestHandler.BeginProcessRequest()函数。

BeginProcessRequest函数创建线程调用ProxyRequestHandler.BeginCalculateTargetBackEnd函数。该函数作用是根据Cookie中的X-BEResource字段来判断与生成指向BackEnd的目标url。

CVE-2021–26855漏洞分析及复现


继续跟入,BeginCalculateTargetBackEnd调用ProxyRequestHandler.InternalBeginCalculateTargetBackEnd方法。

InternalBeginCalculateTargetBackEnd调用BEResourceRequestHandler.ResolveAnchorMailbox方法。

CVE-2021–26855漏洞分析及复现


CVE-2021–26855漏洞分析及复现


BEResourceRequestHandler.ResolveAnchorMailbox方法会获取X-BEResource字段。

跟入查看BackEndServer.FromString函数,会发现它依据~符号切割beresourceCookie字符串,前半段作为fqdn,后半段作为version。

CVE-2021–26855漏洞分析及复现


fqdn为:全限定域名。在邮件中例如:[email protected]
而version指的是BackEndServer Version。

fqdn和verison变量将在ProxyRequestHandler.BeginProxyRequest函数中调用的的GetTargetBackEndServerUrl函数进行调用。

CVE-2021–26855漏洞分析及复现


由于BackEndServer.Fqdn是可控的,clientUrlForProxy.Host则是可控的。


CVE-2021–26855漏洞分析及复现


继续看ProxyRequestHandler.BeginProxyRequest后面,ProxyRequestHandler.CreateServerRequest将吧uri发送给后端服务器。


CVE-2021–26855漏洞分析及复现


跟踪ProxyRequestHandler.CreateServerRequest,函数中PrepareServerRequest将进行uri代理请求的身份认证判断。


CVE-2021–26855漏洞分析及复现


通过最后一个else绕过认证,达到一个SSRF漏洞攻击的过程。


CVE-2021–26855漏洞分析及复现


CVE-2021–26855漏洞分析及复现

参考

https://www.praetorian.com/blog/reproducing-proxylogon-exploit/

https://jishuin.proginn.com/p/763bfbd5ac72

https://zhuanlan.zhihu.com/p/357183471


来源:先知社区


CVE-2021–26855漏洞分析及复现

欢迎加群,一起学习!(达到200人,需要加群主才可拉群)

CVE-2021–26855漏洞分析及复现

如果群满了,欢迎加小浪,拉你入群

原文始发于微信公众号(衡阳信安):CVE-2021–26855漏洞分析及复现

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年12月14日13:00:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CVE-2021–26855漏洞分析及复现http://cn-sec.com/archives/676973.html

发表评论

匿名网友 填写信息