菜单
  

     

    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,其中最关键的是两个连在一起的父目录相对路径【....\】。

     

    整个待整理路径形如:

     

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

    整理路径前的预操作

  1. 上一篇:matlab griddata方法使用介绍
  2. 下一篇:回程路由是什么意思?什么时候需要回程路由
  1. cdn加速原理是什么

  2. PLC启闭机液压系统设计及其故障诊断

  3. 上市公司债务税盾文献综述和参考文献

  4. 友谊质量调查问卷表

  5. MATLAB动车组列车牵引变流...

  6. 跨国企业全球营销策略的市场定位调查

  7. 淮安乐天玛特连锁超市4P营销策略分析

  8. PLC焊机电气控制系统设计开题报告

  9. Bootstrap的OpenGL人体模型仿真

  10. 多智能体系统一致性问题研究

  11. 小学课堂教学效率国内外研究现状和参考文献

  

About

751论文网手机版...

主页:http://www.751com.cn

关闭返回