U交所(www.payusdt.vip)是使用TRC-20协议的Usdt官方交易所,开放USDT帐号注册、usdt小额交易、usdt线下现金交易、usdt实名不实名交易、usdt场外担保交易的平台。免费提供场外usdt承兑、低价usdt渠道、Usdt提币免手续费、Usdt交易免手续费。U交所开放usdt otc API接口、支付回调等接口。
浏览器渲染历程破绽行使的一样平常思绪是:在行使破绽获得用户态随便地址读写权限后,通过改动DOM、js等工具的虚表函数指针挟制程序执行流,通过ROP链挪用VirtualProtect等Win32 API,修改保留shellcode buffer的内存属性为PAGE_EXECUTE_READWRITE,最终由ROP链跳转到shellcode执行。Windows 8.1后,Microsoft引入了CFG(Control Flow Guard)缓解手艺[1],对间接挪用的函数指针举行验证,从而缓解了通过改动虚表函数指针挟制程序执行流这种行使手艺。
然而匹敌不会因此终止,随后泛起了一些绕过CFG缓解手艺的新方式,好比chakra/jscript9中通过改动栈上函数返回地址挟制程序执行流[2],v8中行使具有可执行内存属性的WebAssembly工具执行shellcode[3]等。 2020年12月,Microsoft在Windows 10 20H1中基于Intel Tiger Lake CPU加入了CET缓解手艺[4],防护了通过改动栈上函数返回地址挟制程序执行流的行使方式。因此,若何在有CET防护的环境中绕过CFG再次成为破绽行使的难题。
在剖析CVE-2021-26411在野行使样本时[5],我们发现了一种行使Windows RPC(Remote Procedure Call)[5] 绕过CFG的新方式,这种方式无需依赖ROP链,通过组织RPC_MESSAGE并挪用rpcrt4!NdrServerCall2即可实现随便代码执行。
1. CVE-2021-26411回首
《IE浏览器在野0day:CVE-2021-26411剖析》[5] 一文中先容了该破绽的根因:removeAttributeNode()触发属性工具nodeValue的valueOf回调,回调时代手动挪用clearAttributes(),导致nodeValue保留的BSTR被提前释放。回调返回后,没有检查nodeValue是否存在继续使用该工具,最终导致UAF。
3月份Windows补丁中该破绽的修复方式为,在CAttrArray::Destroy函数中删除工具操作前增添索引检查:
对于这样一个巨细可控的UAF破绽,行使思绪为:行使两个差异类型的指针(BSTR和Dictionary.items)指向该朴陋内存,通过类型混淆实现指针泄露和指针解引用:
2. RPC原理及行使方式
Windows RPC用来解决漫衍式客户端/服务端函数挪用问题。基于RPC,客户端可以像挪用内陆函数一样挪用服务端函数,RPC基本架构如下图:
客户端/服务端程序将挪用参数/返回值等传给下层Stub函数,Stub函数认真封装数据成NDR(Network Data Representation)花样,最后通过rpcrt4.dll提供的runtime库举行通讯。
下面给出一示例idl:
当客户端挪用add函数后,服务端由rpcrt4.dll接受处置请求并挪用rpcrt4!NdrServerCall2:
rpcrt4!NdrServerCall2只有一个参数PRPC_MESSAGE,其中包罗了客户端挪用的函数索引、传参等主要数据,服务端RPC_MESSAGE结构及主要子数据结构如下图(32位):
如上图所示,RPC_MESSAGE结构中,函数挪用要害的两个变量为Buffer和RpcInterfaceInformation。其中Buffer存放了函数的传参,RpcInterfaceInformation指向RPC_SERVER_INTERFACE结构。RPC_SERVER_INTERFACE结构保留了服务端程序接口信息,其中+0x2c DispatchTable保留了runtime库和Stub函数的接口函数指针,+0x3c InterpreterInfo指向MIDL_SERVER_INFO结构。MIDL_SERVER_INFO结构保留了服务端IDL接口信息,其中DispatchTable保留了服务端提供的远程挪用例程的函数指针数组。
下面以一个实例先容RPC_MESSAGE的结构:
凭证上面给出的idl,当客户端挪用add(0x111, 0x222),服务端程序断在rpcrt4!NdrServerCall2:
可以看到,动态调试的内存dump与RPC_MESSAGE结构剖析一致,其中add函数就存放在MIDL_SERVER_INFO. DispatchTable中。
接下来剖析rpcrt4!NdrServerCall2是若何凭证RPC_MESSAGE挪用add函数的:
rpcrt4!NdrServerCall2内部挪用rpcrt4!NdrStubCall2,rpcrt4!NdrStubCall2内部凭证MIDL_SERVER_INFO. DispatchTable的基地址和RPC_MESSAGE. ProcNum盘算挪用的函数指针地址,将函数指针、函数参数和参数长度传给rpcrt4!Invoke:
rpcrt4!Invoke内部最终挪用服务端例程函数:
,,IPFS官网(www.FLaCoin.vip)是Filecoin致力服务于使用Filecoin存储和检索数据的官方权威平台。IPFS官网实时更新FlaCoin(FIL)行情、当前FlaCoin(FIL)矿池、FlaCoin(FIL)收益数据、各类FlaCoin(FIL)矿机出售信息。并开放FlaCoin(FIL)交易所、IPFS云矿机、IPFS矿机出售、租用、招商等业务。
通过上面的剖析可以知道,在获得随便地址读写权限后,可以组织一个RPC_MESSAGE数据结构,传入想要挪用的函数指针和函数参数,最后手动挪用rpcrt4!NdrServerCall2,即可实现随便函数执行。
接下来需要解决两个问题:
1)若何通过js剧本挪用rpcrt4! NdrServerCall2
2)考察rpcrt4!Invoke最后的服务端例程函数挪用:
可以看到这里是一处间接挪用,且有CFG检查。因此需要思量替换MIDL_SERVER_INFO. DispatchTable函数指针后若何绕过这里的CFG防护。
首先解决问题1: 若何通过js剧本挪用rpcrt4! NdrServerCall2
这里可以复用替换DOM工具虚表函数指针挟制程序执行流的方式,由于rpcrt4!NdrServerCall2是纪录在CFGBitmap里的正当指针,以是替换后依然可以通过CFG检查。样本里通过改动MSHTML!CAttribute::normalize,最终由“xyz.normalize()”挪用rpcrt4!NdrServerCall2。
接着解决问题2: 若何绕过rpcrt4!NdrServerCall2中的CFG防护
样本里的思绪是:
1) 行使伪造的RPC_MESSAGE和rpcrt4!NdrServerCall2挪用VirtualProtect修改RPCRT4!__guard_check_icall_fptr内存属性为PAGE_EXECUTE_READWRITE
2)替换rpcrt4!__guard_check_icall_fptr里保留的指针ntdll!LdrpValidateUserCallTarget为ntdll!KiFastSystemCallRet,从而关闭rpcrt4的CFG检查
3) 恢复RPCRT4!__guard_check_icall_fptr内存属性
解决了问题1,2后,后续即可行使伪造的RPC_MESSAGE实现随便函数的挪用。样本中将shellcode写入msi.dll + 0x5000的位置,最终通过rpcrt4!NdrServerCall2挪用shellcode:
最终完整的行使演示:
3. 一些思索
CVE-2021-26411在野样本中泛起了行使RPC绕过CFG缓解手艺的这一创新方式。这种行使方式无需组织ROP链,直接通过伪造RPC_MESSAGE即可实现随便代码执行,行使简朴且稳固,有理由信托该方式会成为绕过CFG缓解措施的一种新的有用行使手艺。
4. 参考文献
[1] https://docs.microsoft.com/en-us/windows/win32/secbp/control-flow-guard
[2] https://zhuanlan.kanxue.com/article-14133.htm
[3] https://www.anquanke.com/post/id/201951
[4] https://windows-internals.com/cet-on-windows/
[5] https://mp.weixin.qq.com/s?__biz=MzI4NjE2NjgxMQ==&mid=2650250070&idx=1&sn=5906feea0cfe498bffbb961e73f5c285
[6] https://docs.microsoft.com/en-us/windows/win32/rpc/rpc-start-page
usdt官网下载菜宝钱包(www.caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。看得很开心呢
妹妹也看,真不错
IPFS(www.ipfs8.vip)是FiLecoin致力服务于使用FiLecoin存储和检索数据的官方权威平台。IPFS官网实时更新FiLecoin(FIL)行情、当前FiLecoin(FIL)矿池、FiLecoin(FIL)收益数据、各类FiLecoin(FIL)矿机出售信息。并开放FiLecoin(FIL)交易所、IPFS云矿机、IPFS矿机出售、租用、招商等业务。我反正情有独钟了
欢迎进入欧博亚洲官网开户网址(www.aLLbetgame.us),欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。接下来是什么
勾起许多网友的童年回忆多点创意
菜宝钱包(caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。好只一个字,我只说一次
认真抢前排
梁祖尧又邀化妆师Julie主持「心理化妆环节」,拣了Anson Lo、Jer(柳应廷)及Jeremy(字骏杰)介入被放大脸上最不满的瑕玷,Anson Lo被加添大量须根时,浏海被扫开,他即反映大得即时弹开,引来众成员起哄,最终他挑战自己,在镜头前展露额头。节目最后揭晓「幕后投选最大反差大奖」得奖人是Ian,Anson Kong即箍实扮伤心的Alton叫他不要哭,并说:「我舐过野,唔好黑面呀!」不赞了,直接评论