20181330-王茜-CVE-2019-0803提权漏洞复现
CVE编号:2019-0803
影响版本:Windows7
代码链接:https://github.com/ExpLife0011/CVE-2019-0803
Step1:下载代码
Step2:使用vscode编译运行后,即可达到system权限
权限为administrator
Step3:运行生成的文件
将生成的exe文件粘贴到win7虚拟机里
在运行前,可以输入 whoami 查看当前权限
如下图所示,当前为administrator用户。
打开cmd,输入 pos_test.exe 运行
Step4:提权成功!
之后,在命令行中输入 whoami 查看权限
可以看到,当前权限为system。
如果不成功多运行几次就可以啦!
漏洞成因:
DDE通信时,client向server请求数据后,sever返回数据时,首先会调用用户层函数_clientCopyDDEIn1(usr32.dll中),该函数是将一些数据填充至tagINTDDEINFO结构,然后再调用hmgSetOwner函数(win32k.sys中),该函数会将tagINTDDEINFO中的成员hIndirect(GDI句柄)返回给client。
因此,利用思路是,先新建一个A进程并创建得到一个对象句柄X,然后修改用户层函数_clientCopyDDEIn1,将tagINTDDEINFO的成员hIndirect修改为X,这样返回给client的对象就是一个外部对象X。
Client结束后会释放X,然后再用事先构造好的Y占用该内存区域,那么A进程可以用控制X的函数(此处为SetDIBColorTable函数)修改Y。
UAF漏洞的利用,雷同double-free漏洞(之前分析的cve-2018-8639),这里也运用了简单的fengshui布局。此外,采用了任意地址读写技术,利用了tagWND结构中cbWNDExtra成员、strName成员、成员spwndParent。
- DDE通信:DDE通讯协议是一种动态数据交换协议,在Microsoft Windows运行环境下客户机应用程序向当前所激活的服务器应用程序发送一条消息请求信息,服务器应用程序根据该信息作出应答,从而实现两个程序之间的数据交换。
- UAF (Use After Free)漏洞是一种内存破坏漏洞。