一、背景
CVE-2021-1675和CVE-2021-34527两个都是通过加载DLL的方式实现代码执行的windows打印服务中的漏洞,攻击者可以利用该漏洞使用低权限用户加载恶意DLL,实现远程代码执行,在网上已经有不少的复现博客,这里记录下自己复现该漏洞以及RPC相关知识的总结。
二、CVE-2021-1675复现
复现用例参考:
C++用例:https://github.com/hayasec/PrintNightmare
python用例:https://github.com/cube0x0/CVE-2021-1675
该漏洞发生在AddPrinterDriverEx函数,当第三参数传入APD_INSTALL_WARNED_DRIVER = 0x00008000时,会绕过Access的检查,成功调用InternalAddPrinterDriverEx进行DLL加载,该函数可以通过rpc的MS-RPRN协议的RpcAddPrinterDriverEx函数进行调用,MS-RPRN的guid为12345678-1234-ABCD-EF00- 0123456789AB,使用通过管道\pipe\spoolss进行rpc传输,其中例子1使用tcpip协议,例子2使用smb协议进行rpc调用
测试如下:
例子1:
流量如下:
例子2:
使用的SMB3加密流量,无法从流量观察到攻击信息
三、CVE-2021-34527(PrintNightmare)复现
该漏洞的POC使用Mimikatz中的RpcAsyncAddPrinterDriver进行复现,该API同样可以设置APD_INSTALL_WARNED_DRIVER,绕过权限检查,实现恶意DLL加载和代码执行,RpcAsyncAddPrinterDriver为MS-PAR协议的RPC调用,GUID为76F03F96-CDFD-44FC-A22C-64950A001209。
测试用例:mimikatz
其中流量如下:
四、参考:
https://www.freebuf.com/vuls/279876.html
https://422926799.github.io/posts/c257aa46.html