靶机来自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
脚本扫描结果
- 时钟偏差 (
_clock-skew
): 目标主机的时钟与扫描主机的时钟存在平均7小时的偏差,这可能会影响某些基于时间的协议和服务。 - SMB 安全模式 (
smb-security-mode
):- 使用了
guest
账户进行认证。 - 认证级别为
user
,表明需要用户名和密码进行认证。 - 支持挑战响应认证机制。
- 消息签名被禁用,这可能存在安全风险,但这是默认设置。
- 使用了
- 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
。
- 操作系统被识别为
- SMB2 时间 (
smb2-time
):- 日期为
2024-04-22T21:07:08
。 - 启动日期未提供(
N/A
)。
- 日期为
- NetBIOS 状态 (
_nbstat
):- NetBIOS 名称为
WESTWILD
。 - NetBIOS 用户未知。
- NetBIOS MAC 地址未知。
- NetBIOS 名称为
- 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
这个命令包含了多个不同的选项,下面是每个部分的解释:
sudo
: 以超级用户(root)的权限运行后面的命令。nmap
通常需要这样的权限才能访问某些网络接口或者使用某些特性。nmap
: 是用于网络探索和安全审计的工具,它可以用于扫描网络,检测哪些设备是活跃的,确定开放的端口以及识别运行在网络设备上的服务。-sU
: 指定nmap
进行 UDP 端口扫描。-sU
选项告诉nmap
扫描目标的 UDP 端口。-sV
: 版本检测。这个选项让nmap
尝试确定运行在开放的端口上的服务的版本信息。-T4
: 指定扫描的时间模板。-T4
代表“适度快速”的扫描,nmap
会尝试在不被发现的情况下快速扫描。--script nbstat.nse
: 运行一个名为nbstat.nse
的 Nmap 脚本。这个脚本用于列出目标机器上的 NetBIOS 状态,包括计算机名称、登录的用户数、MAC 地址等。-p137
: 指定扫描的端口。137 是 NetBIOS 数据报服务的端口号。-Pn
: 指定nmap
不要使用主机发现(ping 扫描)。这意味着即使目标主机没有响应,nmap
也会认为它是活跃的,并继续扫描指定的端口。-n
: 不要解析服务名称或主机名。这会加快扫描速度,因为nmap
不会尝试将 IP 地址转换为主机名。
enum4linux
enum4linux -a 10.10.10.117 > enum4linux/simple_enum
enum4linux
是一款用于枚举 Windows 和 Samba 系统信息的工具,它提供了与 Windows 上的 enum.exe
类似的功能,并且是 smbclient
、rpclient
、net
和 nmblookup
等 Samba 工具的简单封装。以下是 enum4linux
的一些常用参数及其详解:
- -U: 获取用户列表。
- -M: 获取机器列表。
- -S: 获取共享列表。
- -P: 获取密码策略信息。
- -G: 获取组和成员列表。
- -d: 详细模式,适用于
-U
和-S
选项。 - -u: 指定要使用的用户名(默认为空)。
- -p: 指定要使用的密码(默认为空)。
- -a: 执行所有简单的枚举(
-U -S -G -P -r -o -n -i
)。如果没有提供其他选项,则默认启用此选项。 - -h: 显示帮助信息并退出。
- -r: 通过 RID 循环枚举用户(在 Windows 2000 上,如果
RestrictAnonymous
设置为 1)。 - -R: 指定 RID 范围进行枚举(默认:500-550,1000-1050,隐含
-r
)。 - -K: 指定不对应次数 n。继续搜索 RID,直到 n 个连续的 RID 与用户名不对应,意味着 RID 范围结束于 999999,对域控制器(DC)有用。
- -l: 通过 LDAP 389/TCP 获取一些(有限的)信息(仅适用于域控制器)。
- -s: 文件暴力猜测共享名称。
- -k: 指定远程系统上存在的用户(默认:administrator, guest, krbtgt, domain admins, root, bin, none),用于获取 SID 与
lookupsid known_username
使用。 - -o: 获取操作系统信息。
- -i: 获取打印机信息。
- -w: 手动指定工作组(通常自动找到)。
- -n: 执行
nmblookup
(类似于nbtstat
)。 - -v: 详细输出,显示正在运行的完整命令(net, rpcclient 等)。
RID,即相对标识符(Relative Identifier),是一个用于在 Windows 活动目录(Active Directory)环境中唯一标识对象的数值。在 Windows 系统中,每个用户账户、组、计算机账户等对象在活动目录中都有一个与之关联的 RID。
查看下web页面
smaba 渗透—信息泄露
smbmap -H 10.10.10.117
// 查看smb共享文件
也可以使用smbclientsmbclient -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