WestWild靶机详解
WestWild靶机详解

WestWild靶机详解

靶机来自vulnhub[easy]

内容
Netbios 服务信息枚举
smb信息枚举
smb共享文件连接

sudo nmap -p- –min-rate 10000 -oA nmap/port 10.10.10.117 // 端口扫描
开放22[ssh],80[http],139[netbios-ns 名字服务],445[ds微软域名服务]端口预测的服务是,由于看到microsoft推测系统可能是windows,又有域名服务,可能是域控制器,但是域控的端口开放又不全,大概率部署的是一个分布式服务,而且通常情况下445端口是smb服务,也可能出现nmap服务探测出错的情况,需要进一步信息探测确定靶机信息

sudo nmap -sU -oA nmap/UDP -p- –min-rate 10000 10.10.10.117 // UDP 端口扫描
开放137 [netbios-ns名字服务]

sudo nmap -sT -sV -O -sC -oA nmap/TCP -p22,80,139,445 10.10.10.117 // TCP端口服务探测,系统探测,常用脚本探测
[可以用 -A 代替 -sV -O -sC]
通过详细扫描可能知道139和445部署的确实是smb相关的服务,操作系统是linux 3.x|4.x

脚本扫描结果

  1. 时钟偏差 (_clock-skew): 目标主机的时钟与扫描主机的时钟存在平均7小时的偏差,这可能会影响某些基于时间的协议和服务。
  2. SMB 安全模式 (smb-security-mode):
    • 使用了 guest 账户进行认证。
    • 认证级别为 user,表明需要用户名和密码进行认证。
    • 支持挑战响应认证机制。
    • 消息签名被禁用,这可能存在安全风险,但这是默认设置。
  3. SMB 操作系统发现 (smb-os-discovery):
    • 操作系统被识别为 Windows 6.1,但实际上是 Samba 4.3.11-Ubuntu。Samba 是一个实现了 SMB/CIFS 协议的软件,通常用于在 Linux 和 UNIX 系统上提供文件和打印服务。
    • 计算机名为 westwild
    • NetBIOS 计算机名为 WESTWILD
    • 没有指定域名和完全限定域名(FQDN)。
    • 系统时间为 2024-04-23T00:07:08+03:00
  4. SMB2 时间 (smb2-time):
    • 日期为 2024-04-22T21:07:08
    • 启动日期未提供(N/A)。
  5. NetBIOS 状态 (_nbstat):
    • NetBIOS 名称为 WESTWILD
    • NetBIOS 用户未知。
    • NetBIOS MAC 地址未知。
  6. SMB2 安全模式 (smb2-security-mode):
    • 消息签名已启用,但不是必需的。

Netbios 服务信息枚举工具

nmblookup -A <IP>
nbtscan <IP>/24
sudo nmap -sU -sV -T4 --script nbstat.nse -p137 -Pn -n <IP>

nbtscan 10.10.10.0/24 // 扫描网段中主机名,以及用户组信息

nmblookup -A 10.10.10.117 //

nmblookup 是一个用于查询 NetBIOS 名称的命令行工具,它是 Samba 套件的一部分。这个工具可以用来查询 NetBIOS 名称到 IP 地址的映射,或者用来列出一个 NetBIOS 名称服务器上的名称。

使用 nmblookup -A 命令时,-A 参数表示执行对等名称解析协议(Peer Name Resolution Protocol, PNRP)的节点状态查询,它可以用来获取一个 NetBIOS 主机的所有 NetBIOS 名称。

例如,命令 nmblookup -A 10.10.10.117 将尝试获取 IP 地址为 10.10.10.117 的主机的所有 NetBIOS 名称。这包括该主机的 NetBIOS 主机名、域名、以及可能的任何工作组名称。

输出结果可能包括如下信息:

  • NetBIOS 主机名(通常与计算机名相同)
  • NetBIOS 域名(如果主机是域成员)
  • NetBIOS 工作组名(如果主机是工作组的一部分)
  • 每个名称的 IP 地址

sudo nmap -sU -sV -T4 --script nbstat.nse -p137 -oA ./nmap/netbios_137_port -Pn -n 10.10.10.117

这个命令包含了多个不同的选项,下面是每个部分的解释:

  1. sudo: 以超级用户(root)的权限运行后面的命令。nmap 通常需要这样的权限才能访问某些网络接口或者使用某些特性。
  2. nmap: 是用于网络探索和安全审计的工具,它可以用于扫描网络,检测哪些设备是活跃的,确定开放的端口以及识别运行在网络设备上的服务。
  3. -sU: 指定 nmap 进行 UDP 端口扫描。-sU 选项告诉 nmap 扫描目标的 UDP 端口。
  4. -sV: 版本检测。这个选项让 nmap 尝试确定运行在开放的端口上的服务的版本信息。
  5. -T4: 指定扫描的时间模板。-T4 代表“适度快速”的扫描,nmap 会尝试在不被发现的情况下快速扫描。
  6. --script nbstat.nse: 运行一个名为 nbstat.nse 的 Nmap 脚本。这个脚本用于列出目标机器上的 NetBIOS 状态,包括计算机名称、登录的用户数、MAC 地址等。
  7. -p137: 指定扫描的端口。137 是 NetBIOS 数据报服务的端口号。
  8. -Pn: 指定 nmap 不要使用主机发现(ping 扫描)。这意味着即使目标主机没有响应,nmap 也会认为它是活跃的,并继续扫描指定的端口。
  9. -n: 不要解析服务名称或主机名。这会加快扫描速度,因为 nmap 不会尝试将 IP 地址转换为主机名。

enum4linux

enum4linux -a 10.10.10.117 > enum4linux/simple_enum

enum4linux 是一款用于枚举 Windows 和 Samba 系统信息的工具,它提供了与 Windows 上的 enum.exe 类似的功能,并且是 smbclientrpclientnetnmblookup 等 Samba 工具的简单封装。以下是 enum4linux 的一些常用参数及其详解:

  1. -U: 获取用户列表。
  2. -M: 获取机器列表。
  3. -S: 获取共享列表。
  4. -P: 获取密码策略信息。
  5. -G: 获取组和成员列表。
  6. -d: 详细模式,适用于 -U 和 -S 选项。
  7. -u: 指定要使用的用户名(默认为空)。
  8. -p: 指定要使用的密码(默认为空)。
  9. -a: 执行所有简单的枚举(-U -S -G -P -r -o -n -i)。如果没有提供其他选项,则默认启用此选项。
  10. -h: 显示帮助信息并退出。
  11. -r: 通过 RID 循环枚举用户(在 Windows 2000 上,如果 RestrictAnonymous 设置为 1)。
  12. -R: 指定 RID 范围进行枚举(默认:500-550,1000-1050,隐含 -r)。
  13. -K: 指定不对应次数 n。继续搜索 RID,直到 n 个连续的 RID 与用户名不对应,意味着 RID 范围结束于 999999,对域控制器(DC)有用。
  14. -l: 通过 LDAP 389/TCP 获取一些(有限的)信息(仅适用于域控制器)。
  15. -s: 文件暴力猜测共享名称。
  16. -k: 指定远程系统上存在的用户(默认:administrator, guest, krbtgt, domain admins, root, bin, none),用于获取 SID 与 lookupsid known_username 使用。
  17. -o: 获取操作系统信息。
  18. -i: 获取打印机信息。
  19. -w: 手动指定工作组(通常自动找到)。
  20. -n: 执行 nmblookup(类似于 nbtstat)。
  21. -v: 详细输出,显示正在运行的完整命令(net, rpcclient 等)。

RID,即相对标识符(Relative Identifier),是一个用于在 Windows 活动目录(Active Directory)环境中唯一标识对象的数值。在 Windows 系统中,每个用户账户、组、计算机账户等对象在活动目录中都有一个与之关联的 RID

查看下web页面

smaba 渗透—信息泄露

smbmap -H 10.10.10.117 // 查看smb共享文件

也可以使用smbclient
smbclient -L 10.10.10.117 // 查看smb共享文件
这里看到了一个wave文件夹,根据web页面提示fallow the wave

连接共享文件夹wave
查看到有flag和提示下载到本地
prompt // 开启提示符显示
mget * // 下载所有文件

查看下内容
1.发现这里的flag经过base64编码
2.在message中是另一个用户给wave的留言,根据内容可能跟后续提权相关
Am Sorry but i was lost my password ,
and i believe that you can reset it for me .

echo "RmxhZzF7V2VsY29tZV9UMF9USEUtVzNTVC1XMUxELUIwcmRlcn0KdXNlcjp3YXZleApwYXNzd29yZDpkb29yK29wZW4K" |base64 -d // base64解码flag

得到用户,尝试ssh登录

提权

思路一——横向移动

在信息枚举的过程中发现一个奇怪的文件/usr/share/av/westsidesecret/ififoregt.sh

find / -writable -type f ! -path "/proc*" 2>/dev/null

下面是命令的详细解释:

  • find: 这是用来搜索文件的命令。
  • /: 指定了查找的起始目录,这里是根目录,表示在整个文件系统中进行搜索。
  • -writable: 这个选项表示查找所有当前用户有写权限的文件。
  • -type f: 这个选项限制搜索结果只包括文件(不包括目录)。
  • ! -path "/proc*"! 是逻辑非操作符,用来排除接下来的匹配条件。-path "/proc*" 匹配所有以 /proc 开始的路径,因此这部分命令组合起来的作用是排除所有 /proc 目录下的文件。
  • 2>/dev/null: 这是一个错误重定向操作,它将 find 命令的错误输出(标准错误,stderr)重定向到 /dev/null,这是一个特殊的设备文件,它会丢弃所有写入其中的数据。这样做的目的是忽略执行命令时可能出现的错误信息。

横向移动

sudo -l // 查看用户sudo特权配置
发现是有(ALL : ALL ) ALL的权限
rooted

root-flag:Flag2{Weeeeeeeeeeeellco0o0om_T0_WestWild}

思路二——内核提权[未复现成功]

uname -a // 查看系统版本

searchsploit linux kernel 4.4 |grep ‘Escalation’ // 用Exploit-db搜索可利用内核提取漏洞

根据版本号筛选出几个可以尝试的漏洞
1.Linux Kernel 2.6.19 < 5.9 – ‘Netfilter Local Privilege Escalation | linux/local/50135.c
2.Linux Kernel 4.4.0-21 (Ubuntu 16.04 x64) – Netfilter ‘target_offset’ Out-of-Bounds Privilege Escalation | linux_x86-64/local/40049.c
3.Linux Kernel < 4.4.0/ < 4.8.0 (Ubuntu 14.04/16.04 / Linux Mint 17/18 / Zorin) – Local Privilege Escalation (KASLR / SMEP) | linux/local/47169.c

在尝试的时候发现没有gcc,可以尝试本地编译后进行提权[不过本地编译要适当调整参数],或者google找编译好的EXP

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注