0%

THM打靶日寄1-Kenobi

Samba多用于 linuxwindows 之间的文件共享,其基于SMB协议

  • 端口探测:枚举SMB共享与RPCbind服务

    • SMB

      update:应该使用更加详细的 nmap 命令以获得更多信息:

      nmap -sC -sV -A -T4 [IP]

      可以用 nmap 枚举SMB协议的共享,其大多使用 445 端口:

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

      可以使用 smbclient //IP/anonymous 加空密码匿名连接到共享以查看有哪些文件

      接下来理论上用 smbget 可以读 log.txt 的内容,但我的报错找不到原因,暂且搁置:

      看了看别人的,里面的内容为:

      • 为Kenobi用户生成 SSH 密钥时的信息—Kenobi用户的ssh密钥—保存在 /home/kenobi/.ssh 路径下

      • 有关 ProFTPD 服务器的信息( 运行FTP服务的用户是 Kenobi)

    • nfs扫描与扫描

      nfs (网络文件系统) 支持本地客户端读写远端 nfs 服务器上文件。

      再回到 nmap 扫描的结果,111 端口运行着 RPCbind 服务,其用于调用网络上另一计算机的子程序而不必关注细节

      这里thm直接说明要针对 nfs 来扫,但笔者没有找到相关的联系qwq

      update: 用详细的扫描就能得出 111 端口的 nfs 信息

      nmap -p 111 --script=nfs-ls,nfs-statfs,nfs-showmount 10.10.234.4 枚举 nfs 信息

      下面的 showmount 给出了导出文件夹列表,即在本题中,可以访问靶机服务器的 /var 目录及子目录

      可以通过创建一个空本地文件夹,并将共享挂载于此:

      mkdir temp

      mount -t nfs [ip]:/ temp -o nolock

      关于共享文件夹中无权限访问的文件,可以参考这篇文章来更改 UID

  • 攻击 proftpd

    端口扫描的信息中,sambanfs 都没有得到具体的成果,考虑对已知版本的 proftpd 进行攻击:

    用自带的 searchsploit 搜索:

    这里存有漏洞的 mod_copy 实现了 SITE CPFR 和 SITE CPTO 命令,其允许任何未经授权的机器将任意文件复制移动到服务器上任意位置

    结合刚刚的 nfs 挂载,可以将敏感文件复制到挂载目录 var 下即可访问

    这里给出两种方法:

    • 纯粹的文件复制漏洞

      本来是打算用 msf 自带的攻击,很可惜 /var 目录无法写入

      考虑将 SITEPATH 参数设置为 smb 的共享文件夹,但是上传后无法执行:

      接下来的大致操作思路是把 /etc/passwd/var/backups/shadow.bak 通过 proftpd 的移动目录下载到本地,然后用 john 破解口令并登录

      可惜的是我的 smb 仍然不能正常下载,且没有这两个文件的复制权限,导致也无法移动到 nfs 挂载目录

    • THM 推荐的ssh登录

      原理也同上,这里尝试将 ssh 私钥下载到本地

      nc 连接 ftp 服务器后使用漏洞:

      先前已经进行过挂载,可以看到私钥文件:

      那么直接用私钥登录即可 ssh -i id_rsa kenobi@10.10.0.59 -oHostKeyAlgorithms=+ssh-rsa :

  • SUID 文件的linux 提权

    针对 SUID 位,其允许用户使用文件所有者的权限执行文件,有此权限的文件是不安全的

    find / -perm -u=s -type f 2>/dev/null 搜索SUID/SGID类型的文件

    这里看到 /usr/bin/menu 是多出来的,尝试执行:

    由于有命令回显,尝试用 strings 命令来在二进制中查找可读字符串:

    即选项1在执行一个没有完整路径的 curl 命令,即没有使用 /usr/bin/curl 来执行

    那么自定义一个 curl 文件并将其添加到 PATH 中,其可以被 /menu 中的 curlroot 身份执行

    1
    2
    3
    echo /bin/bash > curl  #用来获得一个root的bashshell
    chmod +x curl
    export PATH=/tmp:$PATH #新添加的路径/tmp在PATH变量的最前面,保证自定义的curl文件被成功执行