-
-
[原创]WinServer2003 sp2中文版ms08067漏洞metasploit利用方法
-
发表于:
2014-4-18 21:16
14464
-
[原创]WinServer2003 sp2中文版ms08067漏洞metasploit利用方法
在分析前先上结果吧,在metasploit中使用(新手,学习渗透1个月,才疏学浅,大牛勿见笑,只是一直未找到这个渗透方法,才自己做的。这件事本身含金量可能不多,但过程供大家借鉴吧):
[ 'Windows 2003 SP2 Chinese (NX)',
{
'RetDec' => 0x7c99beb8, # dec ESI, ret @NTDLL.DLL (0x4EC3)
'RetPop' => 0x7cb5e84e, # push ESI, pop EBP, ret @SHELL32.DLL(0x565DC3)
'JmpESP' => 0x7c99a01b, # jmp ESP @NTDLL.DLL(0xFFE4)
'DisableNX' => 0x7c96f517, # NX disable @NTDLL.DLL
'Scratch' => 0x00020408,
}
],
具体方法如下(不好意思,上图太难,需要看图的请下载附件):
利用该漏洞最为关键是针对启动了DEP的计算机如何关闭DEP。经过十天左右认真学习(主要是学习《0day安全软件漏洞分析技术》中12.3节的内容),并结合自己的突然开窍,终于将针对Windows Server 2003 SP2中文版的攻击调转指针找到了。
打开Kali Linux中opt/metasploit/msf3/modules/exploits/windows/smb目录,找到ms08_067_netapi.rb文件,将其打开。可发现针对Windows Server 2003 SP2 English NX版本的攻击代码如下:
# Brett Moore's crafty NX bypass for 2003 SP2
[ 'Windows 2003 SP2 English (NX)',
{
'RetDec' => 0x7c86beb8, # dec ESI, ret @NTDLL.DLL
'RetPop' => 0x7ca1e84e, # push ESI, pop EBP, ret @SHELL32.DLL
'JmpESP' => 0x7c86a01b, # jmp ESP @NTDLL.DLL
'DisableNX' => 0x7c83f517, # NX disable @NTDLL.DLL
'Scratch' => 0x00020408,
}
],
根据其结构,为实现中文版的攻击,需要找到前四个跳转指针地址。寻找方法如下:
1) 首先依照rb文件中的提示信息“# dec ESI, ret @NTDLL.DLL”,将dec ESI, ret翻译成二进制机器码。翻译方法有两种:
a) 利用ollydbg,随便打开一个PE文件,在界面中的汇编代码窗口中点击鼠标右键,选择“汇编”(会直接点击空格键)。在出现的窗口中输入“dec ESI”,之后点击“汇编”,此时该汇编语言将出现在汇编窗口,相应的二进制代码将出现在左侧。在完成dec ESI的汇编后,再进行ret的汇编。将两者组合在一起即得到完整汇编;
b) 利用Metasploit中的nasm_shell.rb工具:在kali linux中输入:
cd /opt/metasploit/msf3/tools/
之后再输入:./nasm_shell.rb运行nasm_shell工具。在出现的命令提示框中输入响应的汇编代码即可得到响应的二进制机器码。
2) 在ollydbg中安装插件“ollyfindaddr”。该插件从网上可搜到,下载后将.dll文件拷贝至ollydbg响应目录中的plugin目录下即可。
之后运行其中的Custom_search命令,将得到的汇编代码输入至命令框中,点击确定。之后即可在log显示框中查看到查找到的响应的地址,如图1所示(点击红圈中的“L”即可打开log界面)。
图1
找到的地址如图2所示:
图2
可以看到,反亮显示的一行即为找到的在ntdll.dll中的“4EC3”(dec ESI, ret)地址。其实还有部分其它地址可用,如kernel32.dll中的地址,但保险起见,在这里我选择了与metasploit中注释中的ntdll.dll中的地址。
3) jmp ESP可通过同样的方法进行查找;
4) push ESI, pop EBP, ret地址得查找需要最好也出现在shell32.dll中,而如果使用上述的方法是搜索不到shell32.dll中的地址,可能是因为该动态库尚未加载。因此可以采用先编写一个小PE程序,其中包含加载shell32.dll的指令,等其加载后再搜索。这样的程序可以参见大牛《0day安全软件漏洞分析技术》中12.3章节中的程序(这是本好书,如果对这领域该兴趣,建议认真阅读实践)。
5) NX disable的查找需要费点周折,按照《0day》中的方法直接使用ollyfindaddr插件进行搜索,可以找到部分地址,如图3所示。虽然搜到了这些地址,但其实这些地址都不是正确地址(原因我不清楚,不知是自己才疏学浅未能理解ollyfindaddr的结果,还是其确实有问题,但找到的结果无法正确使用)。
为了能够找打改地址,我选择了一个“笨”的方法,首先安装英文版win server2003 SP2版本,之后在其上安装ollydbg,并查找ms08_067_netapi.rb中给出的NX disable地址:0x7c83f517,得到的结果如图4所示。从图中可以看到《0day》中提到关闭DEP的熟悉的语句:“call ntdll.ZwSetInformationProcess”,看来是对了(其实是对的,可通过metasploit在英文版上进行ms08067渗透成功)。
图3
图4
接下来将前几行汇编语言的二进制代码“c745fc020000006a04”作为关键字段,用ollydbg在windows server 2003 SP2中文版中进行搜索,很不错,能搜到一条结果,如图5所示。
图5
6) 最后一个地址'Scratch' => 0x00020408应该不用更改了。这一点通过查看ms08_067_netapi.rb文件,发现所有系统下该指令均不变,可知该指令不变(有点不求甚解 ,接下来需要仔细研究)。
7) 接下来进行尝试了。在ms08_067_netapi.rb将下面一段添加进去:
[ 'Windows 2003 SP2 Chinese (NX)',
{
'RetDec' => 0x7c99beb8, # dec ESI, ret @NTDLL.DLL (0x4EC3)
RetPop' => 0x7cb5e84e, # push ESI, pop EBP, ret @SHELL32.DLL(0x565DC3)
'JmpESP' => 0x7c99a01b, # jmp ESP @NTDLL.DLL(0xFFE4)
'DisableNX' => 0x7c96f517, # NX disable @NTDLL.DLL
'Scratch' => 0x00020408,
}
],
之后运行metasploit,加载该攻击模块,再载入payload后,对sp2中文版进行攻击,攻击成功。
楼主改的这个攻击代码貌似不行啊!
如果设置的的时候 target 选择 Automatic Targeting,exploit会提示lang:unknown
有图有真相
然后写入楼主提供的代码, reload 以后会多出一个 target,然后选择之
可是exploit以后又提示错误,有图有真相
再发个我目标系统的版本
最后提醒一下,楼主发的代码有错误,RetPop前面少个" ' ".
PS:发图不难,图片上传到新浪图床,在插图中粘帖图片地址即可发图
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课