Vulnhub打靶记录:tre_1

相关信息


kali:10.0.0.9/24

靶机:10.0.0.10/24

靶机介绍:Tre: 1 ~ VulnHub

靶机下载:https://download.vulnhub.com/tre/Tre.zip

目标:1个 flag + root权限

难度:中

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

文字思路


全流程思路:

  • 主机发现 端口扫描 信息搜集
  • 进阶路径枚举:主要就是dirsearch对需要验证的目录爬取操作
  • exp代码改造:这个能力非常的关键,任何exp一定需要阅读了解大概的机制然后进行本土修改
  • 边界突破方法1
  • 边界突破方法2 边界突破方法3:非常考验密码的复用和发现的能力,重要,重要,重要
  • 权限提升:提权完全可以利用文件系统权限或引用不当的错误进行提权,但是对于我们对查找命令,过滤命令需要进行熟练的掌握。

下意识的操作

  1. exp的修改或者文本的编辑,最好使用linux中的编辑器,不要使用vim。因为vim对于缩进的显示不准确,会导致py这样的脚本会有错误。
  2. 在渗透中一定要将邮箱,可疑的字符串,已知的密码进行收集,然后对于任何需要密码的地方进行爆破尝试和密码复用。这个步骤非常非常重要,但又需要极强的敏感度。
  3. 查看程序之间,程序和脚本之间是否存在相关应用时可以通过查看 /etc这个配置目录来确定。(符合linux一切皆文件的哲学思想)

具体流程


信息搜集

  1. 主机发现,端口扫描。22端口为7.9p1openssh,相对于现在最新的9.3来说还是比较新的版本,不太可能存在漏洞。同时比较奇怪的是80,8082开放的都是web,而且发布的内容是相同的唯一不同的便是发布的中间件不同。
image-20230630085305697
  1. 分别访问 80,8082端口上的默认web页面,发现就是单一的图片页面没有任何其他功能。同时查看源码也是一模一样,没任何发现。

image-20230630090714632

  1. 先对80端口进行路径爬取,键入dirsearch -u http://10.0.0.10 ,然后进行逐个的访问。

    image-20230630091153938
    • adminer.php:为一个adminerPHP后台登陆服务,该服务版本为4.4.7,通过searchsploit adminer后相关漏洞利用版本最新也是版本 4.3.1,无法利用。

      image-20230630093656169
    • cms:是个类似音乐的网站,里面的所有功能页面进行尝试后发现都是静态网页html,而且如 Login, Create an account这样的功能页面也都是无法使用的,查看源码发现的路径也是无关紧要的。

      image-20230630091408786
    • info.php:虽然能获取部分靶机的相关信息,但都是无法利用的相关信息。

      image-20230630091810548
    • /server-status:直接 403Forbidden了,其实可以考虑403绕过,但是没有什么大的作用。

      image-20230630092028692
    • system:可以看出为401,表示目标是存在的只是需要身份的验证。访问发现验证的方式就是简单的http基础身份验证,进行弱密码尝试发现直接以 admin :admin就可以登陆了,当然也可以用burpsuite抓包来进行401的爆破。

      image-20230630092332164
      • image-20230630093142705

      image-20230630185443311

exp使用突破边界

方法一:mantis漏洞

  1. 通过上面发现的mantis网页服务,在漏洞库中搜索mantis。可以大致的发现该应用应该是个bug调试的相关服务。但由于不知道靶机上运行的是什么版本的mantis,所以就使最新的一个远程执行,不用认证的一个漏洞利用脚本 48818.py
image-20230630185704150
  1. exp进行阅读,查看相关的使用说明,并对exp进行相关的修改和使用。首先就是对靶机kaliip修改,其次就是对于mantis这个登陆网站地址的修改为:/system。然后就是添加一个headers认证头,这个认证头就是 Authorization Basic YWRtaW46YWRtaW4=,但注意需要以字典的形式进行写入。
image-20230630192655120

通过对exp使用说明的了解,该exp首先会更改该服务默认用户Administartor的密码为password,然后再进行反弹shell。这个脚本最需要注意的就是self.header头的添加,其它的修改,注释都有相关说明。

  1. 运行修改后的脚本。虽然发现有报错,但是我们可以发现shell还是成功的反弹了到kali:4444,然后简单的升级shell
image-20230630192141762

方法二:ssh登陆

  1. 通过对发现的system再次进行目录的迭代爬取,但是注意添加 --header这个文件头来进行身份的验证,否则无法成功的爬取目录。目录的迭代爬取非常非常重要,切记不要忘记

    dirsearch -u http://10.0.0.10/system --header="Authorization: Basic YWRtaW46YWRtaW4="
    

    其中有个非常重要的目录 system/config目录,进行访问后里面有个非常重要的文件a.txt。在其中发现了web数据库的相关配置信息。

    image-20230630200923376

    image-20230630201333560

  2. 再结合先前发现的adminer.php网页,尝试利用获取的数据库密码进行登陆。注意Server的填写方式,需要为localhost的形式。

    image-20230630201858898
  3. 进入数据库后台后进行相关数据库的查看,然后对 mantis_user_table数据库进行查看。

    • administratorpassword解密为:password
    • trehash无法解密,但是有个非常值得注意的字段realname。熟悉ssh命令登陆格式的话应该会有所联想,而且该字符串非常符合一个高复杂度密码的格式要求,加之靶机开放了ssh的登陆方式,不妨大胆的进行尝试登陆。
    image-20230630202133542
  4. 由于我打的多台靶机的IP设置都为10.0.0.10,以前进行的ssh连接时保存的秘钥依然存在。导致再次使用ssh登陆这个靶机时提示:连接的主机验证秘钥已经更换。所以键入ssh-keygen -R 10.0.0.10来重置10.0.0.10这个IPssh秘钥,然后再进行ssh登陆的尝试,发现成功的突破边界。

    image-20230630205547643

方法三:通用漏洞的利用

  1. 还是进行searchsploit mantis漏洞搜索,发现一个密码重置的漏洞41890.txt利用说明,而且该漏洞的适用版本非常的广。

    image-20230630203942970

  2. 通过对于漏洞的相关阅读,大致意思如下:

    当修改一个用户密码时,服务器会对请求修改的用户进行hash验证,如果通过允许修改。通过源码可以看出验证逻辑存在漏洞,虽然我们不知道正确的hash。但是用一个没有验证的用户(hash为空),在请求修改密码的时候我们将需要对比的hash也设置为空,这样可以完成逻辑绕过进入到密码修改的页面。

    即使大致的原理不懂,但是其中也给出了bypassurl示例,我们只需要修改相关的url路径即可。

    image-20230701190945264
  3. 使用下面的urlhttp://10.0.0.10/system/verify.php?id=1&confirm_hash=就可以进入下面界面,将密码修改为 1234mantisadministrator用户的默认id=1

    image-20230630205026096
  4. 进入后台,通过查看相关信息,再次发现和方法二一样的用户信息,所以可以再次进行ssh登陆。

    image-20230630205111220

再次信息收集

  1. 发现tre用户可以通过sudo使用shutdown命令,从而控制靶机启动。

    image-20230701193223019

    然后键入下面的命令来查看:属主是root,但同时其他用户可以对该文件进行写的敏感文件。排除/sys/kernel/security这样的关于内核的文件,将目标重点放在 /usr/bin/check-system这个文件上。由于所有用户可以对其进行读写,查看后发现就是个简单的shell脚本。命令解析

    find / -type f -perm -o=w -user root -ls 2>/dev/null | grep -v "/proc\|sys/fs"
    

    image-20230701192341330

  2. 不难发现这个脚本是root创建,所以很有可能会有root的相关程序对其进行引用。在 /etc目录下键入 grep -Ri "check-system" . 2>/dev/null来查看,可能对其进行引用的程序。 命令解析

    image-20230701192535651

    /etc/systemd/system目录说明

    不难发现两个程序都是通过bash来执行这个脚本的,而这且都是开机自启动。结合前面搜集的信息:

    • tre用户可以读写check-system
    • 可以重启靶机
    • check-system开机是会运行。

    所以对该脚本进行修改,让其在重启是反弹shell。而且由于开机是高权限,大概率是root用户的shell

root's shell反弹

  1. 在对脚本修改时,最好将反弹代码写入循环中,确保一定成功反弹shell,如果只写上部分反弹shell代码是无法在重启后成功反弹的。

    image-20230701194937327
  2. 利用sudo shutdown使靶机重启,进而成功的反弹rootshell,拿下rootflag完成打靶。

    image-20230701193321559

    image-20230701195123514

相关工具/命令


命令

敏感文件查找

find / -type f -perm -o=w -user root -ls 2>/dev/null | grep -v "/proc\|sys/fs"

用于在文件系统中查找所有属于root用户、具有其他用户可写权限的文件,并将其输出到标准输出

[==返回==](#back3)<a id='tag3'></a>
  • -type f: 这是find命令的选项之一,指定只搜索普通文件(排除目录和其他特殊文件)。
  • -perm -o=w: 这是另一个find命令的选项,用于指定搜索具有其他用户可写权限的文件。-perm选项用于匹配特定的文件权限。-o=w表示其他用户具有写权限。
  • -user root: 这是find命令的选项之一,用于指定搜索属于root用户的文件。
  • -ls: 这是find命令的选项之一,用于以类似ls -l的格式打印匹配到的文件信息。
  • 2>/dev/null: 这是将错误输出重定向到/dev/null,即丢弃错误消息。
  • |: 这是管道操作符,将前一个命令的输出作为后一个命令的输入。
  • -v "/proc\|sys/fs": 这是使用grep命令进行过滤的部分。-v选项表示只输出不匹配的行。"/proc\|sys/fs"表示不匹配包含/procsys/fs的行,即排除这两个路径。\|正则表达式的or,之所以排除这两个目录是为了排除干扰。

文本文件的查找

root@root:/etc$ grep -Ri "check-system" . 2>/dev/null

因此,该命令的作用是在/etc目录下递归地搜索包含字符串"check-system"的文本,并将匹配的行输出到标准输出,同时忽略权限相关的错误消息。由于 /etc是各个程序配置文件的存放目录,可以对里面文本内容的查找,从而实现理清程序间互相引用的目的。 返回

  • grep: 这是用于在文件中搜索文本的命令。
  • -R: 这是grep命令的选项之一,表示递归地搜索指定目录下的文件和子目录。
  • -i: 这是grep命令的选项之一,表示忽略大小写进行匹配。
  • "check-system": 这是要搜索的文本字符串,即要在文件中查找的内容。
  • .: 这是要搜索的起始路径,即从当前目录(/etc)开始搜索。
  • 2>/dev/null: 这是将错误输出重定向到/dev/null,即丢弃错误消息。在这种情况下,它会将由于权限限制或其他原因导致的无法访问的文件或目录的错误消息屏蔽掉,只输出匹配的行。

复盘/相关知识


重要

401

​ 指示身份验证是必需的,没有提供身份验证或身份验证失败。 如果请求已经包含授权凭据,那么401状态码表示不接受这些凭据。

/proc

/proc目录是一个特殊的虚拟文件系统(procfs),它提供了对内核和运行中进程的信息的访问。它不是一个真正的文件系统,而是通过内核动态生成的文件和目录的集合。

一般敏感文件的查找是可以排除

/sys/kernel/security

在Linux系统中,/sys/kernel/security目录是用于访问内核安全模块相关信息和配置的路径。它提供了与内核安全模块相关的接口和文件。

/etc/systemd/system

是Systemd服务管理器的配置文件目录。Systemd是一种Linux系统初始化和服务管理系统,它负责启动、停止和管理系统中的各种服务和单元。返回

posted @ 2023-07-04 14:52  C_CHL  阅读(186)  评论(0编辑  收藏  举报