毕业论文

当前位置: 毕业论文 > 范文 >

MS08-067漏洞原理及利用方法MS08-067(2)

时间:2020-09-27 16:02来源:优尔论文
C:\Windows\System32\svchost.exe-k netsvcs 用IDA pro打开netapi32.dll,找到漏洞所在的NetpwPathCanonicalize函(每次运行堆栈中的地址会不同,但各函数的地址一样),如图

 

C:\Windows\System32\svchost.exe-k netsvcs

用IDA pro打开netapi32.dll,找到漏洞所在的NetpwPathCanonicalize函(每次运行堆栈中的地址会不同,但各函数的地址一样),如图在书中提到:

 

查看该函数流程图,可以看到,此函数并没有直接进行输入路径的规范化, 而是继续调用了下级函数CanonicalizePathName

 

然而在实际操作中并没有发现CanonicalizePathName这个函数,并且多种资料表明应当是调用CanonPathName函数进行规范化。

 

IDA分析NetpwPathCanonicalize函数代码(F5 + 整理 + 主要代码):

 

该函数声明如下:

 

DWORD NetpwPathCanonicalize(

    LPWSTR PathName, //需要标准化的路径

    LPWSTR Outbuf, //存储标准化后的路径的Buffer

    DWORD OutbufLen, //Buffer长度

    LPWSTR Prefix, //可选参数,当PathName是相对路径时有用

    LPDWORD PathType, //存储路径类型

    DWORD Flags // 保留,为0

 )

动态调试

通过wmic查看命令行参数为svchost.exe -k netsvcs的进程pid:

打开OllyDbg,点击file->attach,附着到svchost.exe进程上:

View->Executable modules双击netapi32,在cpu指令窗口右键选Search for查找exec(label) in current module,找到函数NetpwPathCanonicalize,地址为71C44A3E,在此处设下断点:

追踪漏洞触发过程

回到CPU指令窗口运行程序,然后攻击机Metasploit加载ms08_067_netapi模块并exploit:

NetpwPathCanonicalize中断

分析环境中的svchost程序会中断在NetpwPathCanonicalize函数的入口地址处。该函数的传入参数如下所示:

esp            [esp]        * 注释 *

00ECF924    02248D34    ;指向待整理路径

00ECF928    022321D8    ;指向输出路径buffer

00ECF92C    000003F1    ;输出buffer的长度

00ECF930    02248FB0    ;指向prefix,值为 \x5C\x00 ,即unicode ‘\’

00ECF934    02248FB4    ;指向路径类型,值为 0x1001

00ECF938    00000000    ;WORD Flags保留,值为0

CanonicalizePathName中断

结合IDA pro对NetpwPathCanonicalize的流程分析,在地址处将调用下一级函数CanonPathName,在此地址设下断点:

 

运行到此断点,然后跟踪函数CanonPathName,传入参数如下所示:

 

00F0F8FC    00157570    ;指向prefix,值为\x5C\00,即Unicode"\"

00F0F900    001572F4    ;指向待整理路径

00F0F904    02132E80    ;指向输出路径的buffer

00F0F908    000003F9    ;输出buffer的长度

00F0F90C    00000000    ;WORD Flag保留字,值为0

从上两个函数的参数传递可以看出,函数CanonPathName进行路径整理,然后再保存到预先分配的输出路径缓冲区buffer中。

 

待整理路径结构

在OD中查看待整理路径的结构,路径是Unicode字符串,以【\x5C\x00】(Unicode字符“\”)开始,【\x00\x00】结束,中间包含一些随机的大小写字母,较长一段不可显示的字符是经过编码的Shellcode,其中最关键的是两个连在一起的父目录相对路径【....\】。

 

整个待整理路径形如:

 

\******\..\..\***

整理路径前的预操作

MS08-067漏洞原理及利用方法MS08-067(2):http://www.youerw.com/fanwen/lunwen_61930.html
------分隔线----------------------------
推荐内容