VulnHub 靶场渗透测试报告:从信息收集到权限提升
一、项目背景
本文以 VulnHub 靶场为授权测试对象,按照正式渗透测试报告的结构,记录从信息收集、服务识别、漏洞验证、获取初始权限到权限提升的完整流程。
相比普通题解,报告更关注测试过程、风险说明、影响范围和修复建议。这样的写法更接近安全服务、渗透测试岗位中的实际交付内容。
二、测试范围
| 项目 | 内容 |
|---|---|
| 测试对象 | VulnHub 靶场主机 |
| 测试类型 | 内网授权渗透测试 |
| 攻击机 | Kali Linux |
| 测试目标 | 发现目标主机风险并获取 root 权限 |
| 约束说明 | 仅在本地靶场/授权环境中测试 |
本文中涉及的 IP 地址均为本地虚拟机环境地址,不针对真实公网目标。
三、信息收集
1. 主机发现
首先使用 arp-scan 在当前网段中发现存活主机:
1 | arp-scan -l |
发现目标主机后,记录其 IP 地址,并确认攻击机与靶机处于同一 NAT 网络环境。
2. 端口扫描
使用 nmap 对目标进行全端口扫描和服务识别:
1 | nmap -sS -sV -sC -p- 192.168.207.133 -oN nmap_full_scan |
扫描结果显示目标开放了以下关键端口:
| 端口 | 服务 | 风险关注点 |
|---|---|---|
| 22 | SSH | 可用于后续远程登录 |
| 80 | HTTP | Web 信息泄露、目录探测 |
| 139 | NetBIOS/SMB | 文件共享枚举 |
| 445 | SMB | 匿名访问、敏感文件泄露 |
从端口分布来看,目标主机的突破口可能不只在 Web 服务,SMB 文件共享同样值得重点关注。
四、漏洞验证过程
1. Web 服务探测
访问 80 端口后,页面内容较少,没有直接暴露后台入口或可利用功能点。
继续进行目录扫描:
1 | dirsearch -u http://192.168.207.133 |
目录扫描未发现高价值后台路径,因此将重点转向 SMB 服务。
2. SMB 共享枚举
使用 smbmap 枚举目标 SMB 共享:
1 | smbmap -H 192.168.207.133 |
发现存在可读共享目录 wave。继续使用 smbclient 尝试匿名访问:
1 | smbclient //192.168.207.133/wave |
进入共享目录后发现敏感文件:
1 | FLAG1.txt |
使用 get 命令下载文件到本地:
1 | get FLAG1.txt |
3. 敏感信息提取
查看下载文件内容,发现其中包含一段 Base64 编码字符串。解码命令如下:
1 | echo "RmxhZzF7V2VsY29tZV9UMF9USEUtVzNTVC1XMUxELUIwcmRlcn0KdXNlcjp3YXZleApwYXNzd29yZDpkb29yK29wZW4K" | base64 --decode |
解码后得到有效凭据:
1 | user: wavex |
该问题属于典型的敏感信息泄露:SMB 共享目录权限配置不当,导致认证凭据被未授权读取。
五、获取初始权限
使用上一步获取到的账号密码尝试 SSH 登录:
1 | ssh wavex@192.168.207.133 |
登录成功后,获得普通用户 wavex 权限。此时已经完成从远程信息收集到获取初始 Shell 的过程。
当前权限较低,需要进一步枚举系统信息并寻找权限提升路径。
六、权限提升分析
1. sudo 权限检查
登录后首先检查当前用户可执行的 sudo 命令:
1 | sudo -l |
如果目标用户存在免密或弱限制 sudo 权限,可能直接形成提权路径。
2. SUID 文件检查
继续检查系统中的 SUID 程序:
1 | find / -perm -u=s -type f 2>/dev/null |
该命令用于发现以文件所有者权限执行的程序。若某些可利用程序具有 SUID root 权限,可能导致本地提权。
3. 可写文件与敏感脚本排查
进一步检查当前用户可读写的异常文件:
1 | find / -perm 0777 -type f 2>/dev/null |
在目标环境中发现敏感脚本路径:
1 | /usr/share/av/westsidesecret/ififoregt.sh |
查看脚本内容:
1 | cat /usr/share/av/westsidesecret/ififoregt.sh |
脚本中泄露了新的账号凭据。使用该凭据切换用户后,再次检查 sudo 权限:
1 | sudo -l |
发现该用户可以通过 sudo 执行 /bin/bash,因此可直接提升到 root 权限:
1 | sudo /bin/bash |
执行后获得 root Shell,完成权限提升。
七、风险评级
| 风险项 | 风险等级 | 说明 |
|---|---|---|
| SMB 匿名访问 | 高危 | 共享目录可被未授权读取 |
| 敏感凭据泄露 | 高危 | 文件中包含可登录系统的账号密码 |
| 系统脚本泄露凭据 | 高危 | 普通用户可读取敏感脚本并获取其他账号 |
| sudo 配置不当 | 高危 | 用户可通过 sudo 执行 bash 获取 root 权限 |
| Web 暴露面 | 低危 | Web 服务未发现直接利用点,但仍需加固 |
本次测试的核心风险链路为:
1 | SMB 匿名访问 -> 敏感文件泄露 -> SSH 登录 -> 读取敏感脚本 -> sudo 配置不当 -> root 权限 |
八、修复建议
1. SMB 服务加固
- 禁止匿名访问 SMB 共享。
- 对共享目录设置最小权限。
- 删除共享目录中的账号密码、Flag、备份文件等敏感内容。
- 定期检查 SMB 暴露的共享目录和访问权限。
2. 凭据安全
- 不在脚本、文本文件、共享目录中明文保存密码。
- 对历史泄露账号立即修改密码。
- 使用强密码策略,避免弱口令和可猜测密码。
- 对不同服务使用不同密码,降低横向移动风险。
3. sudo 权限收敛
- 使用
visudo检查 sudo 配置。 - 避免允许普通用户直接执行
/bin/bash、/bin/sh、vim、less等可逃逸程序。 - 仅授予业务必须的命令权限。
- 对 sudo 操作开启日志审计。
4. 系统侧加固
- 定期排查全局可写文件。
- 定期检查 SUID 文件,移除不必要的 SUID 权限。
- 检查
/home、/tmp、/var等目录中的异常脚本。 - 保留 SSH 登录日志,便于溯源分析。
九、复测结论
按照修复建议处理后,应重新验证以下内容:
- SMB 共享是否仍允许匿名访问。
- 敏感文件是否已删除或迁移到安全位置。
- 泄露账号是否已修改密码或禁用。
- 普通用户是否仍可通过 sudo 执行高危命令。
- 是否还能通过原攻击路径获取 root 权限。
若以上路径均无法复现,则本次漏洞链路修复有效。
十、总结
本次靶场渗透测试展示了一条比较完整的内网渗透链路:先通过端口扫描识别 SMB 服务,再利用共享目录权限配置不当读取敏感文件,随后使用泄露凭据登录 SSH,最后通过敏感脚本和 sudo 配置问题完成提权。
从实战角度看,这类问题的危害不在于单个漏洞多复杂,而在于多个“配置不严谨”的点被串联后,会形成完整入侵路径。因此在安全服务工作中,除了验证漏洞本身,更要写清楚攻击链、风险影响和可落地的修复建议。