小白分析漏洞之Microsoft Edge Chakra OP_NewScObjArray Type Confusion 远程代码执行

本文介绍了Microsoft Edge Chakra引擎中的OP_NewScObjArray类型混淆漏洞,详细分析了漏洞环境准备、异常函数定位、静态及动态分析,以及源码审查过程,揭示了可能导致远程代码执行的原因。
摘要由CSDN通过智能技术生成

参考: https://paper.seebug.org/692/#1
原文作者的分析环境是:Windows 10 x64 + Microsoft Edge 42.17074.1002.0
我的分析环境是:Windows 10 X86_1803_march + Microsoft Edge 42.17134.1.0
poc地址 : https://github.com/bo13oy/ChakraCore

1. 环境准备

1.1 验证环境

创建好虚拟机,拷贝好poc.html 与 poc.js 。 首先用edge 打开 poc.html ,看一看是否会发生异常(不停的刷新,最后出现“此页无法加载”)。出现异常说明我们的环境是正确的,可以正常触发漏洞。

1.2 为edge 开启页堆:

(powershell 下执行)

PS C:\Users\Mr.wang> gflags.exe -I MicrosoftEdgeCP.exe +hpa +ust

1.3 启动调试

由于edge 是uwp 包, 不能使用一般的附加形式进行调试,需要在命令行下 windbg 使用参数启动调试。

可以看我的另外一篇博客: https://blog.csdn.net/m0_37921080/article/details/83097979

调用方式如下:

windbg.exe -plmPackage <PLMPackageName> -plmApp <ApplicationId> [<parameters>]

主要是第一个参数 Package fullname 的获得。下面是使用powershell 命令的方法获取packagefullname, 即:Microsoft.MicrosoftEdge_42.17134.1.0_neutral__8wekyb3d8bbwe

PS C:\Users\Mr.wang> Get-AppxPackage *MicrosoftEdge

Name              : Microsoft.MicrosoftEdge
Publisher         : CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US
Architecture      : Neutral
ResourceId        :
Version           : 42.17134.1.0
PackageFullName   : Microsoft.MicrosoftEdge_42.17134.1.0_neutral__8wekyb3d8bbwe
InstallLocation   : C:\Windows\SystemApps\Microsoft.MicrosoftEdge_8wekyb3d8bbwe
IsFramework       : False
PackageFamilyName : Microsoft.MicrosoftEdge_8wekyb3d8bbwe
PublisherId       : 8wekyb3d8bbwe
IsResourcePackage : False
IsBundle          : False
IsDevelopmentMode : False
IsPartiallyStaged : False
SignatureKind     : System
Status            : Ok

第二个参数Appid 是:MicrosoftEdge
第三个参数是edge 要打开的url, 即我们的poc.html

最终通过下面的命令调用 windbg 进行调试:

PS C:\Users\Mr.wang> windbg -plmPackage  Microsoft.MicrosoftEdge_42.17134.1.0_neutral__8wekyb3d8bbwe -plmApp MicrosoftEd
ge  file:///C:/Users/Mr.wang/Desktop/ChakraCore-master/poc/poc.html

2. 开始分析

2.1 定位到异常函数

输入g, 执行几次之后,捕捉到下面的异常:

(1a50.1a40): C++ EH exception - code e06d7363 (first chance)
(1a50.1a40): C++ EH exception - code e06d7363 (first chance)
(1a50.1a40): C++ EH exception - code e06d7363 (first chance)
(1a50.1a40): Access violation - code c0000005 (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
eax=1567e064 ebx=0000fefa ecx=18010130 edx=5aa91858 esi=000fefa0 edi=1567e010
eip=5a7f9b1e esp=0a1bc580 ebp=0a1bc5a4 iopl=0         nv up ei pl nz ac pe nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00010216
chakra!Js::DynamicProfileInfo::RecordCallSiteInfo+0x3e:
5a7f9b1e 66837c060200    cmp     word ptr [esi+eax+2],0   ds:0023:1577d006=????

查看一下栈调用历史:

1:060> kb
 # ChildEBP RetAddr  Args to Child              
00 0a1bc5a4 5a62f1a5 18010130 0000fefa 5aa91858 chakra!Js::DynamicProfileInfo::RecordCallSiteInfo+0x3e
01 0a1bc5e8 5a947097 0000fefa 000009e9 01000002 chakra!Js::ProfilingHelpers::ProfiledNewScObjArray+0x83
02 0a1bc610 5a85089f 18675c75 0a1bc720 18010130 chakra!Js::InterpreterStackFrame::OP_NewScObjArray_Impl<Js::OpLayoutT_CallI<Js::Layout
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值