免责声明

本漏洞实验讲解仅供学习与研究之用,请在合法合规的前提下进行操作,并严格遵守您所在国家或地区的相关法律法规。

什么是 Basic Penetration 2 CTF?

Basic Penetration 2 是一台面向初学者的 CTF(Capture The Flag)靶机,通常部署在本地虚拟化环境中(VirtualBox / VMware)。

通过该靶机,学习者可以系统性练习:

  • 信息收集(Reconnaissance)
  • 服务枚举(Enumeration)
  • 漏洞利用(Exploitation)
  • 权限提升(Privilege Escalation)

其核心目标并非“入侵系统”,而是培养渗透测试的思维模型与攻击链意识

二、攻击流程概览

信息收集 → 服务枚举 → 初始访问 → 横向移动 → 权限提升 → 获取 Flag

发现目标主机(Netdiscover)

指令: sudo netdiscover

Screenshot 2026-01-12 213920

在上面的截图中,你可以看到我们已经获取到了虚拟机的 IP 地址:192.168.24.141。这就是我们的要攻击的目标机器 IP 地址

请注意:目标主机和攻击者的 IP 地址可能会根据网络配置的不同而有所变化。

在获取目标机器的 IP 地址之后,第一步是查找该机器上开放的端口以及正在运行的服务。为此,我对目标主机执行了一次 Nmap 全端口扫描。Nmap 的扫描结果可以在下方所示的截图中看到。

指令: nmap -sV 192.168.24.141

Screenshot 2026-01-13 120328

在扫描完成后,我们发现目标机器上有 4 个开放端口,如上方截图所示。

我们先从 HTTP 端口 开始进行探测。我在浏览器中打开了目标机器的 IP 地址,但页面只显示了一个 维护中的错误页面。具体情况可以在下方给出的截图中看到。

Screenshot 2026-01-13 115740

由于在首页中没有发现任何有价值的信息可以进一步利用,我决定运行 gobuster 工具(Kali Linux 默认自带)来对目标机器进行目录枚举,以发现可能存在的隐藏目录。

gobuster 命令的输出结果可以在下方的截图中看到。

Screenshot 2026-01-13 115852

Screenshot 2026-01-13 115942

development 目录中启用了 目录列表(Directory Listing) 功能,这一点可以从上方的截图中看到。同时,该目录下还存在两个 .txt 文件。

接下来,让我们读取这个文本文件。

Screenshot 2026-01-13 120007

从这条信息中可以判断,这是一个仍在开发中的服务器。目前尚未部署任何 Web 应用程序,但机器上已经配置了 SMB 服务。我已经在上方的信息中将这一点标注了出来。

现在让我们继续读取另一个名为 “j.txt” 的文本文件。该文件的内容可以在下面的截图中看到。

Screenshot 2026-01-13 120031

通过这条信息可以判断,这是用户 K 留给用户 J 的一条消息,内容是提醒他正在使用一个弱密码,并且该密码很容易被破解。我也已经将这段关键文本高亮标注出来,如上方所示。

目前我们还不知道具体的用户名,但目标机器上 SMB 端口是开放的。因此,接下来我们开始对 SMB 服务进行枚举

在进行 SMB 枚举时,我使用了 enum4linux 工具(Kali Linux 默认自带)。enum4linux 的执行结果可以在下面的截图中看到。

指令: enum4linux 192.168.24.141

Screenshot 2026-01-13 120207

从上述输出结果中,我们发现了 两个用户名。结合之前获得的提示信息,我们可以推断出 用户 “J” 使用的是弱密码。因此,接下来我们对用户 “jan” 发起 暴力破解攻击

在这里,我使用了 Hydra 工具来进行 暴力破解 / 基于字典的攻击。相关的执行过程和结果可以在下方给出的截图中看到。

指令:hydra -l jan -P /usr/wordlists/rockyou.txt 192.168.24.141

Screenshot 2026-01-13 120818

从上方的截图可以看到,我们已经成功获取了用户 “jan” 的密码。已识别出的凭据如下:

  • 用户名 : jan
  • 密码 : armando

接下来,让我们尝试使用这些凭据登录到目标机器。

Screenshot 2026-01-13 120914

从上方的截图可以看到,我们已经成功登录到该应用程序!但是,该用户并不是目标机器上的 root 用户,而要完成这个 CTF,我们需要在目标机器上获取 root 级别的权限

因此,我开始对系统进行进一步的信息枚举,以寻找有助于获取 root 权限 的线索和细节。

Screenshot 2026-01-13 121229

在目标系统上运行了多种命令并花费了一些时间进行枚举后,我发现目标系统中还存在 另一个用户,并且该用户的 SSH 私钥 可以被当前用户访问。至此,我们已经拿到了目标机器上 用户 “kay” 的 SSH 私钥与开放的工具特权

解法一

SSH 私钥相关情况可以在下方的截图中看到。

指令: cat/home/kay/.ssh/id_rsa

Screenshot 2026-01-13 121350

让我们尝试使用这个用户进行登录。

081518_2210_basicpentes17

从上方的截图可以看到,我们尝试使用提供的私钥以用户 “kay” 的身份登录,但系统提示需要输入 私钥口令(passphrase) 才能完成登录。因此,接下来我们需要对该 passphrase 进行暴力破解

不过,在开始暴力破解之前,我们需要先将 SSH 私钥文件转换成另一种格式。具体过程可以在下面的截图中看到。

请注意:要先把 kay 的id_rsa密钥值保存在您的kali 上为 key 再使用 ssh2john key > sshtojohn 指令将它保存为 john格式,再按照截图如下。

f83b1833196fde02dac930570d02e510

从上方的截图可以看到,我们已经成功获取了用户 “jan” 的密码。已识别出的凭据如下:

  • 用户名 : kay
  • 密码 : beeswax

接下来,让我们尝试使用这些凭据登录到目标机器的内网。

Screenshot 2026-01-13 131107

从上方的截图可以看到,我们已经成功以 用户 “kay” 的身份登录到了目标机器。但该用户 仍然不是 root 用户!不过,现在我们已经可以读取 Kay 的文件,而这些文件在之前是无法访问的。

接下来,让我们读取这个文件。

Screenshot 2026-01-13 131251

从上方的截图可以看到,我们又发现了 另一个密码文件。接下来,让我们尝试使用 sudo,并用这个密码来获取 root 权限

密码 : heresareallystrongpasswordthatfollowsthepasswordpolicy$$

Screenshot 2026-01-13 131251

将kay成功提权也顺利的读取了flag .

解法二

工具特权相关情况可以在下方的截图中看到.

指令: find / -perm -4000 2>/dev/null

Screenshot 2026-01-13 131620

从上方的截图可以看到,我们又发现了 vim.basic 编译器有root的权限我们可以合理利用直接查看 kay 目录下的 pass.bak 截图如下。

Screenshot 2026-01-13 131704

接下来,让我们尝试使用 su kay 指令,并用这个密码来获取 root 权限

Screenshot 2026-01-13 131837

从上方的截图可以看到,我们也成功获取了 kay root权限 也可以顺利的读取 flag.txt

Screenshot 2026-01-13 131251

特别解法

1、到靶机开机的初始页面按字母E,进入以下界面

注意:开机的时候要快点按

接下来,让我们拖到下面,将linux后面的 ro xxx(不管后面跟了什么) 都加上rw single init=/bin/bash 截图如下。

然后按 Ctrl+x 重启进入如下界面

再直接以root 的权限直接越过多重障碍直接读取 flag.txt 截图如下。

嘿嘿,防不胜防。

痕迹清理

对于一名出色的测试员,我们必须需要将我们的痕迹来证实模拟真正的骇客攻击。给蓝队一堆堆压力 嘻嘻。

再这里我就不写了期待我博客下次更新。

总结

即使是经验丰富的渗透测试人员,其能力成长也依赖于持续的漏洞练习、场景复现以及对安全技术体系的长期学习,这是技术进阶不可或缺的一部分。