学向勤中得,萤窗万卷书。这篇文章主要讲述使用PetitPotam代替Printerbug相关的知识,希望能为你提供帮助。
0x00 前言Printerbug使得拥有控制域用户/计算机的攻j者可以指定域内的一台服务器,并使其对g击者选择的目标进行身份验证。虽然不是一个微软承认的漏洞,但是跟Net-ntlmV1,非约束委派,NTLM_Relay,命名管道模拟这些手法的结合可以用来域内提权,本地提权,跨域等等利用。
遗憾的是,在PrintNightmare爆发之后,很多企业会选择关闭spoolss服务,使得Printerbug失效。在Printerbug逐渐失效的今天,PetitPotam来了,他也可以指定域内的一台服务器,并使其对g击者选择的目标进行身份验证。而且在低版本(16以下)的情况底下,可以匿名触发。
文章图片
0x01 原理
MS-EFSR
里面有个函数EfsRpcOpenFileRaw(Opnum 0)long EfsRpcOpenFileRaw(
[in] handle_t binding_h,
[out] PEXIMPORT_CONTEXT_HANDLE* hContext,
[in, string] wchar_t* FileName,
[in] long Flags
);
他的作用是打开服务器上的加密对象以进行备份或还原,服务器上的加密对象由
FileName
参数指定,FileName
的类型是UncPath。当指定格式为
\\\\IP\\C$
的时候,lsass.exe服务就会去访问\\\\IP\\pipe\\srvsrv
文章图片
指定域内的一台服务器,并使其对攻j者选择的目标(通过修改FileName里面的IP参数)进行身份验证。
0x02 细节 1、通过lsarpc 触发
在官方文档里面,
MS-EFSR
的调用有\\pipe\\lsarpc
和\\pipe\\efsrpc
两种方法,其中\\pipe\\lsarpc
的服务器接口必须是UUID [c681d488-d850-11d0-8c52-00c04fd90f7e]\\pipe\\efsrpc
的服务器接口必须是UUID [df1941c5-fe89-4e79-bf10-463657acf44d]
\\pipe\\efsrpc
并未对外开放文章图片
文章图片
在PetitPotam的Poc里面有一句注释
possible aussi via efsrpc (en changeant d\'UUID) mais ce named pipe est moins universel et plus rare que lsarpc ;
)
,翻译过来就是也可以通过EFSRPC(通过更改UUID),但这种命名管道的通用性不如lsarpc,而且比LSARPC更罕见
所以PetitPotam直接是采用lsarpc的方式触发。
2、低版本可以匿名触发
【使用PetitPotam代替Printerbug】在08和12的环境,默认在
网络安全:可匿名访问的命名管道
中有三个netlogon
、samr
、lsarpc
。因此在这个环境下是可以匿名触发的文章图片
文章图片
遗憾的是在16以上这个默认就是空了,需要至少一个域内凭据。
文章图片
0x03 利用这篇文章的主题是使用
PetitPotam
代替Printerbug
,因此这个利用同时也是Printerbug
的利用。这里顺便梳理复习下Printerbug
的利用。1、结合 CVE-2019-1040,NTLM_Relay到LDAP
详情见CVE-2019-1040,这里我们可以将触发源从
Printerbug
换成PetitPotam
文章图片
2、Relay到HTTP
不同于LDAP是协商签名的,发起的协议如果是smb就需要修改Flag位,到HTTP的NTLM认证是不签名的。前段时间比较火的ADCS刚好是http接口,又接受ntlm认证,我们可以利用PetitPotam把域控机器用户relay到ADCS里面申请一个域控证书,再用这个证书进行kerberos认证。注意这里如果是域控要指定模板为
DomainController
python3 ntlmrelayx.py -t https://192.168.12.201/Certsrv/certfnsh.asp -smb2support --adcs --template "DomainController"
文章图片
2、结合非约束委派的利用
当一台机器机配置了非约束委派之后,任何用户通过网络认证访问这台主机,配置的非约束委派的机器都能拿到这个用户的TGT票据。
当我们拿到了一台非约束委派的机器,只要诱导别人来访问这台机器就可以拿到那个用户的TGT,在这之前我们一般用printerbug来触发,在这里我们可以用PetitPotamlai来触发。
文章图片
文章图片
域内默认所有域控都是非约束委派,因此这种利用还可用于跨域。
3、结合Net-ntlmV1进行利用
很多企业由于历史原因,会导致LAN身份验证级别配置不当,g击者可以将Net-Ntlm降级为V1
文章图片
我们在Responder里面把Challeng设置为
1122334455667788
,就可以将Net-ntlm V1解密为ntlm hash文章图片
文章图片
文章图片
4、结合命名管道的模拟
在这之前,我们利用了printerbug放出了pipePotato漏洞。详情见pipePotato:一种新型的通用提权漏洞。
在PetitPotam出来的时候,发现这个RPC也会有之前pipePotato的问题。
文章图片
文章图片
文章图片
0x04 引用
- [MS-EFSR]: Encrypting File System Remote (EFSRPC) Protocol–PetitPotam
推荐阅读
- 使用DockerNginx和Jenkins实现前端自动化部署
- LVS&Keepalived—集群负载均衡企业高可用详解
- 保护亿万数据安全,Spring有“声明式事务”绝招
- 分布式ID生成服务,推荐大家搞一个太香了
- 分布式技术带你分析认识缓存穿透/雪崩/击穿
- 如果云是水滴,Kubernetes就是水滴管理平台
- 如何选择最佳的Node.js框架(Express.js,Koa.js或Sails.js)
- 如何在Node.js中递归读取目录
- 如何轻松在Node.js中将事件发射器与ES5和ES6结合使用