20145319 《网络渗透》MS08_067安全漏洞
一 实验内容
- 了解掌握metasploit平台的一些基本操作,能学会利用已知信息完成简单的渗透操作
- 了解漏洞MS08_067的相关知识
- 安全公告:KB958644
- 时间:2008年底
- 原理:攻击者利用受害者主机默认开放的SMB服务端口445,发送特殊RPC请求,通过MSRPC接口调用serve服务函数
NetPathCanonicalize函数
对进行远程访问的路径规范化,而此函数中存在栈缓冲区内存漏洞,可被利用实施远程代码执行 - 详细原理说明:在规范化路径操作中,就是将路径字符串中'/'置换成''以及出去相对路径(例如:'\.'),而服务程序在这部分的地址空间检查存在逻辑漏洞,攻击者可以在函数除去“\..”字符串时,将路径字符串中的内容复制到路径串之前的地址空间中,覆盖掉返回地址执行shellcode(原理类似我们之前所做的缓冲区溢出攻击)
- 受影响的操作系统:windows 2000/xp/server 2003/server 2008/vista/7 Beta
- 影响:能远程主动发起对漏洞主机端口的扫描,并且能直接获得漏洞主机的系统权限,属于最高严重级别的漏洞
- 本次实验渗透对象: Windows 2003 SP3
二 实验步骤
- 进入控制台之后,首先,我们可以使用
search命令
搜寻一下有关于漏洞MS08_067的相关信息 - 得到相应模块名之后,我们使用该模块,使用
show payloads命令
确定我们需要的攻击载荷 - 阅读每一个payload的功能描述,选择自己需要的payload,这里我选择
generic/shell_reverse_tcp
来获取漏洞主机的shell(选择我们之前用的windows/meterpreter/reverse_tcp
也是可以的,只是步骤和最后效果可能有些许不同) -
set payload generic/shell_reverse_tcp
选择payload,并查看相关信息 - 按照上述信息,我们需要设置好监听ip,监听端口以及攻击Ip(这里需要利用RPC请求发起攻击,所以RPORT设置为445不需要修改)
- 我们可以通过修改target的值,来选择我们具体想要攻击的计算机系统(通常可以采用自动选取,即target设置为0)
- 设置完成后,使用
exploit命令
发起渗透攻击,结果如下
三 问题
- 很多同学看了上述步骤也许早就开始动手实践起来,感觉自己像电影里的黑客高手一样,流畅而优雅的对目标主机进行攻击,输入
exploit命令
成功的界面似乎下一秒就要跳出来,但是你却遇到了一些意料之外的事情 - 可能是它
- 或者是它
- 什么,这和说好的不一样!!不要心急,我们可以从错误信息来慢慢分析
- 首先第一种情况,错误报告为
connectionRefused
我们的连接被拒绝了,第一时间我们可以对目标机进行ping命令尝试,发现可以ping通,这时候我们就要慢慢从渗透工作的开始重新来过 - 第一步,我们要先搜集关于目标机的信息,我们可以使用Nmap来探测有关于目标机的端口以及其他信息
- 我们找到了真正原因,目标的445端口是关闭的
- 这时候我们可以通过目标机的计算机管理中,启动server服务,将445端口打开
- 或者打开注册表管理,依次点击注册表选项
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\NetBT\Parameters
,进入NetBT这个服务,将SMBDeviceEnabled值
修改 - 之后有了上面的经验我们来分析第二个错误,同样我们依照上述思路对目标机进行收集,此外这里就不得不提nmap的强大功能,这次我们将使用到nmap的script模块,脚本功能,我们使用的vuln脚本将会扫描目标机存在的漏洞
- 我们注意到HOST SCRIPT RESULT块的信息,发现其中并没有我们想要的结果MS08_067
- 这时候我们可以在目标主机中输入
systeminfo命令
看到第123条,KB958644,正是漏洞MS08_067的安全公告编号(看来刘老师拷给我们的靶机实在是固若金汤,居然早已经下好了补丁),我们已经找到原因了,目标主机居然是安全的!!这时我们只有选择将这个补丁卸载(貌似会导致其他服务也无法启动),可是我们已经学到了如何利用MS08_067漏洞进行渗透的思路和手法,不如青山不改绿水长流,去渗透其他具有漏洞的主机吧
四 其他
- 这次ms08_067漏洞渗透的原理其实是与我们之前的缓冲区溢出攻击类似的,因此也受到数据执行保护,和地址随机化的影响,但是我们现在的计算机操作系统多半都有DEP机制(数据执行保护),所以实验不成功的伙伴们可以考虑关闭掉这个机制
- xp系统下,找到系统文件boot.ini修改最后一行将
/noexecute=optin
为/execute