打靶记录27——Tre

news/2025/2/13 9:40:39/文章来源:https://www.cnblogs.com/Fab1an/p/18712496

靶机:

https://www.vulnhub.com/entry/tre-1,483/

下载(镜像)https://download.vulnhub.com/tre/Tre.zip

难度:

目标:

  • 获得 Root 权限 + Flag

攻击方法:

  • 主机发现
  • 端口扫描
  • 信息收集
  • 进阶路径枚举
  • EXP 代码改造
  • 突破边界方法1
  • 突破边界方法2
  • 突破边界方法3
  • 权限提升

主机发现

这次用 Vmware 来打开虚拟机,如果用 Virtual box 很可能出现获取不到 IP 的情况,那只能用进入单用户模式的方法来设置 IP 了

我就用 Vmware 来打开了,我的 kali 和 靶机都设置的桥接模式

sudo arp-scan -l

端口扫描和服务发现

sudo nmap -p- 192.168.31.24

发现开放了 22,80,8082 这三个端口

sudo nmap -p22,80,8082 -A 192.168.31.24 进行一下应用版本的扫描

发现 80 端口和 8082 端口都是 Web 服务,浏览器访问之后发现页面都一样,怀疑他们是同一个 Web 应用,那只能使用工具了

信息收集

sudo dirsearch -u http://192.168.31.24

访问 /adminer.php 这个路径发现是一个 Web 应用,可以登录数据库的,但是我们不知道数据库的账号密码

searchsploit adminer

搜索发现没有已知的可攻击的漏洞

http://192.168.31.24/cms/这个 CMS 路径上也没有有价值的信息,都是静态的页面

http://192.168.31.24/info.php 这个路径就是正常的 phpinfo 显示

访问 /system 路径发现需要认证,使用弱口令 admin/admin 通过验证

发现 HTTP 头多了验证的东西:"Authorization":"Basic YWRtaW46YWRtaW4="

突破边界方法 1

searchsploit mantis 搜索看看有没有可以利用的代码,发现最新的版本有个 RCE

需要修改一下,在代码里加上验证的 HTTP 头,修改靶机和 kali 的 IP,然后路径要修改成 /system

运行代码成功获得 shell

python3 -c "import pty;pty.spawn('/bin/bash')" 升级一下 shell

在 Unix、Linux 等类 Unix 系统中,tty 是一个用于显示当前终端设备文件名的命令。“tty” 原本是 “Teletypewriter”(电传打字机)的缩写,在现代计算机系统中,它代表着用户与操作系统进行交互的终端设备。

当你在终端中输入 tty 命令并按下回车键后,系统会返回当前终端所对应的设备文件路径。例如,在本地物理终端上执行 tty 命令,可能会返回类似 /dev/tty1/dev/pts/0 这样的结果,其中 /dev/tty 系列表示物理终端,/dev/pts 系列表示伪终端(如通过 SSH 连接创建的终端会话)。

突破边界方法 2

对发现的新路径再进行路径的爬取

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

找到一个 config 路径

在 a.txt 里面发现了数据库的相关信息

# --- Database Configuration ---
$g_hostname      = 'localhost';
$g_db_username   = 'mantissuser';
$g_db_password   = 'password@123AS';
$g_database_name = 'mantis';
$g_db_type       = 'mysqli';

回到 http://192.168.31.24/adminer.php 下尝试登录成功

在这个表里发现有用户名和密码的字段

执行 SQL 语句来查询一下该表

select * from mantis_user_table; 发现一个很像密码的 Tr3@123456A!

记得之前扫描端口的时候是发现靶机的 22 端口是开放着的

ssh tre@192.168.31.24 使用该密码成功登录到目标靶机

突破边界方法 3

searchsploit Mantis 发现还有一个密码重置的漏洞,跨越了很多版本,从 1.3.0 到 2.3.0

查看这个 txt 发现漏洞出现在 verify.php 上

修改一下这个 URL 就能去到重置 administrator 管理员密码的页面

http://192.168.31.24/system/verify.php?id=1&confirm_hash=

将密码改成 123 之后去到 manage 界面也能发现这个疑似密码的 Tr3@123456A!,然后通过 SSH 登录即可突破边界

提权

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

find

这是一个强大的文件查找命令,可根据用户指定的各种条件在指定目录下搜索文件和目录。

/

指定查找的起始目录,这里的 / 代表根目录,意味着命令会从整个文件系统的根开始查找。

-type f

-typefind 命令用于指定查找对象类型的选项,f 表示普通文件。此选项限定了查找范围仅为普通文件,会排除目录、符号链接等其他类型的文件系统对象。

-perm -o=w

-perm 用于根据文件的权限来筛选文件。-o=w 是一种权限筛选条件,其中:

  • o 代表其他用户(other),即除了文件所有者和所属组之外的用户。
  • w 表示写权限。
  • - 表示只要文件满足指定权限的任意组合即可。所以 -o=w 表示查找那些其他用户具有写权限的文件。

-user root

-user 选项用于根据文件的所有者来筛选文件,root 是系统中的超级用户。此选项表示只查找那些所有者为 root 的文件。

-ls

-lsfind 命令的一个动作选项,它会以类似于 ls -l 命令的格式列出查找到的文件的详细信息,包括文件的权限、所有者、所属组、大小、修改时间以及文件名等。

2>/dev/null

这是一个重定向操作,其中:

  • 2 代表标准错误输出(stderr),在 Unix 系统中,标准输入、标准输出和标准错误输出分别用数字 0、1、2 表示。
  • > 是重定向符号,用于将输出内容重定向到指定的位置。
  • /dev/null 是一个特殊的设备文件,也被称为 “黑洞”,所有写入其中的数据都会被丢弃。所以 2>/dev/null 的作用是将命令执行过程中产生的错误信息重定向到 /dev/null,从而避免这些错误信息在终端中显示。

grep -v "/proc"

  • grep 命令grep 是一个强大的文本搜索工具,用于在输入的文本中查找包含指定模式的行。
  • -v 选项:表示反向匹配,即只输出不包含指定模式的行。
  • "/proc":是要匹配的模式。在 Unix 和类 Unix 系统中,/proc 是一个虚拟文件系统,它提供了内核和进程信息的接口。这里使用 grep -v "/proc" 是为了过滤掉查找结果中路径包含 /proc 的文件信息,因为 /proc 中的文件大多是动态生成的,可能不是我们真正想要查找的常规文件。

grep -v "cgroup"

同样,这也是一个 grep 命令的反向匹配操作。

  • "cgroup":是要匹配的模式。cgroup(Control Groups)是 Linux 内核提供的一种机制,用于对进程进行资源限制和控制,在 /sys/fs/cgroup 等目录下会有相关的文件和目录。使用 grep -v "cgroup" 是为了过滤掉查找结果中路径包含 cgroup 的文件信息,这些文件通常是与系统资源管理相关的特殊文件,可能不符合我们查找常规文件的需求。

发现 /usr/bin/check-system

  • DATE=date '+% Y-% m-% d % H:% M:% S'``:使用 date 命令获取当前的日期和时间,按照 年-月-日 时:分:秒 的格式进行格式化,并将结果赋值给变量 DATE
  • echo "Service started at ${DATE}" | systemd-cat -p info:将包含启动时间的信息 "Service started at ${DATE}" 输出,并通过管道(|)将其传递给 systemd-cat 命令。systemd-cat 是一个用于将标准输入重定向到 systemd 日志系统(journald)的工具,-p info 选项指定日志的优先级为 info 级别,表示这是一般性的信息记录。

grep -Ri "check-system" . 2>/dev/null 是一个在类 Unix 系统(如 Linux)中常用的文本搜索命令,用于在当前目录(. 表示当前目录)及其所有子目录下递归地查找包含字符串 "check-system" 的文件,并将匹配的行输出。同时,该命令会将执行过程中可能产生的错误信息进行重定向,避免在终端显示。

2>/dev/null

这是一个重定向操作。在 Unix 系统中,标准输入、标准输出和标准错误输出分别用数字 012 表示。这里的 2 表示标准错误输出,> 是重定向符号,/dev/null 是一个特殊的设备文件,也被称为 “黑洞”,所有写入其中的数据都会被丢弃。因此,2>/dev/null 的作用是将命令执行过程中产生的错误信息重定向到 /dev/null,从而避免这些错误信息在终端中显示,使输出更加简洁。

./systemd/system/check-system.service:ExecStart=/bin/bash /usr/bin/check-systemsystemd 服务单元文件(.service 文件)中的关键配置行,以下为你详细解读:

./systemd/system/check-system.service

这部分代表的是 systemd 服务单元文件的路径。通常,systemd 服务单元文件存放在 /etc/systemd/system 或者 /usr/lib/systemd/system 目录下,这里的 ./ 可能表示相对于当前工作目录而言,文件名为 check-system.servicesystemd 是 Linux 系统中广泛使用的系统和服务管理器,服务单元文件用于定义和配置系统服务的启动、停止、重启等行为。

ExecStart=/bin/bash /usr/bin/check-system

这是服务单元文件里至关重要的配置项,其作用是指定服务启动时要执行的命令。具体解释如下:

  • ExecStart:这是 systemd 服务单元文件中的一个指令,专门用于定义服务启动时所执行的命令。在服务启动过程中,systemd 会依据 ExecStart 所指定的命令来启动相应的服务。
  • /bin/bash:这是 Bash shell 的可执行文件路径。Bash 是 Linux 系统里最常用的 shell 程序,它能够解释和执行 shell 脚本。在这里使用 /bin/bash 意味着要通过 Bash 来执行后续的脚本文件。
  • /usr/bin/check-system:这是一个 shell 脚本文件的路径,结合之前的 /bin/bashsystemd 会调用 Bash 来执行 /usr/bin/check-system 脚本,从而启动相应的服务。你之前查看的 /usr/bin/check-system 脚本,会在服务启动时被执行,它会记录服务启动时间并进入一个每秒输出 "Checking..." 的无限循环。

就是靶机重启的时候就会执行 /usr/bin/check-system 这个文件,我们在文件中插入恶意的反弹 shell 代码,然后重启靶机

sudo -l 发现可以不用密码以 root 的身份来执行 shutdown 命令

shutdown -r now 是在类 Unix 系统(如 Linux、BSD 等)中用于立即重启计算机的命令。shutdown 命令是系统管理工具,可用来安排系统关机、重启等操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/883088.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

7. Docker 容器数据卷的使用(超详细的讲解说明)

7. Docker 容器数据卷的使用(超详细的讲解说明) @目录7. Docker 容器数据卷的使用(超详细的讲解说明)1. Docker容器数据卷概述2. Docker 容器数据卷的使用演示:2.1 宿主 和 容器之间映射添加容器卷2.2 容器数据卷 读写规则映射添加说明2.3 容器数据卷的继承和共享3. 最后:坑:…

到底值不值得本地部署残血版DeepSeek?一文说清!教你如何白嫖满血版DeepSeek

一、介绍最近一段时间,DeepSeek 备受关注,夏天也向身边朋友推荐。但它常无法使用,原因是受到大规模恶意攻击,且 IP 地址在美国。 通过以下网站可以查看DeepSeek网站状态: status.deepseek.com/ 可以发现,最近标红的就是故障中​若遇服务器繁忙提示,大概率是被攻击了,并…

干货:DeepSeek+SpringAI实现流式对话!

前面一篇文章我们实现了《炸裂:SpringAI内置DeepSeek啦!》,但是大模型的响应速度通常是很慢的,为了避免用户用户能够耐心等待输出的结果,我们通常会使用流式输出一点点将结果输出给用户。 那么问题来了,想要实现流式结果输出,后端和前端要如何配合?后端要使用什么技术实…

Ftrans文件安全外发系统,为企业数据保驾护航!

随着企业的不断发展,集团分公司及各部门需向外部客户、合作伙伴及海外同事外发文件。过去,主要通过邮件、FTP方式将数据进行外发,主要存在以下问题和挑战: 1.进行文件外发时需通过OA的审批,由于OA审批与FTP传输两个环节割裂,公司无法有效限制数据外发范围和管控数据外发安…

本地部署 DeepSeek:小白也能轻松搞定!

大家好,我是晓凡。 写在前面 最近DeepSeek太火了,以至于每个小伙伴都想试试。DeepSeek 的到来可谓是开启了全民AI热潮。 本以为DeepSeek本地化部署有多难,实际上验证后很简单,操作起来就像给电脑装个新软件那么简单,大约十多分钟可完成本地部署。 今天咱们来聊聊如何在自己…

Git指南-从入门到精通

代码提交和同步命令 流程图如下:第零步: 工作区与仓库保持一致 第一步: 文件增删改,变为已修改状态 第二步: git add ,变为已暂存状态$ git status $ git add --all # 当前项目下的所有更改 $ git add . # 当前目录下的所有更改 $ git add xx/xx.py xx/xx2.py # 添加某几个…

一分钟搞定!CentOS 7.9上用Ansible自动化部署SQL Server 2019

一分钟搞定!CentOS 7.9上用Ansible自动化部署SQL Server 2019不熟悉整个流程的朋友可以先看之前的部署文章,手动部署一遍 一步步教你在CentOS 7.9上安装SQL Server 2019前言 这套Ansible脚本属于红帽官方出品,是一套mssql的自动化运维脚本,能够实现mssql的单实例部署和Alwa…

【Linux】Linux如何查看JDK的安装路径

如何在一台Linux服务器上查找JDK的安装路径呢?有那些方法可以查找定位JDK的安装路径?是否有一些局限性呢?下面总结了一下如何查找JDK安装路径的方法. 1、echo $JAVA_HOME 使用$JAVA_HOME的话能定位JDK的安装路径的前提是配置了环境变量$JAVA_HOME,否则如下所示,根本定位不…

[虚拟化/Docker] Docker Desktop 安装与使用

0 序:DeepSeek 等AI大模型在Windows的私有化部署DeepSeek 等AI大模型在Windows的私有化部署,最流行的开源AI终端应用————Dify,依赖于 Docker 环境。由此,必然离不开:Docker Desktop1 概述:Docker Desktopdocker desktop 是一款Docker容器运行管理工具,用于在本地机器…

【VUE框架】渗透测试的一些技巧(实现自动化测试)

以下文章来源于渗透测试之道 ,作者kk1230 一、什么是VUEVue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。而 Webpack 是一个模块打包工具,用于将项目中的各种资源(如 JavaScript 模块、CSS 样式文件、图片等)打包成浏览器可以识别的文件。 Webpack概念机制Webpack…

案例 百万数据批量插入测试

1、jpa、mybatis-plus、jdbc、load data infile测试比较2、load data infile语法测试3、相关代码 测试package com.xm;import com.xm.entity.UserP; import com.xm.task.JdbcInsert2Task; import com.xm.task.JdbcInsertTask; import com.xm.task.MybatisPlusInsert2Task; impo…

案例 百万级数据批量插入测试

1、jpa、mybatis-plus、jdbc、load data infile测试比较2、load data infile语法测试注:测试有限,仅供参考。雨淋淋过的季节