MS08-067的稳定利用方法

MS08-067已经出来三个月了,大部分服务器已经打上了补丁,看来利用价值不大。但是做为一个学习的材料还是挺好的。

这个漏洞的原理在很多文章中都解释的非常详细了,但是关于漏洞利用的文章却比较少(可能是我没找到),我自己摸索了一整子,参考了不少高手们写的exploit,终于摸索出一个还算稳定的利用方法,将摸索的过程整理成本文。


如果您发现有什么不足之处,或者有更好的方法,请联系我:

LittleWallE#yahoo.cn.(#替换为@)

或者在博客上留言:http://blog.csdn.net/littlewalle

交流才能进步,很高兴能成为你的朋友。

 

1.   概述


MS08-067的问题出在一个格式化路径的函数上,暂命名为ConvertPathMacros,它的工作就是去掉路径中的./../ 例如传入路径为:”/A/B/./C/../D/../../E”,则经过它的处理后会变成”/A/E”。如果给出一个恶意路径,例如”/A/../../../E”,则它会越过目录A去寻找上层目录,从而造成错误的发生。


2.   目标

根据分析,知道了稳定利用的关键是反斜杠的位置,所以目标就是能在栈上找一个相对固定的位置写入一个反斜杠。而且为了保证溢出,反斜杠的位置还必须在发生溢出时esp位置之上。

为了达到这个目标,有两个方法:

1.                  看看调用NetpwPathCanonicalize函数时,参数能否影响到栈上数据。有可能很长的参数能够在ConvertPathMacros函数之前在栈上写下数据。

2.                  调用另一个RPC函数,在栈上留下一大堆数据后再调用NetpwPathCanonicalize函数,这样找到反斜杠的概率较大。

 

第一种方法经过测试发现行不通,ConvertPathMacros函数在调用堆栈的最顶端,其他函数没有机会向栈顶写数据。

而第二种方法也需要经过测试才能验证是否可行,以另一个流行的RPC函数NetpwNameCompare函数为例(其实也不流行,是参考了一位高手的exploit,他的邮箱是EMM@ph4nt0m.org),进行下面的实践。

 

3.   实践

1.      准备工作

在虚拟机上安装了windows2003 sp0 中文版, 本机上操作系统是windows xp sp2 英文版。在本机上写好客户端,客户端功能是先后调用虚拟机上的RPC函数NetpwNameCompareNetpwPathCanonicalize。在服务端装上OLLYDBG, Process Explorer

启动虚拟机,启动完毕后,建立一个快照(snapshot),便于以后问题重现,也避免调试过程中系统崩溃。

 

2.      验证想法

首先得看看NetpwNameCompare函数能否在栈上留下足够的数据供使用。不能的话就换函数。操作如下:

1.       开启Process Explorer,找到提供Computer Browser服务的进程(svchost),记下进程号,在OLLYDBG中附加,如图:


2.       在下面几个关键函数的入口,返回地址处加断点。
NetpwNameCompare
NetpwPathCanonicalize
ConvertPathMacros ( 7C 941084)
断点设置完毕后,按F9,让svchost进程继续运行。

3.       使用客户端调用虚拟机上的服务:
NetpwNameCompare(L"LittleWallE",L"123456789",L"123456789",4,0);
NetpwPathCanonicalize(arg_0,(unsigned short *)arg1,(unsigned char *)arg2,
arg3,arg4,(long *)Buff3,1); //
暂时使用正常参数
可以看到svchost进程断在了NetpwNameCompare函数入口,记录下当时esp的值。按F9继续运行,断在NetpwPathCanonicalize函数入口时,同样记录下esp的值,依此类推,有下面的记录:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值