当前位置: 首页 > news >正文

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

目录

写在开头

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

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

相关文章:

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

目录 写在开头 第一步:主机发现和端口扫描 第二步:Web渗透 第三步:获取初步立足点并搜集信息 第四步:软连接劫持sudo提权 总结与思考 写在开头 本篇博客在自己的理解之上根据大佬红队笔记的视频进行打靶,详述了…...

【网络协议】IP

当连接多个异构的局域网形成强烈需求时,用户不满足于仅在一个局域网内进行通信,他们希望通过更高一层协议最终实现异构网络之间的连接。既然需要通过更高一层的协议将多个局域网进行互联,那么这个协议就必须为不同的局域网环境定义统一的寻址…...

Python 布尔类型

布尔值表示两个值之一:True(真)或False(假)。 布尔值 在编程中,您经常需要知道一个表达式是否为True或False。 您可以在Python中评估任何表达式,并获得两个答案之一:True或False。…...

iOS设备管理器iMazing比iTunes好用吗?有哪些优势

虽然 iTunes 是 Apple 官方指定的 iPhone 数据备份和管理工具,但是一直以来 iTunes 卡顿的使用体验和过慢的备份过程为不少人诟病。如果大家也被 iTunes 体验不佳的备份和管理功能所困扰,那么简单易用、功能强大的iMazing 能为你解决这个问题。 iMazing…...

Opengl之深度测试

在坐标系统小节中,我们渲染了一个3D箱子,并且运用了深度缓冲(Depth Buffer)来防止被阻挡的面渲染到其它面的前面。在这一节中,我们将会更加深入地讨论这些储存在深度缓冲(或z缓冲(z-buffer))中的深度值(Depth Value),以及它们是如何确定一个片段是处于其它片段后方的。 …...

利用ICG-NH2/Amine进行DNA标记1686147-55-6星戈瑞

ICG-NH2(吲哚菁绿胺)可以用于DNA标记,这种标记方法通常涉及到DNA上的胺基反应基团和ICG-NH2之间的化学反应。以下是一种常见的方法,用于利用ICG-NH2标记DNA分子: 步骤: 1.准备目标DNA:你需要准…...

Pyecharts数据可视化

Pyecharts数据可视化 1、Pyecharts模块2、柱状图3、折线图4、饼图5、散点图6、图表合并7、词云8、地图 1、Pyecharts模块 ECharts是百度提供的基于JavaScript的开源可视化库,主要用于Web端数据可视化 Echarts是通过JS实现的,Pyecharts则可以使用Python来…...

集合-List集合

系列文章目录 1.集合-Collection-CSDN博客​​​​​​ 2.集合-List集合-CSDN博客 文章目录 目录 系列文章目录 文章目录 前言 一 . 什么是List? 二 . List集合的特点 三 . 常用方法 1.void add(int index, E element): 将指定的元素插入到列表的指定位置。 2.E remove(int in…...

vuex的使用

1 vuex的使用 1 vuex的使用 store/index.js -在Vue中实现集中式状态(数据)管理的一个Vue插件,对vue应用中多个组件的共享状态进行集中式 的管理(读/写),也是一种组件间通信的方式,且适用于任意…...

raw图片处理软件:DxO PhotoLab 6 mac中文版支持相机格式

DxO PhotoLab 6 mac是一款专业的RAW图片处理软件,适用于Mac操作系统。它具有先进的图像处理技术和直观易用的界面,可帮助用户轻松地将RAW格式的照片转换为高质量的JPEG或TIFF图像。 DxO PhotoLab 6支持多种相机品牌的RAW格式,包括佳能、尼康、…...

ReactPortals传送门

ReactPortals传送门 React Portals提供了一种将子节点渲染到父组件以外的DOM节点的解决方案&#xff0c;即允许将JSX作为children渲染至DOM的不同部分&#xff0c;最常见用例是子组件需要从视觉上脱离父容器&#xff0c;例如对话框、浮动工具栏、提示信息等。 描述 <div&…...

【GDB】 command 命令

GDB command 命令 语法 command 命令是一个很好用的调试命令&#xff0c;它配合断点使用&#xff0c;可以在指定的断点执行预先设置的命令 其语法为&#xff1a;command bread_id&#xff0c;这样会提示你输入你要执行的命令&#xff0c;以 end 结束。这个 bread_id 就是用 …...

1038 统计同成绩学生

输入样例&#xff1a; 10 60 75 90 55 75 99 82 90 75 50 3 75 90 88 输出样例&#xff1a; 3 2 0 solution #include <stdio.h> int main(){int n, d, k, hash[101] {0}, a[100000];scanf("%d", &n);for(int i 0; i < n; i){scanf("%d&quo…...

git报错:Failed to connect to 127.0.0.1 port 1080

Bug描述 由于在试了网上的这条命令 git config --global http.proxy socks5 127.0.0.1:1080 git config --global https.proxy socks5 127.0.0.1:1080git config --global http.proxy 127.0.0.1:1080 git config --global https.proxy 127.0.0.1:1080Bug描述&#xff1a;Faile…...

php eayswoole node axios crypto-js 实现大文件分片上传复盘

不啰嗦 直接上步骤 步骤1.开发环境配置 项目需要node.js 做前端支撑 官网下载地址&#xff1a; http://nodejs.cn/download/ 根据自己需要下载对应的版本,我下载的是windows系统64位的版本。 包下载好后 进行安装&#xff0c;安装步骤在此省略... 测试是否安装成功 …...

《Upload-Labs》01. Pass 1~13

Upload-Labs 索引前言Pass-01题解 Pass-02题解总结 Pass-03题解总结 Pass-04题解 Pass-05题解总结 Pass-06题解总结 Pass-07题解总结 Pass-08题解总结 Pass-09题解 Pass-10题解 Pass-11题解 Pass-12题解总结 Pass-13题解 靶场部署在 VMware - Win7。 靶场地址&#xff1a;https…...

v-for中的key

在Vue中&#xff0c;当使用v-for指令循环渲染元素时&#xff0c;添加:key是一个推荐做法&#xff0c;尤其是在循环的元素可能会被重新排序、添加或删除的情况下。 :key的作用是为每个循环的元素提供一个唯一的标识符&#xff0c;以便Vue能够跟踪和管理这些元素的状态。Vue使用…...

MySQL学习笔记17

MySQL权限管理grant&#xff1a; 权限说明&#xff1a; Table 6.2 Permissible Privileges for GRANT and REVOKE PrivilegeGrant Table ColumnContextALL [PRIVILEGES]Synonym for “all privileges”Server administrationALTERAlter_privTablesALTER ROUTINEAlter_routin…...

跨境电商建站:选择域名需要注意什么?

在跨境电商建站过程中&#xff0c;选择一个合适的域名至关重要&#xff0c;尤其是对于跨境电商独立站来说&#xff0c;它对未来的seo排名和品牌建设都有着重要影响。关于本文&#xff0c;我会先从域名的定义开始&#xff0c;到域名选择的重要性&#xff0c;再到如何选择一个完美…...

jupyterlab

1. 环境&#xff1a;linux 环境&#xff08;基于ubuntu-fork 镜像实现&#xff09; 2. pip install jupyter notebook 3. 编译jupyterlab源代码必须使用 node 14.21.3 高版本编译报错#下载 node 14.21.3 :wget https://nodejs.org/download/release/latest-v14.x/node-v14.21.…...

Oracle的递归公共表表达式

查询节点id为2的所有子节点的数据&#xff0c;包括向下级联 WITH T1 (id, parent_id, data) AS (SELECT id, parent_id, dataFROM nodesWHERE id 2UNION ALLSELECT t.id, t.parent_id, t.dataFROM nodes tJOIN T1 n ON t.parent_id n.id ) SELECT * FROM T1; --建表语句 C…...

解决antd vue ts v-model:value绑定Boolean布尔类型爆红但可以使用

没啥好写的&#xff0c;写点注意点把 前言&#xff1a;在 antd vue中需要用到对应的类型转换&#xff0c;v-model后面补一个value来表明类型&#xff0c;但这也是默认类型&#xff0c;并不是指定类型默认是 (property) value?: string | number | undefined 字符&#xff0c;…...

zblog插件大全-zblog免费插件

在当今数字化时代&#xff0c;拥有一个精彩的博客或网站已经成为许多人追求的目标。通过博客&#xff0c;我们可以分享知识、表达观点&#xff0c;甚至创造收入。然而&#xff0c;维持一个充满新鲜内容的博客却不是一件容易的事情。 ZBlog自动采集插件 什么是ZBlog自动采集插件…...

思科、华为、华三、锐捷网络设备巡检命令

下面为四种设备巡检命令&#xff0c;以便日常查阅&#xff1a; 华三 screen-length disable 取消分页 displayversion 查看版本 display clock 查看日期时钟 display fan 查看风扇状态 display power 查看电源信息 display cpu-usage 查看CPU利用率 display memory 查看…...

正则表达式贪婪模式和非贪婪模式

一、贪婪模式 贪婪模式表示尽可能多的匹配字符串&#xff0c;正则表达式六个量词元字符?、、*、{n}、{n,m}、{n,}默认是贪婪模式 接下来引入一个场景来分析说明 获取html a标签href属性的值 <a href"https://www.baidu.com/" attr"abc"></a>…...

借助 ControlNet 生成艺术二维码 – 基于 Stable Diffusion 的 AI 绘画方案

背景介绍 在过去的数月中&#xff0c;亚马逊云科技已经推出了多篇博文&#xff0c;来介绍如何在亚马逊云科技上部署 Stable Diffusion&#xff0c;或是如何结合 Amazon SageMaker 与 Stable Diffusion 进行模型训练和推理任务。 为了帮助客户快速、安全地在亚马逊云科技上构建、…...

Codeforces Round 892 (Div. 2) - E. Maximum Monogonosity 思维dp 详细解析

题目链接 好久没有写题了复健一下qwq 题目大意 解题思路 这题目还挺妙的 首先考虑比较正常的dp&#xff0c; d p [ i ] [ j ] dp[i][j] dp[i][j] 为前 i i i的长度选 j j j个长度的最大价值&#xff0c;那么转移方程是&#xff1a; 图片来自&#xff1a;图片来源 但是这个是 …...

R语言中的数据重塑

文章目录 介绍reshape2::melt()的用法实例 reshape2::dcast()的用法实例 tidyr::gather()的用法tidyr::spread()的用法 介绍 tidyverse系列包中的函数操作都是针对简洁数据框进行的&#xff0c;对于不是简洁的数据&#xff0c;实现需要进行数据重塑。数据重塑主要包括长宽表的…...

基于Java实现的社区团购系统设计与实现(源码+lw+部署文档+讲解等)

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

nodejs+vue网上婚纱购物系统elementui

便了用户足不出门也能进行购物的理念&#xff0c;方便了婚纱影楼的对商品的进一步管理,互联网成为人们快速获取、发布、和传递信息的重要渠道&#xff0c;它在人们政治、经济、生活等各个方面发挥着重要的作用。未来的时代是网络信息的时代&#xff0c;“网上生活方式”是人类今…...

如何自己做资源类网站/百度seo优化推广公司

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2020年T电梯修理考试及T电梯修理操作证考试&#xff0c;包含T电梯修理考试答案和解析及T电梯修理操作证考试练习。由安全生产模拟考试一点通公众号结合国家T电梯修理考试最新大纲及T电梯修理考试真题汇总&#xff0c;…...

wordpress主题配置文件/快速刷排名seo软件

centos7和centos6通过yum安装JDK1.8 查看JDK的安装路径# java -version查看Linux系统版本信息# cat /etc/redhat-releaseCentOS release 6.9 (Final)[rootli409-225 ~]# cat /etc/issueCentOS release 6.9 (Final)Kernel \r on an \mcentos6或centos7都可用的 yum安装jdk安装之…...

请人做彩票网站多少钱/网络营销环境

http://blog.orange11.nl/2009/09/17/exploring-the-world-of-android-part-2/...

企业做网站有发展么/中文搜索引擎有哪些平台

SQL Server数据库镜像的页面自动修复原理 主库页面损坏 镜像库页面损坏 LSN用来保证事务的时序 LSN保存在每个数据页面的页头 在同一台机器&#xff0c;内存中的数据页和磁盘中的数据页保持同步依靠的是数据页头的LSN和事务日志LDF文件里的LSN 当跨机器的时候&#xff0c;内存中…...

沈阳网站建站公司/环球网

Windows10上安装了 kafka 和 zookeeper &#xff0c;用于日常开发。 以前用就没有什么问题&#xff0c;今天连接的时候&#xff0c;kafka启动就闪退&#xff0c;zookeeper 上还输出了一行信息 远程主机强迫关闭了一个现有的连接 估计是先前用的时候&#xff0c;异常关闭导致…...

wordpress按分类显示图片/乔拓云智能建站系统

网站在被用户访问或被搜索引擎的蜘蛛抓取时&#xff0c;都会把访问地址&#xff0c;访问的IP等信息记录到网站日志中去。我们可以通过分析网站日志来对网站做出合适的优化方案。一些服务器的控制面板都会提供网站日志的分析功能&#xff0c;但如果日志文件较大&#xff0c;为了…...