红队打靶:THE PLANETS: MERCURY打靶思路详解(vulnhub)

news2024/12/23 10:46:47

目录

写在开头

第一步:主机发现和端口扫描

第二步:Web渗透

第三步:获取初步立足点并搜集信息

第四步:软连接劫持sudo提权

总结与思考 

写在开头

  本篇博客在自己的理解之上根据大佬红队笔记的视频进行打靶,详述了打靶的每一步思路,并非复现writeup,读者耐心看完,定会有所收获。MERCURY这个靶机的难度也不高,并没有对特殊漏洞的利用,主要的难点还是对渗透思路的理解与探索。涉及到的知识点比较常规,但也有许多对渗透测试的启发,比如通过故意的错误尝试获取报错信息,结合开发习惯探索常见漏洞(SQL注入0),敏感信息的查找等。红队笔记的打靶视频详见:

「红队笔记」靶机精讲:THE PLANETS MERCURY - 标准攻击链明快利落,渗透样板机,happy pentesting!_哔哩哔哩_bilibili

  本文针对的靶机源于vulnhub,详情见:

The Planets: Mercury ~ VulnHub 

  下载链接见:

https://download.vulnhub.com/theplanets/Mercury.ova

  THE PLANETS: MERCURY靶机的目标也是拿到两个flag。注意这个靶机是VirtualBox靶机,用VMware打开可能会有网络问题。这里别忘了将VirtualBox靶机和kali都设定为nat模式,并能保证kali和靶机处于同一内网。具体方法可以见上一篇博客:

红队打靶:Fowsniff打靶思路详解(vulnhub)-CSDN博客

  靶机启动后界面如下:

第一步:主机发现和端口扫描

 非常常规的思路,这里不细讲了。我kali的ip是10.10.10.5,主机发现靶机的ip是10.10.10.6,扫描出开放的TCP端口仅有22和8080,具体命令如下:

nmap -sn 10.10.10.0/24    //主机发现
nmap -sT --min-rate 10000 10.10.10.6      //TCP全端口扫描
nmap -sT -sC -sV -O -p22,8080 10.10.10.6      //用默认脚本扫描服务信息、操作系统版本
nmap --script=vuln -p22,8080 10.10.10.6  //漏洞脚本扫描
nmap -sU --top-ports 20 10.10.10.6    //探测UDP最常见的20个端口的开放情况

   发现仅开放了22和80两个端口,UDP端口在渗透优先级中排列靠后,最后再考虑。

  详细信息扫描的结果很多,发现8080跑的并不是常见的web服务器,而是和http代理相关。这里看不出什么,有用再回看。

  其他没有什么有用信息了。 

第二步:Web渗透

 从8080端口先入手,毕竟22端口没什么搞头。先尝试浏览器访问靶机ip:8080,得到的界面如下:

 结果就一句话,提示我们这个站点正在开发中,建议我们稍后再访问。源代码也没东西,整个目录爆破吧:

gobuster dir -u http://10.10.10.6:8080 -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt

   目录爆破没啥收获,难道就没有什么突破点了吗?干脆我们随便尝试一个目录,看看有没有报错信息,比如/aaa,大概率是没有这个目录的,如下图:

  果然404了,但报错页面回显了非常关键的信息,存在一个目录mercuryfacts,这种特殊名字的目录一般是无法通过目录爆破找到的(字典大小是有限的),尝试访问目录mercuryfacts:

 这应该是重大突破点,这个界面有两个跳转链接,我们分别点开看看,先看Load a fact这个链接:

  就一行的内容。好像是列出了关于水星的第一条科学事实,水星没有任何卫星和环状卫星带。注意观察url中有个目录/1/,同时这一行也给出了Fact id: 1这样的字段,感觉很可能是数据库查询,我们可以尝试把url中的1改成2,3,4等待,如下:

 第二条也是类似的信息,如上图,一直到第10条,好像没有信息了:

大概了解了,回到刚刚的界面,看看See List中有没有什么启发:

   这段话大概介绍了开发者尚未完成的工作,未来要做的事情,添加CSS、使用users表实现身份认证、使用django的框架代替mysql直接的调用等待。第二条和第三条其实都暗示了我们,存在mysql数据库查询,同时可能还是直接的拼接查询,存在sql注入。因此我们回到刚刚的有关水星科学事实的页面,再url中添加单引号尝试验证SQL注入是否存在,发现果然报错了!

  说明确实存在SQL注入,这里直接用sqlmap吧,先查看有哪些库:

sqlmap -u http://10.10.10.6:8080/mercuryfacts/1 --dbms mysql --dbs 

发现有mercury数据库,干脆直接一键拖库,把里面的表直接dump出来:

sqlmap -u http://10.10.10.6:8080/mercuryfacts/1 --dbms mysql -D mercury --dump

 核心除了刚刚水星的知识之外,还有一个用户密码表,存在明文的密码,如下:

+----+-------------------------------+-----------+
| id | password                      | username  |
+----+-------------------------------+-----------+
| 1  | johnny1987                    | john      |
| 2  | lovemykids111                 | laura     |
| 3  | lovemybeer111                 | sam       |
| 4  | mercuryisthesizeof0.056Earths | webmaster |
+----+-------------------------------+-----------+ 

第三步:获取初步立足点并搜集信息

  这很可能就是ssh的登录密码,那么上面四个账号,根据名字判断,我们最希望得到的账号肯定是webmaster,尝试用账号webmaster,密码mercuryisthesizeof0.056Earths登录ssh试试:

ssh mercury@10.10.10.6
输入密码:mercuryisthesizeof0.056Earths

登录成功了!在当前目录查找用户的flag,如下:

 家目录还有个mercury_prog,可以进入查找一下:

  发现notes.txt很可能又是凭据信息,看起来像base64编码,解码试试,先对第一条webmaster进行解码:

  发现果然是webmaster的ssh密码,那么再对第二条linuxmaster进行base64解码:

echo 'bWVyY3VyeW1lYW5kaWFtZXRlcmlzNDg4MGttCg==' | base64 -d

得到凭据:

linuxmaster

mercuryisthesizeof0.056Earths 

  很可能linuxmaster是比webmaster更高权限的用户,因此我们尝试切换账号:

su linuxmaster
输入密码:mercuryisthesizeof0.056Earths

成功切换! 

第四步:软连接劫持sudo提权

  获取linuxmaster的shell后,尝试sudo -l查看可以sudo运行的可执行文件:发现有一个check_syslog.sh,但需要设置环境变量:

  可以以root运行check_syslog.sh,先查看一下这个文件是啥:

   就是个读取10条日志记录的命令,那我们可以直接通过软连接的方式把tail指令戒尺掉。相当于在当前目录建立软连接,把tail指向/bin/vi,然后通过sudo vi的方式进行提权。首先建立软连接,劫持tail指令:

ln -s /bin/vi tail

 然后修改环境变量,把当前目录.设置到环境变量的最靠前的位置,也就是说,此时系统寻找指令时,首先现在当前目录寻找,我们可以先看一下环境变量:

  然后把当前目录.加到这个环境变量最靠前的位置:

export PATH=.:$PATH

  接下来只要sudo运行/usr/bin/check_syslog.sh即可,运行时tail指令相当于会被替换为vi指令,我们就可以通过sudo vi的方法提权了。不过此处要设置路径变量为$PATH:

sudo --preserve-env=PATH /usr/bin/check_syslog.sh

   果然进入了vi编辑器的页面,我们只要输入冒号:即可输入指令,输入!bash表示执行系统命令,启动bash,即可提权:

  如下图所示,提权成功! 

  第二个flag在root目录下:

   至此打靶完成!

   总结一下提权的思路:sudo -l发现能够以root权限执行脚本/usr/bin/check_syslog.sh,而这个脚本内部使用了tail指令,我们对tail指令的提权方法并不熟悉,但我们对sudo vi方法的提权很熟悉。因此可以通过软连接对tail做一个劫持,在当前目录(比如linuxmaster的家目录)建立一个指向/bin/vi的软连接,并修改环境变量,让当前目录变为寻找指令的最优先位置,这样当运行tail的时候,在当前目录就相当于运行这个软连接,也就是运行vi,在sudo提权时添加路径变量后,再通过sudo vi的方法即可提权了(以root权限执行系统命令,启动bash,则会提权)。

总结与思考 

 这个靶机感觉虽然没有什么特别高深的漏洞利用,但却体现了渗透的常见思维方式。体现了完整的渗透思路与路径。打靶过程有一种按图索骥的感觉,非常有逻辑的思考。当我们目录爆破没什么思路的时候,可以在url中尝试错误的路径,尝试是否有报错的回显提示信息。特别关注url的信息,可能存在遍历和sql注入,此外,本文提权的思路与逻辑也需要读者深入理解。最后总结一下打靶过程:

1.主机发现和端口扫描:发现8080、ssh。

2.Web渗透:访问8080,无信息,目录爆破无果,尝试错误路径报错404,但回显了目录mercuryfacts,访问,发现有界面,一番试探后发现了sql注入,拿到了ssh凭据。

3.获取初步立足点并搜集信息:登录webmaster的ssh,一番搜索发现了更高级的账户linuxmaster,切换成功。

4.sudo提权:sudo -l发现以root权限执行的脚本,其中有tail指令,用软连接的方式劫持指向vi,通过sudo vi方法提权。

  靶机不难,但是还是有一些知识点的,特别是Web目录爆破之后无果该怎么进一步探索,尝试报错是非常关键的做法。 到此这个靶机就讲解完毕了。打完这个靶机感觉还是挺有收获的,有很多新的知识点。靶机不难,总结不易,也有很多自己的思考,希望读者能够点赞关注多多支持!学渗透还是要实操呀。如果读者有什么打靶的问题也欢迎评论区留言指出,我一定知无不言!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C2. Powering the Hero (hard version)

题目:样例: 输入 5 5 3 3 3 0 0 6 0 3 3 0 0 3 7 1 2 3 0 4 5 0 7 1 2 5 0 4 3 0 5 3 1 0 0 4输出 6 6 8 9 4 思路: 贪心思维题,这道题要求的是一张一张的凑卡牌,凑到的是力量赋值卡就存储好,抽到 0 就是英…

智能驾驶、智能家居、智能工业中的 AI 关键基础设施,半导体厂商恩智浦的角色是什么?

我们来看一条七年前的真实新闻报道,2016 年《福布斯》在报道中提到“2020 年会有 1000 万台的自动驾驶汽车”。然而 2023 年的现在,真正实现 L4 级别自动驾驶的汽车,仍然远远没有达到这个预测的数量。 另一边,数据显示&#xff0c…

递归实例:汉诺塔问题(n个圆盘3个柱子abc 一次动一个盘子)

实例:汉诺塔问题 n个圆盘3个柱子abc 一次动一个盘子 把上面n-1个盘看成一个整体,下面1个盘看成一个整体 n-1盘经过c移动到b第n盘到cn-1盘经过a到c 1 3步就是小一规模的汉诺塔 移动次数递推式 h(x)2h(x-1)1 def hanoi(n, a, b, c):if n > 0:hano…

Flutter笔记:AnimationMean、AnimationMax 和 AnimationMin 三个类的用法

Flutter笔记 AnimationMean、AnimationMax 和 AnimationMin三个类的用法 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_28550263/…

第1篇 目标检测概述 —(3)YOLO系列算法

前言:Hello大家好,我是小哥谈。YOLO(You Only Look Once)系列算法是一种目标检测算法,主要用于实时物体检测。相较于传统的目标检测算法,YOLO具有更快的检测速度和更高的准确率。YOLO系列算法的核心思想是将…

织梦CMS采集插件-DEDE插件大全

在如今充满信息爆炸的互联网时代,维护一个具有吸引力和活力的网站或博客是一项具有挑战性的任务。对于那些使用织梦CMS建立网站的用户来说,如何持续不断地更新内容以吸引访问者成为了一个突出的问题。 什么是织梦CMS自动采集插件?这些插件是为…

【数据结构】【C++】哈希表的模拟实现(哈希桶)

【数据结构】&&【C】哈希表的模拟实现(哈希桶) 一.哈希桶概念二.哈希桶模拟实现①.哈希结点的定义②.数据类型适配③.哈希表的插入④.哈希表的查找⑤.哈希表的删除⑥.哈希表的析构 三.完整代码 一.哈希桶概念 哈希桶这种形式的方法本质上是开散列法&#x…

常用压缩解压缩命令

在Linux中常见的压缩格式有.zip、.rar、.tar.gz.、tar.bz2等压缩格式。不同的压缩格式需要用不同的压缩命令和工具。须知,在Linux系统中.tar.gz为标准格式的压缩和解压缩格式,因此本文也会着重讲解tar.gz格式压缩包的压缩和解压缩命令。须知,…

26667-2021 电磁屏蔽材料术语 学习笔记

声明 本文是学习GB-T 26667-2021 电磁屏蔽材料术语. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本文件界定了0 Hz~500GHz 频率范围内具有电磁屏蔽作用的材料的术语和定义。 本文件适用于电磁屏蔽材料领域及相关的设备、人体和…

[C++ 网络协议] 异步通知I/O模型

1.什么是异步通知I/O模型 如图是同步I/O函数的调用时间流: 如图是异步I/O函数的调用时间流: 可以看出,同异步的差别主要是在时间流上的不一致。select属于同步I/O模型。epoll不确定是不是属于异步I/O模型,这个在概念上有些混乱&a…

数据安全:文件分析

什么是文件分析 文件分析是在组织的文件存储库中扫描、报告和处理文件安全性和存储的过程。文件安全性分析处理检查文件的位置、所有权和权限安全。文件存储分析包括检测结构化和非结构化数据,以及存储容量规划,由于对暗数据的担忧日益增加,…

基于Java的音乐网站管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&…

【MATLAB源码-第35期】matlab基于lms算法的陷波器仿真,估计误差,估计频率。

1、算法描述 1. LMS算法: LMS(Least Mean Square)算法是一种自适应滤波算法。其核心思想是通过最小化输入信号和期望响应之间的均方误差来调整滤波器的权重。 LMS算法的更新公式为:w(n1)w(n)μe(n)x(n) 其中, w(n) …

OSPF基础

OSPF:开放式最短路径优先协议 无类别IGP协议:链路状态型(LS) 基于LSA收敛,故更新量较大,在大中型网络正常工作,需要进行结构化部署---区域划分,IP地址规划 组播更新----224.0.0.5 224.0.0.6 支持等开销…

【学习笔记】CF1817F Entangled Substrings(基本子串结构)

前置知识:基本子串结构,SAM的结构和应用 学长博客 字符串理论比较抽象,建议直观的去理解它 子串 t t t的扩展串定义为 ext(t) : t ′ \text{ext(t)}:t ext(t):t′,满足 t t t是 t ′ t t′的子串,且 occ(t) occ(t…

【数据结构】堆,堆的实现,堆排序,TOP-K问题

大家好!今天我们来学习数据结构中的堆及其应用 目录 1. 堆的概念及结构 2. 堆的实现 2.1 初始化堆 2.2 销毁堆 2.3 打印堆 2.4 交换函数 2.5 堆的向上调整 2.6 堆的向下调整 2.7 堆的插入 2.8 堆的删除 2.9 取堆顶的数据 2.10 堆的数据个数 2.11 堆的判…

【VUE复习·10】v-for 高级::key 作用和原理;尽量不要使用 index 来遍历

总览 1.:key 作用和原理 2.尽量不要使用 index 来遍历 一、:key 作用和原理 1.数据产生串位的原因 在我们使用 index 进行遍历的时候,会出现虚拟 DOM 和 真实 DOM 的渲染问题。 二、尽量不要使用 index 来遍历 详情见视频 1/3 处: https://www.bili…

复杂的连接如何破坏智能家居体验

智能家居网络复杂性的增加可能会导致客户体验不佳、回报增加以及品牌声誉挑战。如果不加以解决,这一趋势可能会影响智能家居市场的未来增长。 智能家居网络复杂性的增加可能会导致客户体验不佳、回报增加以及品牌声誉挑战。如果不加以解决,这一趋势可能会…

【数据库——MySQL】(12)过程式对象程序设计——存储过程

目录 1. 存储过程2. 局部变量3. 条件分支3.1 IF 语句3.2 CASE 语句 4. 循环语句4.1 WHILE 语句4.2 REPEAT 语句4.3 LOOP和LEAVE语句4.4 LOOP和ITERATE语句 5. 存储过程应用示例参考书籍 1. 存储过程 要创建存储过程,需要用到 CREATE 语句: CREATE PROCED…