PrintNightmare打域控漏洞的一次艰难利用

一、前言

PrintNightmare这个打域控的漏洞利用中遇到很多坑,从dll加载失败,再到权限校验失败一步一步debug深入分析解决。虽然坑多,但是毕竟能够打域。

二、本地测试

通过使用管理员账号测试远程加载dll发现失败了,但是确实发现系统上dll上传了

0

于是再将dll指向本地,发现了如下报错。

1

三、为什么加载dll失败了

然后使用Promonitor进行监控,到底怎么报了其他程序占用dll文件,从而导致文件无法被加载的问题。

问题就出现在这个调用栈,

2

于是windbg进行直接附加

通过u命令反汇编对应的字节码,寻找到上一个call,bp下断点。

u 0x7ffdee15092b-10 0x7ffdee15092b+10

3

打断点捕获到MoveFileExW函数在移动C:WindowsSystem32spooldriversx643x643.dll,

4

https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-movefileexw

然后rax返回0,表示失败了。

5

通过查询资料得知,MoveFileExW移动文件的的要求:

一个文件在打开时使用了 FILE_SHARE_DELETE 标志,MoveFileExW 函数可以移动或重命名该文件,即使文件已经被另一个进程打开。

四、spoolsv.exe如何加载dll的?

通过procmonitor发现在前面确实已经对C:WindowsSystem32spooldriversx643x643.dll进行了CreateFile了,而且重复CreateFile,我们来看下是如何打开文件的?

6

还是同样直接下断点打开

发现CreateFile第三个参数的值为1,也就是dwShareMode为1,是以共享读方式FILE_SHARE_REA

千百度
© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容